diff --git a/web/themes/custom/quartiers_de_demain/dist/assets/bundle.js b/web/themes/custom/quartiers_de_demain/dist/assets/bundle.js index 22bb43d..9b53e22 100644 --- a/web/themes/custom/quartiers_de_demain/dist/assets/bundle.js +++ b/web/themes/custom/quartiers_de_demain/dist/assets/bundle.js @@ -36,7 +36,7 @@ eval("document.addEventListener('scroll', function() {\n const scrolled = win \**********************************************/ /***/ (function() { -eval("/**\n * @file\n * quartiers_de_demain behaviors.\n */\n (function (Drupal) {\n\n 'use strict';\n \n Drupal.behaviors.quartiers_de_demain = {\n attach: function (context, settings) {\n console.log('It works!');\n }\n };\n } (Drupal));\n\n \n // jQuery(document).ready(function($){\n\n // $('.open-block').click(function(){\n // $(this).toggleClass('opened');\n\n // $('.header_nav_container').toggleClass('display-nav-opened');\n \n // if(mobile == true){\n // $(\"body\").css(\"overflow\",\"hidden\");\n // }\n\n // });\n \n // // Hide the header_nav_container when a link inside it is clicked\n // $('.header_nav_container li').click(function() {\n // $('.header_nav_container').fadeOut();\n // });\n\n\n\n\n // });\n\n //////// start header ////////////\n document.addEventListener('DOMContentLoaded', function() {\n\n const header = document.querySelector('header');\n const logo = document.querySelector('#block-quartiers-de-demain-logoquartiersdedemain > div:nth-child(1) > div:nth-child(1) > a:nth-child(1) > svg:nth-child(1)');\n const headerNavContainer = document.querySelector('.header_nav_container');\n const isFirstLoad = !performance.getEntriesByType(\"navigation\")[0].type.includes('back_forward');\n const isTargetPath = window.location.pathname === '/';\n\n // Fonction pour démarrer l'animation du logo SVG\n function startLogoAnimation() {\n logo.classList.add('animated');\n }\n \n // Fonction pour arrêter l'animation du logo SVG\n function stopLogoAnimation() {\n logo.classList.remove('animated');\n }\n \n // Vérifier si le header a la classe header--collapse\n function checkHeaderCollapse() {\n if (header.classList.contains('header--collapsed')) {\n stopLogoAnimation();\n } else if (header.classList.contains('header--collapsed-already')) {\n stopLogoAnimation();\n } else {\n startLogoAnimation();\n }\n\n }\n \n // Appeler la fonction au chargement initial\n checkHeaderCollapse();\n \n // Observer les changements de classe sur le header\n const observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(mutation) {\n if (mutation.attributeName === 'class') {\n checkHeaderCollapse();\n }\n });\n });\n observer.observe(header, { attributes: true });\n \n\n // Si ce n'est pas la première charge ou si le chemin n'est pas le chemin cible, ajouter la classe immédiatement\n if (!isFirstLoad || !isTargetPath) {\n header.classList.add('header--collapsed-already');\n // logo.classList.remove('animated');\n stopLogoAnimation();\n } else {\n // Sinon, appliquer la transition après un délai\n setTimeout(() => {\n header.classList.add('header--collapsed');\n }, 5000);\n }\n\n ////////////// \n\n let lastScrollTop = 0;\n let threshold = 100; // Change this value as needed\n let isHidden = false;\n \n function slideOut() {\n headerNavContainer.animate([\n { transform: 'translateX(0)' },\n { transform: 'translateX(-100%)' }\n ], {\n duration: 300,\n fill: 'forwards'\n });\n isHidden = true;\n }\n \n function slideIn() {\n headerNavContainer.animate([\n { transform: 'translateX(-100%)' },\n { transform: 'translateX(0)' }\n ], {\n duration: 300,\n fill: 'forwards'\n });\n isHidden = false;\n }\n \n function slideDown() {\n // headerNavContainer.style.display = 'block';\n headerNavContainer.animate([\n { transform: 'translateY(0%)' },\n { transform: 'translateY(+100%)' }\n ], {\n duration: 300,\n fill: 'forwards'\n });\n isHidden = false;\n }\n \n function slideUp() {\n headerNavContainer.animate([\n { transform: 'translateY(100%)' },\n { transform: 'translateY(0%)' }\n ], {\n duration: 300,\n fill: 'forwards'\n }).onfinish = function() {\n // headerNavContainer.style.display = 'none';\n };\n isHidden = true;\n }\n // Fonction pour ajuster la hauteur du header lors du défilement\n function adjustHeaderHeight() {\n if (window.scrollY > 0) {\n header.classList.add('shrink');\n } else {\n header.classList.remove('shrink');\n }\n }\n\n function handleScroll() {\n let scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n const isMobile = window.innerWidth < 811;\n\n if (scrollTop > threshold && !isHidden) {\n if (isMobile) {\n slideUp();\n } else {\n slideOut();\n }\n } else if (scrollTop <= threshold && isHidden) {\n if (isMobile) {\n slideDown();\n } else {\n slideIn();\n }\n }\n \n \n lastScrollTop = scrollTop <= 0 ? 0 : scrollTop; // For Mobile or negative scrolling\n }\n \n function handleTouchAndMouseEnter() {\n if (isHidden) {\n if (window.innerWidth < 811) {\n slideDown();\n } else {\n slideIn();\n }\n }\n }\n \n function handleTouchAndMouseLeave() {\n if (lastScrollTop > threshold && !isHidden) {\n if (window.innerWidth < 811) {\n slideUp();\n } else {\n slideOut();\n }\n }\n }\n \n window.addEventListener('scroll', handleScroll);\n window.addEventListener('scroll', adjustHeaderHeight);\n \n // Mouse events for desktop\n header.addEventListener('mouseenter', handleTouchAndMouseEnter);\n header.addEventListener('mouseleave', handleTouchAndMouseLeave);\n \n // Touch events for tablets and mobile devices\n header.addEventListener('touchstart', handleTouchAndMouseEnter);\n header.addEventListener('touchend', handleTouchAndMouseLeave);\n \n // Initial check to see if we're at the top of the page\n if (window.pageYOffset <= threshold) {\n if (window.innerWidth < 811) {\n slideDown();\n } else { \n slideIn();\n } \n } else {\n if (window.innerWidth < 811) {\n slideUp();\n } else {\n slideIn();\n }\n }\n \n });\n\n //////// end header ////////////\n \n\n\n//// ancre dans texte au click parragraphe correspondant arrive en dessous du header \n\n\n(function($, window) {\n var adjustAnchor = function() {\n var $anchor = $('.sidebar_first_container'),\n fixedElementHeight = 500;\n if ($anchor.length > 0) {\n $('html, body').stop().animate({scrollTop: $anchor.offset().top - fixedElementHeight }, 0);\n }\n };\n\n $(window).on('hashchange', function() {\n adjustAnchor();\n });\n\n\n //////////////////////// start script smooth apparition des textes /////////////////\n\n function scrollReaveal(){\n\n const nodes = {\n logo : document.querySelectorAll('#logo-animated-container'),\n chapeau : document.querySelectorAll('.field_body'),\n paragraph: document.querySelectorAll('.field_field_textes .paragraph--type--static-parts'),\n enjeux : document.querySelectorAll('.field_field_textes .paragraph--type--static-parts .enjeux'),\n }\n\n const showUp = {\n origin: 'bottom',\n delay: 100,\n duration: 1000,\n distance: '50px',\n easing: 'cubic-bezier(0.5, 0, 0, 1)'\n }\n\n const Show = {\n delay: 100,\n duration: 600,\n easing: 'cubic-bezier(0.5, 0, 0, 1)'\n }\n\n console.log(nodes);\n\n ScrollReveal().reveal(nodes.logo, Show);\n ScrollReveal().reveal(nodes.chapeau, showUp);\n ScrollReveal().reveal(nodes.paragraph, showUp);\n ScrollReveal().reveal(nodes.enjeux, showUp);\n }\n\n\n $( document ).ready(function() {\n scrollReaveal();\n });\n\n //////////////////////// end script smooth apparition des textes /////////////////\n\n //////////////////// start Timeline script ///////////////////////\n\n\n document.addEventListener('DOMContentLoaded', function() {\n let currentSlide = 0;\n\n //// responsive ///\n function getVisibleSlides() {\n if (window.innerWidth <= 600) {\n return 1; // Show 1 slide on small screens\n } else if (window.innerWidth <= 900) {\n return 2; // Show 2 slides on medium screens\n } else {\n return 3; // Show 3 slides on large screens\n }\n }\n\n function showSlides(index) {\n const slides = document.querySelectorAll('.__paragraphs');\n const totalSlides = slides.length;\n const visibleSlides = getVisibleSlides();\n const maxSlide = totalSlides - visibleSlides;\n\n // Adjust the index to ensure it stays within bounds\n currentSlide = Math.max(0, Math.min(index, maxSlide));\n\n // Calculate the offset for the transform\n const offset = currentSlide * -50 / visibleSlides;\n const offsetmobile = currentSlide * -10 / visibleSlides;\n if (window.innerWidth <= 600){\n document.querySelector('.__timeline-content').style.transform = `translateX(${offsetmobile}%)`;\n } else {\n document.querySelector('.__timeline-content').style.transform = `translateX(${offset}%)`;\n }\n \n\n // Enable/disable arrows based on the current slide\n document.getElementById('arrowPrev').disabled = currentSlide === 0;\n document.getElementById('arrowNext').disabled = currentSlide === maxSlide;\n }\n\n function prevSlide() {\n showSlides(currentSlide - 1);\n }\n\n function nextSlide() {\n showSlides(currentSlide + 1);\n }\n\n // Attach event listeners\n document.getElementById('arrowPrev').addEventListener('click', prevSlide);\n document.getElementById('arrowNext').addEventListener('click', nextSlide);\n\n // Update month field to only show the first 3 letters\n document.querySelectorAll('.paragraph--type--phase-deroulement').forEach(function(paragraph) {\n const monthField = paragraph.querySelector('.field_field_date_de_moi div:nth-of-type(2)');\n if (monthField) {\n const monthText = monthField.textContent.trim();\n if (monthText === \"juillet\") {\n monthField.textContent = monthText.slice(0, 4);\n monthField.classList.add('after');\n } else if (monthText === \"juin\") {\n monthField.textContent = monthText.slice(0, 4);\n } else if (monthText.length > 3) {\n monthField.textContent = monthText.slice(0, 3);\n monthField.classList.add('after');\n }\n }\n });\n\n// Fonction pour ajouter ou retirer la classe .only\nfunction updateDateClasses() {\n document.querySelectorAll('.paragraph--type--phase-deroulement .date').forEach(function(dateElement) {\n const date2Element = dateElement.querySelector('.date2');\n const yearElement = dateElement.querySelector('.field_field_date_de_annee');\n\n if (date2Element && !date2Element.textContent.trim()) {\n if (yearElement) {\n yearElement.classList.add('only');\n }\n } else {\n if (yearElement) {\n yearElement.classList.remove('only');\n }\n }\n });\n}\n\n// Exécuter la fonction une première fois pour le contenu déjà présent\nupdateDateClasses();\n\n// MutationObserver pour surveiller les changements dans le DOM\nconst observer = new MutationObserver(function(mutationsList, observer) {\n for(let mutation of mutationsList) {\n if (mutation.type === 'childList') {\n updateDateClasses();\n }\n }\n});\n\n// Configuration de l'observateur\nconst config = { childList: true, subtree: true };\n\n// Démarrer l'observateur sur le document entier ou sur un conteneur spécifique\nobserver.observe(document.body, config);\n\n\n // Handle window resize\n window.addEventListener('resize', function() {\n showSlides(currentSlide); // Recalculate the slides on resize\n });\n // });\n\n\n // Initialize\n showSlides(currentSlide);\n });\n\n\n //////////////////////// end Timeline script /////////////////////////////////////////////\n\n /////////////////// caracteres body actus/////////////////////////\n\n document.addEventListener('DOMContentLoaded', function() {\n // Maximum number of characters to display\n const maxChars = 140; // Adjust this value as needed\n \n document.querySelectorAll('#actus-caroussel .node-type-actualite .field_body p').forEach(function(paragraph) {\n let text = paragraph.textContent.trim();\n if (text.length > maxChars) {\n let truncatedText = text.slice(0, maxChars) + '...';\n paragraph.textContent = truncatedText;\n }\n });\n });\n \n\n //////////// slideshow home ////////////////////////// \n\n $(document).ready(function(){\n $('.content-actus .view').slick({\n slidesToShow: 3,\n // slidesToScroll: 1,\n dots: false,\n arrows: true,\n centerMode: true,\n adaptiveHeight: true,\n autoplay: true,\n autoplaySpeed: 1500,\n infinite: true,\n // centerPadding: '100px',\n responsive: [\n {\n breakpoint: 810,\n settings: {\n slidesToShow: 1,\n adaptiveHeight: false,\n arrows: true,\n draggable: true,\n centerMode: true,\n autoplay: true,\n autoplaySpeed: 2000,\n }\n }]\n });\n console.log('salut slick home');\n\n });\n\n})(jQuery, window);\n\n\n\n\n//# sourceURL=webpack://quartiers_de_demain/./src/assets/js/quartiers_de_demain.js?"); +eval("/**\n * @file\n * quartiers_de_demain behaviors.\n */\n (function (Drupal) {\n\n 'use strict';\n \n Drupal.behaviors.quartiers_de_demain = {\n attach: function (context, settings) {\n console.log('It works!');\n }\n };\n } (Drupal));\n\n \n // jQuery(document).ready(function($){\n\n // $('.open-block').click(function(){\n // $(this).toggleClass('opened');\n\n // $('.header_nav_container').toggleClass('display-nav-opened');\n \n // if(mobile == true){\n // $(\"body\").css(\"overflow\",\"hidden\");\n // }\n\n // });\n \n // // Hide the header_nav_container when a link inside it is clicked\n // $('.header_nav_container li').click(function() {\n // $('.header_nav_container').fadeOut();\n // });\n\n\n\n\n // });\n\n //////// start header ////////////\n document.addEventListener('DOMContentLoaded', function() {\n\n const header = document.querySelector('header');\n const logo = document.querySelector('#block-quartiers-de-demain-logoquartiersdedemain > div:nth-child(1) > div:nth-child(1) > a:nth-child(1) > svg:nth-child(1)');\n const headerNavContainer = document.querySelector('.header_nav_container');\n const isFirstLoad = !performance.getEntriesByType(\"navigation\")[0].type.includes('back_forward');\n const isTargetPath = window.location.pathname === '/';\n\n // Fonction pour démarrer l'animation du logo SVG\n function startLogoAnimation() {\n logo.classList.add('animated');\n }\n \n // Fonction pour arrêter l'animation du logo SVG\n function stopLogoAnimation() {\n logo.classList.remove('animated');\n }\n \n // Vérifier si le header a la classe header--collapse\n function checkHeaderCollapse() {\n if (header.classList.contains('header--collapsed')) {\n stopLogoAnimation();\n } else if (header.classList.contains('header--collapsed-already')) {\n stopLogoAnimation();\n } else {\n startLogoAnimation();\n }\n\n }\n \n // Appeler la fonction au chargement initial\n checkHeaderCollapse();\n \n // Observer les changements de classe sur le header\n const observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(mutation) {\n if (mutation.attributeName === 'class') {\n checkHeaderCollapse();\n }\n });\n });\n observer.observe(header, { attributes: true });\n \n\n // Si ce n'est pas la première charge ou si le chemin n'est pas le chemin cible, ajouter la classe immédiatement\n if (!isFirstLoad || !isTargetPath) {\n header.classList.add('header--collapsed-already');\n // logo.classList.remove('animated');\n stopLogoAnimation();\n } else {\n // Sinon, appliquer la transition après un délai\n setTimeout(() => {\n header.classList.add('header--collapsed');\n }, 5000);\n }\n\n //////////////////////////////////////\n\n let lastScrollTop = 0;\n let threshold = 100; // Change this value as needed\n let isHidden = false;\n \n function slideOut() {\n headerNavContainer.animate([\n { transform: 'translateX(0)' },\n { transform: 'translateX(-100%)' }\n ], {\n duration: 300,\n fill: 'forwards'\n });\n isHidden = true;\n }\n \n function slideIn() {\n headerNavContainer.animate([\n { transform: 'translateX(-100%)' },\n { transform: 'translateX(0)' }\n ], {\n duration: 300,\n fill: 'forwards'\n });\n isHidden = false;\n }\n \n function slideDown() {\n // headerNavContainer.style.display = 'block';\n headerNavContainer.animate([\n { transform: 'translateY(0%)' },\n { transform: 'translateY(+100%)' }\n ], {\n duration: 300,\n fill: 'forwards'\n });\n isHidden = false;\n }\n \n function slideUp() {\n headerNavContainer.animate([\n { transform: 'translateY(100%)' },\n { transform: 'translateY(0%)' }\n ], {\n duration: 300,\n fill: 'forwards'\n }).onfinish = function() {\n // headerNavContainer.style.display = 'none';\n };\n isHidden = true;\n }\n // Fonction pour ajuster la hauteur du header lors du défilement\n function adjustHeaderHeight() {\n if (window.scrollY > 0) {\n header.classList.add('shrink');\n } else {\n header.classList.remove('shrink');\n }\n }\n\n function handleScroll() {\n let scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n const isMobile = window.innerWidth < 811;\n\n if (scrollTop > threshold && !isHidden) {\n if (isMobile) {\n slideUp();\n } else {\n slideOut();\n }\n } else if (scrollTop <= threshold && isHidden) {\n if (isMobile) {\n slideDown();\n } else {\n slideIn();\n }\n }\n \n \n lastScrollTop = scrollTop <= 0 ? 0 : scrollTop; // For Mobile or negative scrolling\n }\n \n function handleTouchAndMouseEnter() {\n if (isHidden) {\n if (window.innerWidth < 811) {\n slideDown();\n } else {\n slideIn();\n }\n }\n }\n \n function handleTouchAndMouseLeave() {\n if (lastScrollTop > threshold && !isHidden) {\n if (window.innerWidth < 811) {\n slideUp();\n } else {\n slideOut();\n }\n }\n }\n \n window.addEventListener('scroll', handleScroll);\n window.addEventListener('scroll', adjustHeaderHeight);\n \n // Mouse events for desktop\n header.addEventListener('mouseenter', handleTouchAndMouseEnter);\n header.addEventListener('mouseleave', handleTouchAndMouseLeave);\n \n // Touch events for tablets and mobile devices\n header.addEventListener('touchstart', handleTouchAndMouseEnter);\n header.addEventListener('touchend', handleTouchAndMouseLeave);\n \n // Initial check to see if we're at the top of the page\n if (window.pageYOffset <= threshold) {\n if (window.innerWidth < 811) {\n slideDown();\n } else { \n slideIn();\n } \n } else {\n if (window.innerWidth < 811) {\n slideUp();\n } else {\n slideIn();\n }\n }\n \n });\n\n //////// end header ////////////\n \n\n\n//// ancre dans texte au click parragraphe correspondant arrive en dessous du header \n\n\n(function($, window) {\n var adjustAnchor = function() {\n var $anchor = $('.sidebar_first_container'),\n fixedElementHeight = 500;\n if ($anchor.length > 0) {\n $('html, body').stop().animate({scrollTop: $anchor.offset().top - fixedElementHeight }, 0);\n }\n };\n\n $(window).on('hashchange', function() {\n adjustAnchor();\n });\n\n\n //////////////////////// start script smooth apparition des textes /////////////////\n\n function scrollReaveal(){\n\n const nodes = {\n logo : document.querySelectorAll('#logo-animated-container'),\n chapeau : document.querySelectorAll('.field_body'),\n paragraph: document.querySelectorAll('.field_field_textes .paragraph--type--static-parts'),\n enjeux : document.querySelectorAll('.field_field_textes .paragraph--type--static-parts .enjeux'),\n }\n\n const showUp = {\n origin: 'bottom',\n delay: 100,\n duration: 1000,\n distance: '50px',\n easing: 'cubic-bezier(0.5, 0, 0, 1)'\n }\n\n const Show = {\n delay: 100,\n duration: 600,\n easing: 'cubic-bezier(0.5, 0, 0, 1)'\n }\n\n console.log(nodes);\n\n ScrollReveal().reveal(nodes.logo, Show);\n ScrollReveal().reveal(nodes.chapeau, showUp);\n ScrollReveal().reveal(nodes.paragraph, showUp);\n ScrollReveal().reveal(nodes.enjeux, showUp);\n }\n\n\n $( document ).ready(function() {\n scrollReaveal();\n });\n\n //////////////////////// end script smooth apparition des textes /////////////////\n\n //////////////////// start Timeline script ///////////////////////\n\n\n document.addEventListener('DOMContentLoaded', function() {\n let currentSlide = 0;\n\n //// responsive ///\n function getVisibleSlides() {\n if (window.innerWidth <= 600) {\n return 1; // Show 1 slide on small screens\n } else if (window.innerWidth <= 900) {\n return 2; // Show 2 slides on medium screens\n } else {\n return 2; // Show 3 slides on large screens\n }\n }\n\n function showSlides(index) {\n const slides = document.querySelectorAll('.__paragraphs');\n const totalSlides = slides.length;\n const visibleSlides = getVisibleSlides();\n const maxSlide = totalSlides - visibleSlides;\n\n // Adjust the index to ensure it stays within bounds\n currentSlide = Math.max(0, Math.min(index, maxSlide));\n\n // Calculate the offset for the transform\n const offset = currentSlide * -50 / visibleSlides;\n const offsetmobile = currentSlide * -10 / visibleSlides;\n if (window.innerWidth <= 600){\n document.querySelector('.__timeline-content').style.transform = `translateX(${offsetmobile}%)`;\n } else {\n document.querySelector('.__timeline-content').style.transform = `translateX(${offset}%)`;\n }\n \n\n // Enable/disable arrows based on the current slide\n document.getElementById('arrowPrev').disabled = currentSlide === 0;\n document.getElementById('arrowNext').disabled = currentSlide === maxSlide;\n }\n\n function prevSlide() {\n showSlides(currentSlide - 1);\n }\n\n function nextSlide() {\n showSlides(currentSlide + 1);\n }\n\n // Attach event listeners\n document.getElementById('arrowPrev').addEventListener('click', prevSlide);\n document.getElementById('arrowNext').addEventListener('click', nextSlide);\n\n // Update month field to only show the first 3 letters\n document.querySelectorAll('.paragraph--type--phase-deroulement').forEach(function(paragraph) {\n const monthField = paragraph.querySelector('.field_field_date_de_moi div:nth-of-type(2)');\n if (monthField) {\n const monthText = monthField.textContent.trim();\n if (monthText === \"juillet\") {\n monthField.textContent = monthText.slice(0, 4);\n monthField.classList.add('after');\n } else if (monthText === \"juin\") {\n monthField.textContent = monthText.slice(0, 4);\n } else if (monthText.length > 3) {\n monthField.textContent = monthText.slice(0, 3);\n monthField.classList.add('after');\n }\n }\n });\n\n// Fonction pour ajouter ou retirer la classe .only\nfunction updateDateClasses() {\n document.querySelectorAll('.paragraph--type--phase-deroulement .date').forEach(function(dateElement) {\n const date2Element = dateElement.querySelector('.date2');\n const yearElement = dateElement.querySelector('.field_field_date_de_annee');\n\n if (date2Element && !date2Element.textContent.trim()) {\n if (yearElement) {\n yearElement.classList.add('only');\n }\n } else {\n if (yearElement) {\n yearElement.classList.remove('only');\n }\n }\n });\n}\n\n// Exécuter la fonction une première fois pour le contenu déjà présent\nupdateDateClasses();\n\n// MutationObserver pour surveiller les changements dans le DOM\nconst observer = new MutationObserver(function(mutationsList, observer) {\n for(let mutation of mutationsList) {\n if (mutation.type === 'childList') {\n updateDateClasses();\n }\n }\n});\n\n// Configuration de l'observateur\nconst config = { childList: true, subtree: true };\n\n// Démarrer l'observateur sur le document entier ou sur un conteneur spécifique\nobserver.observe(document.body, config);\n\n\n // Handle window resize\n window.addEventListener('resize', function() {\n showSlides(currentSlide); // Recalculate the slides on resize\n });\n // });\n\n\n // Initialize\n showSlides(currentSlide);\n });\n\n\n //////////////////////// end Timeline script /////////////////////////////////////////////\n\n /////////////////// caracteres body actus/////////////////////////\n\n document.addEventListener('DOMContentLoaded', function() {\n // Maximum number of characters to display\n const maxChars = 140; // Adjust this value as needed\n \n document.querySelectorAll('#actus-caroussel .node-type-actualite .field_body p').forEach(function(paragraph) {\n let text = paragraph.textContent.trim();\n if (text.length > maxChars) {\n let truncatedText = text.slice(0, maxChars) + '...';\n paragraph.textContent = truncatedText;\n }\n });\n });\n \n\n //////////// slideshow home ////////////////////////// \n\n $(document).ready(function(){\n $('.content-actus .view').slick({\n slidesToShow: 3,\n // slidesToScroll: 1,\n dots: false,\n arrows: true,\n centerMode: true,\n adaptiveHeight: true,\n autoplay: true,\n autoplaySpeed: 1500,\n infinite: true,\n // centerPadding: '100px',\n responsive: [\n {\n breakpoint: 810,\n settings: {\n slidesToShow: 1,\n adaptiveHeight: false,\n arrows: true,\n draggable: true,\n centerMode: true,\n autoplay: true,\n autoplaySpeed: 2000,\n }\n }]\n });\n console.log('salut slick home');\n\n });\n\n\n // $(document).ready(function(){\n // $('.config_pages--type--diaporama-home .field_field_images').slick({\n // slidesToShow: 3,\n // // slidesToScroll: 1,\n // dots: false,\n // arrows: false,\n // centerMode: true,\n // adaptiveHeight: true,\n // autoplay: true,\n // autoplaySpeed: 1500,\n // infinite: true,\n // // centerPadding: '100px',\n // responsive: [\n // {\n // breakpoint: 810,\n // settings: {\n // slidesToShow: 1,\n // adaptiveHeight: false,\n // arrows: true,\n // draggable: true,\n // centerMode: true,\n // autoplay: true,\n // autoplaySpeed: 2000,\n // }\n // }]\n // });\n // console.log('salut slick home');\n\n// });\n\n ////////////////////// start diaporama home swiper /////////////////////////////////\n \n $(document).ready(function () {\n //initialize swiper when document ready\n var mySwiper = new Swiper ('.swiper-container', {\n \n speed: 400,\n spaceBetween: 100,\n // Optional parameters\n autoplay: {\n delay: 3000,\n disableOnInteraction: false,\n },\n direction: 'horizontal',\n loop: true,\n\n // zoom: {\n // maxRatio: 5,\n // },\n \n // If we need pagination\n // pagination: {\n // el: '.swiper-pagination',\n // },\n \n // Navigation arrows\n // navigation: {\n // nextEl: '.swiper-button-next',\n // prevEl: '.swiper-button-prev',\n // },\n \n // And if we need scrollbar\n // scrollbar: {\n // el: '.swiper-scrollbar',\n // },\n })\n // swiper.autoplay();\n });\n \n ////////////////////// end diaporama home swiper /////////////////////////////////\n \n \n\n})(jQuery, window);\n\n\n\n\n//# sourceURL=webpack://quartiers_de_demain/./src/assets/js/quartiers_de_demain.js?"); /***/ }) diff --git a/web/themes/custom/quartiers_de_demain/dist/assets/css/bundle.css b/web/themes/custom/quartiers_de_demain/dist/assets/css/bundle.css index 7e0c07b..d22faaa 100644 --- a/web/themes/custom/quartiers_de_demain/dist/assets/css/bundle.css +++ b/web/themes/custom/quartiers_de_demain/dist/assets/css/bundle.css @@ -1606,9 +1606,33 @@ header #block-quartiers-de-demain-logoquartiersdedemain .field_field_logo .qdd-h #home .config_pages--type--diaporama-home { position: relative; } -#home .config_pages--type--diaporama-home .field_field_images img { +#home .config_pages--type--diaporama-home .swiper-container .swiper-wrapper .swiper-slide .cadre-img-zoom { + max-height: 1281px; + overflow: hidden; +} +#home .config_pages--type--diaporama-home .swiper-container .swiper-wrapper .swiper-slide .cadre-img-zoom img { width: 100%; height: auto; + animation: zoomOut 3.5s ease-in infinite; +} +#home .config_pages--type--diaporama-home .swiper-container .swiper-wrapper .swiper-slide blockquote { + position: relative; + top: -30px; +} +#home .config_pages--type--diaporama-home .swiper-container .swiper-wrapper .swiper-slide blockquote p { + font-size: 0.6rem !important; + font-family: "gilroy-regular"; +} +#home .config_pages--type--diaporama-home .swiper-container .swiper-wrapper .swiper-slide :hover { + color: blueviolet; +} +@keyframes zoomOut { + 0% { + transform: scale(1); + } + 100% { + transform: scale(1.1); + } } #home .content_container #block-quartiers-de-demain-titredepage { display: none; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/LICENSE b/web/themes/custom/quartiers_de_demain/librairies/swiper/LICENSE new file mode 100644 index 0000000..fdf19e7 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2019 Vladimir Kharlampidi + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/README.md b/web/themes/custom/quartiers_de_demain/librairies/swiper/README.md new file mode 100644 index 0000000..d4e726c --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/README.md @@ -0,0 +1,11 @@ +Swiper +========== + +Swiper - is the free and most modern mobile touch slider with hardware accelerated transitions and amazing native behavior. It is intended to be used in mobile websites, mobile web apps, and mobile native/hybrid apps. + +Swiper is not compatible with all platforms, it is a modern touch slider which is focused only on modern apps/platforms to bring the best experience and simplicity. + +# Getting Started + * [Getting Started Guide](https://swiperjs.com/get-started/) + * [API](https://swiperjs.com/swiper-api/) + * [Demos](https://swiperjs.com/demos/) diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y-element.css new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y-element.css @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y-element.min.css new file mode 100644 index 0000000..78c39d5 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y-element.min.css @@ -0,0 +1 @@ +.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.css new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.css @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.less new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.less @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.min.css new file mode 100644 index 0000000..78c39d5 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.min.css @@ -0,0 +1 @@ +.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.min.mjs new file mode 100644 index 0000000..05351d5 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";import{c as createElement,h as elementIndex,m as makeElementsArray}from"../shared/utils.min.mjs";function A11y(e){let{swiper:a,extendParams:t,on:n}=e;t({a11y:{enabled:!0,notificationClass:"swiper-notification",prevSlideMessage:"Previous slide",nextSlideMessage:"Next slide",firstSlideMessage:"This is the first slide",lastSlideMessage:"This is the last slide",paginationBulletMessage:"Go to slide {{index}}",slideLabelMessage:"{{index}} / {{slidesLength}}",containerMessage:null,containerRoleDescriptionMessage:null,itemRoleDescriptionMessage:null,slideRole:"group",id:null,scrollOnFocus:!0}}),a.a11y={clicked:!1};let i,s,r=null,l=(new Date).getTime();function o(e){const a=r;0!==a.length&&(a.innerHTML="",a.innerHTML=e)}function c(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("tabIndex","0")}))}function d(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function m(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("role",a)}))}function p(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-roledescription",a)}))}function g(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-label",a)}))}function u(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function E(e){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function f(e){if(13!==e.keyCode&&32!==e.keyCode)return;const t=a.params.a11y,n=e.target;if(!a.pagination||!a.pagination.el||n!==a.pagination.el&&!a.pagination.el.contains(e.target)||e.target.matches(classesToSelector(a.params.pagination.bulletClass))){if(a.navigation&&a.navigation.prevEl&&a.navigation.nextEl){const e=makeElementsArray(a.navigation.prevEl);makeElementsArray(a.navigation.nextEl).includes(n)&&(a.isEnd&&!a.params.loop||a.slideNext(),a.isEnd?o(t.lastSlideMessage):o(t.nextSlideMessage)),e.includes(n)&&(a.isBeginning&&!a.params.loop||a.slidePrev(),a.isBeginning?o(t.firstSlideMessage):o(t.prevSlideMessage))}a.pagination&&n.matches(classesToSelector(a.params.pagination.bulletClass))&&n.click()}}function v(){return a.pagination&&a.pagination.bullets&&a.pagination.bullets.length}function y(){return v()&&a.params.pagination.clickable}const b=(e,a,t)=>{c(e),"BUTTON"!==e.tagName&&(m(e,"button"),e.addEventListener("keydown",f)),g(e,t),function(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-controls",a)}))}(e,a)},h=e=>{s&&s!==e.target&&!s.contains(e.target)&&(i=!0),a.a11y.clicked=!0},A=()=>{i=!1,requestAnimationFrame((()=>{requestAnimationFrame((()=>{a.destroyed||(a.a11y.clicked=!1)}))}))},k=e=>{l=(new Date).getTime()},M=e=>{if(a.a11y.clicked||!a.params.a11y.scrollOnFocus)return;if((new Date).getTime()-l<100)return;const t=e.target.closest(`.${a.params.slideClass}, swiper-slide`);if(!t||!a.slides.includes(t))return;s=t;const n=a.slides.indexOf(t)===a.activeIndex,r=a.params.watchSlidesProgress&&a.visibleSlides&&a.visibleSlides.includes(t);n||r||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(a.isHorizontal()?a.el.scrollLeft=0:a.el.scrollTop=0,requestAnimationFrame((()=>{i||(a.params.loop?a.slideToLoop(parseInt(t.getAttribute("data-swiper-slide-index")),0):a.slideTo(a.slides.indexOf(t),0),i=!1)})))},x=()=>{const e=a.params.a11y;e.itemRoleDescriptionMessage&&p(a.slides,e.itemRoleDescriptionMessage),e.slideRole&&m(a.slides,e.slideRole);const t=a.slides.length;e.slideLabelMessage&&a.slides.forEach(((n,i)=>{const s=a.params.loop?parseInt(n.getAttribute("data-swiper-slide-index"),10):i;g(n,e.slideLabelMessage.replace(/\{\{index\}\}/,s+1).replace(/\{\{slidesLength\}\}/,t))}))},L=()=>{const e=a.params.a11y;a.el.append(r);const t=a.el;e.containerRoleDescriptionMessage&&p(t,e.containerRoleDescriptionMessage),e.containerMessage&&g(t,e.containerMessage);const n=a.wrapperEl,i=e.id||n.getAttribute("id")||`swiper-wrapper-${s=16,void 0===s&&(s=16),"x".repeat(s).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var s;const l=a.params.autoplay&&a.params.autoplay.enabled?"off":"polite";var o;o=i,makeElementsArray(n).forEach((e=>{e.setAttribute("id",o)})),function(e,a){(e=makeElementsArray(e)).forEach((e=>{e.setAttribute("aria-live",a)}))}(n,l),x();let{nextEl:c,prevEl:d}=a.navigation?a.navigation:{};if(c=makeElementsArray(c),d=makeElementsArray(d),c&&c.forEach((a=>b(a,i,e.nextSlideMessage))),d&&d.forEach((a=>b(a,i,e.prevSlideMessage))),y()){makeElementsArray(a.pagination.el).forEach((e=>{e.addEventListener("keydown",f)}))}getDocument().addEventListener("visibilitychange",k),a.el.addEventListener("focus",M,!0),a.el.addEventListener("focus",M,!0),a.el.addEventListener("pointerdown",h,!0),a.el.addEventListener("pointerup",A,!0)};n("beforeInit",(()=>{r=createElement("span",a.params.a11y.notificationClass),r.setAttribute("aria-live","assertive"),r.setAttribute("aria-atomic","true")})),n("afterInit",(()=>{a.params.a11y.enabled&&L()})),n("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{a.params.a11y.enabled&&x()})),n("fromEdge toEdge afterInit lock unlock",(()=>{a.params.a11y.enabled&&function(){if(a.params.loop||a.params.rewind||!a.navigation)return;const{nextEl:e,prevEl:t}=a.navigation;t&&(a.isBeginning?(u(t),d(t)):(E(t),c(t))),e&&(a.isEnd?(u(e),d(e)):(E(e),c(e)))}()})),n("paginationUpdate",(()=>{a.params.a11y.enabled&&function(){const e=a.params.a11y;v()&&a.pagination.bullets.forEach((t=>{a.params.pagination.clickable&&(c(t),a.params.pagination.renderBullet||(m(t,"button"),g(t,e.paginationBulletMessage.replace(/\{\{index\}\}/,elementIndex(t)+1)))),t.matches(classesToSelector(a.params.pagination.bulletActiveClass))?t.setAttribute("aria-current","true"):t.removeAttribute("aria-current")}))}()})),n("destroy",(()=>{a.params.a11y.enabled&&function(){r&&r.remove();let{nextEl:e,prevEl:t}=a.navigation?a.navigation:{};e=makeElementsArray(e),t=makeElementsArray(t),e&&e.forEach((e=>e.removeEventListener("keydown",f))),t&&t.forEach((e=>e.removeEventListener("keydown",f))),y()&&makeElementsArray(a.pagination.el).forEach((e=>{e.removeEventListener("keydown",f)}));getDocument().removeEventListener("visibilitychange",k),a.el&&"string"!=typeof a.el&&(a.el.removeEventListener("focus",M,!0),a.el.removeEventListener("pointerdown",h,!0),a.el.removeEventListener("pointerup",A,!0))}()}))}export{A11y as default}; +//# sourceMappingURL=a11y.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.min.mjs.map new file mode 100644 index 0000000..eff8e5e --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"a11y.mjs.mjs","names":["getDocument","classesToSelector","createElement","elementIndex","makeElementsArray","A11y","_ref","swiper","extendParams","on","a11y","enabled","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","id","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","Date","getTime","notify","message","notification","length","innerHTML","makeElFocusable","el","forEach","subEl","setAttribute","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","label","disableEl","enableEl","onEnterOrSpaceKey","e","keyCode","params","targetEl","target","pagination","contains","matches","bulletClass","navigation","prevEl","nextEl","prevEls","includes","isEnd","loop","slideNext","isBeginning","slidePrev","click","hasPagination","bullets","hasClickablePagination","clickable","initNavEl","wrapperId","tagName","addEventListener","controls","addElControls","handlePointerDown","handlePointerUp","requestAnimationFrame","destroyed","onVisibilityChange","handleFocus","slideEl","closest","slideClass","slides","isActive","indexOf","activeIndex","isVisible","watchSlidesProgress","visibleSlides","sourceCapabilities","firesTouchEvents","isHorizontal","scrollLeft","scrollTop","slideToLoop","parseInt","getAttribute","slideTo","initSlides","slidesLength","index","slideIndex","replace","init","append","containerEl","wrapperEl","size","repeat","Math","round","random","toString","live","autoplay","addElLive","rewind","updateNavigation","bulletEl","renderBullet","bulletActiveClass","removeAttribute","updatePagination","remove","removeEventListener","destroy"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.mjs new file mode 100644 index 0000000..4e7c85b --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.mjs @@ -0,0 +1,374 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; +import { c as createElement, h as elementIndex, m as makeElementsArray } from '../shared/utils.mjs'; + +function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null, + scrollOnFocus: true + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + let preventFocusHandler; + let focusTargetSlideEl; + let visibilityChangedTimestamp = new Date().getTime(); + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { + const prevEls = makeElementsArray(swiper.navigation.prevEl); + const nextEls = makeElementsArray(swiper.navigation.nextEl); + if (nextEls.includes(targetEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (prevEls.includes(targetEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = e => { + if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { + preventFocusHandler = true; + } + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + preventFocusHandler = false; + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const onVisibilityChange = e => { + visibilityChangedTimestamp = new Date().getTime(); + }; + const handleFocus = e => { + if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; + if (new Date().getTime() - visibilityChangedTimestamp < 100) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + focusTargetSlideEl = slideEl; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + requestAnimationFrame(() => { + if (preventFocusHandler) return; + if (swiper.params.loop) { + swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0); + } else { + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + } + preventFocusHandler = false; + }); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + // Tab focus + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); +} + +export { A11y as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.scss new file mode 100644 index 0000000..c5f9eec --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/a11y.scss @@ -0,0 +1,9 @@ +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay-element.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.less new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.min.mjs new file mode 100644 index 0000000..6c6047e --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";function Autoplay(e){let a,t,{swiper:n,extendParams:i,on:r,emit:o,params:s}=e;n.autoplay={running:!1,paused:!1,timeLeft:0},i({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let l,p,u,d,y,m,c,g,v=s&&s.autoplay?s.autoplay.delay:3e3,T=s&&s.autoplay?s.autoplay.delay:3e3,f=(new Date).getTime();function w(e){n&&!n.destroyed&&n.wrapperEl&&e.target===n.wrapperEl&&(n.wrapperEl.removeEventListener("transitionend",w),g||e.detail&&e.detail.bySwiperTouchMove||S())}const b=()=>{if(n.destroyed||!n.autoplay.running)return;n.autoplay.paused?p=!0:p&&(T=l,p=!1);const e=n.autoplay.paused?l:f+T-(new Date).getTime();n.autoplay.timeLeft=e,o("autoplayTimeLeft",e,e/v),t=requestAnimationFrame((()=>{b()}))},E=e=>{if(n.destroyed||!n.autoplay.running)return;cancelAnimationFrame(t),b();let i=void 0===e?n.params.autoplay.delay:e;v=n.params.autoplay.delay,T=n.params.autoplay.delay;const r=(()=>{let e;if(e=n.virtual&&n.params.virtual.enabled?n.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:n.slides[n.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(i=r,v=r,T=r),l=i;const s=n.params.speed,p=()=>{n&&!n.destroyed&&(n.params.autoplay.reverseDirection?!n.isBeginning||n.params.loop||n.params.rewind?(n.slidePrev(s,!0,!0),o("autoplay")):n.params.autoplay.stopOnLastSlide||(n.slideTo(n.slides.length-1,s,!0,!0),o("autoplay")):!n.isEnd||n.params.loop||n.params.rewind?(n.slideNext(s,!0,!0),o("autoplay")):n.params.autoplay.stopOnLastSlide||(n.slideTo(0,s,!0,!0),o("autoplay")),n.params.cssMode&&(f=(new Date).getTime(),requestAnimationFrame((()=>{E()}))))};return i>0?(clearTimeout(a),a=setTimeout((()=>{p()}),i)):requestAnimationFrame((()=>{p()})),i},L=()=>{f=(new Date).getTime(),n.autoplay.running=!0,E(),o("autoplayStart")},D=()=>{n.autoplay.running=!1,clearTimeout(a),cancelAnimationFrame(t),o("autoplayStop")},O=(e,t)=>{if(n.destroyed||!n.autoplay.running)return;clearTimeout(a),e||(c=!0);const i=()=>{o("autoplayPause"),n.params.autoplay.waitForTransition?n.wrapperEl.addEventListener("transitionend",w):S()};if(n.autoplay.paused=!0,t)return m&&(l=n.params.autoplay.delay),m=!1,void i();const r=l||n.params.autoplay.delay;l=r-((new Date).getTime()-f),n.isEnd&&l<0&&!n.params.loop||(l<0&&(l=0),i())},S=()=>{n.isEnd&&l<0&&!n.params.loop||n.destroyed||!n.autoplay.running||(f=(new Date).getTime(),c?(c=!1,E(l)):E(),n.autoplay.paused=!1,o("autoplayResume"))},M=()=>{if(n.destroyed||!n.autoplay.running)return;const e=getDocument();"hidden"===e.visibilityState&&(c=!0,O(!0)),"visible"===e.visibilityState&&S()},h=e=>{"mouse"===e.pointerType&&(c=!0,g=!0,n.animating||n.autoplay.paused||O(!0))},A=e=>{"mouse"===e.pointerType&&(g=!1,n.autoplay.paused&&S())};r("init",(()=>{n.params.autoplay.enabled&&(n.params.autoplay.pauseOnMouseEnter&&(n.el.addEventListener("pointerenter",h),n.el.addEventListener("pointerleave",A)),getDocument().addEventListener("visibilitychange",M),L())})),r("destroy",(()=>{n.el&&"string"!=typeof n.el&&(n.el.removeEventListener("pointerenter",h),n.el.removeEventListener("pointerleave",A)),getDocument().removeEventListener("visibilitychange",M),n.autoplay.running&&D()})),r("_freeModeStaticRelease",(()=>{(d||c)&&S()})),r("_freeModeNoMomentumRelease",(()=>{n.params.autoplay.disableOnInteraction?D():O(!0,!0)})),r("beforeTransitionStart",((e,a,t)=>{!n.destroyed&&n.autoplay.running&&(t||!n.params.autoplay.disableOnInteraction?O(!0,!0):D())})),r("sliderFirstMove",(()=>{!n.destroyed&&n.autoplay.running&&(n.params.autoplay.disableOnInteraction?D():(u=!0,d=!1,c=!1,y=setTimeout((()=>{c=!0,d=!0,O(!0)}),200)))})),r("touchEnd",(()=>{if(!n.destroyed&&n.autoplay.running&&u){if(clearTimeout(y),clearTimeout(a),n.params.autoplay.disableOnInteraction)return d=!1,void(u=!1);d&&n.params.cssMode&&S(),d=!1,u=!1}})),r("slideChange",(()=>{!n.destroyed&&n.autoplay.running&&(m=!0)})),Object.assign(n.autoplay,{start:L,stop:D,pause:O,resume:S})}export{Autoplay as default}; +//# sourceMappingURL=autoplay.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.min.mjs.map new file mode 100644 index 0000000..9e326f9 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"autoplay.mjs.mjs","names":["getDocument","Autoplay","_ref","timeout","raf","swiper","extendParams","on","emit","params","autoplay","running","paused","timeLeft","enabled","delay","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","isTouched","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","Date","getTime","onTransitionEnd","e","destroyed","wrapperEl","target","removeEventListener","detail","bySwiperTouchMove","resume","calcTimeLeft","requestAnimationFrame","run","delayForce","cancelAnimationFrame","currentSlideDelay","activeSlideEl","virtual","slides","filter","slideEl","classList","contains","activeIndex","parseInt","getAttribute","getSlideDelay","Number","isNaN","speed","proceed","isBeginning","loop","rewind","slidePrev","slideTo","length","isEnd","slideNext","cssMode","clearTimeout","setTimeout","start","stop","pause","internal","reset","addEventListener","onVisibilityChange","document","visibilityState","onPointerEnter","pointerType","animating","onPointerLeave","el","_s","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.mjs new file mode 100644 index 0000000..732541d --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.mjs @@ -0,0 +1,304 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; + +/* eslint no-underscore-dangle: "off" */ +/* eslint no-use-before-define: "off" */ +function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + } + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); +} + +export { Autoplay as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/autoplay.scss new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/controller-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/controller-element.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/controller-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/controller-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/controller.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/controller.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/controller.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/controller.less new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/controller.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/controller.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/controller.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/controller.min.mjs new file mode 100644 index 0000000..f9263b0 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/controller.min.mjs @@ -0,0 +1,2 @@ +import{n as nextTick,k as elementTransitionEnd}from"../shared/utils.min.mjs";function Controller(t){let{swiper:r,extendParams:e,on:n}=t;function o(t,r){const e=function(){let t,r,e;return(n,o)=>{for(r=-1,t=n.length;t-r>1;)e=t+r>>1,n[e]<=o?r=e:t=e;return t}}();let n,o;return this.x=t,this.y=r,this.lastIndex=t.length-1,this.interpolate=function(t){return t?(o=e(this.x,t),n=o-1,(t-this.x[n])*(this.y[o]-this.y[n])/(this.x[o]-this.x[n])+this.y[n]):0},this}function l(){r.controller.control&&r.controller.spline&&(r.controller.spline=void 0,delete r.controller.spline)}e({controller:{control:void 0,inverse:!1,by:"slide"}}),r.controller={control:void 0},n("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof r.params.controller.control||r.params.controller.control instanceof HTMLElement)){("string"==typeof r.params.controller.control?[...document.querySelectorAll(r.params.controller.control)]:[r.params.controller.control]).forEach((t=>{if(r.controller.control||(r.controller.control=[]),t&&t.swiper)r.controller.control.push(t.swiper);else if(t){const e=`${r.params.eventsPrefix}init`,n=o=>{r.controller.control.push(o.detail[0]),r.update(),t.removeEventListener(e,n)};t.addEventListener(e,n)}}))}else r.controller.control=r.params.controller.control})),n("update",(()=>{l()})),n("resize",(()=>{l()})),n("observerUpdate",(()=>{l()})),n("setTranslate",((t,e,n)=>{r.controller.control&&!r.controller.control.destroyed&&r.controller.setTranslate(e,n)})),n("setTransition",((t,e,n)=>{r.controller.control&&!r.controller.control.destroyed&&r.controller.setTransition(e,n)})),Object.assign(r.controller,{setTranslate:function(t,e){const n=r.controller.control;let l,s;const i=r.constructor;function a(t){if(t.destroyed)return;const e=r.rtlTranslate?-r.translate:r.translate;"slide"===r.params.controller.by&&(!function(t){r.controller.spline=r.params.loop?new o(r.slidesGrid,t.slidesGrid):new o(r.snapGrid,t.snapGrid)}(t),s=-r.controller.spline.interpolate(-e)),s&&"container"!==r.params.controller.by||(l=(t.maxTranslate()-t.minTranslate())/(r.maxTranslate()-r.minTranslate()),!Number.isNaN(l)&&Number.isFinite(l)||(l=1),s=(e-r.minTranslate())*l+t.minTranslate()),r.params.controller.inverse&&(s=t.maxTranslate()-s),t.updateProgress(s),t.setTranslate(s,r),t.updateActiveIndex(),t.updateSlidesClasses()}if(Array.isArray(n))for(let t=0;t{e.updateAutoHeight()})),elementTransitionEnd(e.wrapperEl,(()=>{o&&e.transitionEnd()}))))}if(Array.isArray(o))for(l=0;l>"] }] */ +function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; + controlElements.forEach(controlElement => { + if (!swiper.controller.control) swiper.controller.control = []; + if (controlElement && controlElement.swiper) { + swiper.controller.control.push(controlElement.swiper); + } else if (controlElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onControllerSwiper = e => { + swiper.controller.control.push(e.detail[0]); + swiper.update(); + controlElement.removeEventListener(eventName, onControllerSwiper); + }; + controlElement.addEventListener(eventName, onControllerSwiper); + } + }); + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); +} + +export { Controller as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/controller.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/controller.scss new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards-element.css new file mode 100644 index 0000000..f831010 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards-element.css @@ -0,0 +1,9 @@ +.swiper-cards { + overflow: visible; +} +.swiper-cards ::slotted(swiper-slide) { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards-element.min.css new file mode 100644 index 0000000..97c6648 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards-element.min.css @@ -0,0 +1 @@ +.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.css new file mode 100644 index 0000000..4b9f64b --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.css @@ -0,0 +1,9 @@ +.swiper-cards { + overflow: visible; +} +.swiper-cards .swiper-slide { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.less new file mode 100644 index 0000000..ab90342 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.less @@ -0,0 +1,8 @@ +.swiper-cards { + overflow: visible; + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.min.css new file mode 100644 index 0000000..1769ef2 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.min.css @@ -0,0 +1 @@ +.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.min.mjs new file mode 100644 index 0000000..2b2e86c --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectCards(e){let{swiper:t,extendParams:a,on:s}=e;a({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}});effectInit({effect:"cards",swiper:t,on:s,setTranslate:()=>{const{slides:e,activeIndex:a,rtlTranslate:s}=t,r=t.params.cardsEffect,{startTranslate:i,isTouched:n}=t.touchEventsData,o=s?-t.translate:t.translate;for(let l=0;l0&&c<1&&(n||t.params.cssMode)&&o-1&&(n||t.params.cssMode)&&o>i;if(E||T){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;w+=-28*c*e,u+=-.5*e,S+=96*e,h=-25*e*Math.abs(c)+"%"}if(p=c<0?`calc(${p}px ${s?"-":"+"} (${S*Math.abs(c)}%))`:c>0?`calc(${p}px ${s?"-":"+"} (-${S*Math.abs(c)}%))`:`${p}px`,!t.isHorizontal()){const e=h;h=p,p=e}const g=c<0?""+(1+(1-u)*c):""+(1-(1-u)*c),x=`\n translate3d(${p}, ${h}, ${M}px)\n rotateZ(${r.rotate?s?-w:w:0}deg)\n scale(${g})\n `;if(r.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=createShadow("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(f))+e.length;effectTarget(r,d).style.transform=x}},setTransition:e=>{const a=t.slides.map((e=>getSlideTransformEl(e)));a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:a})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}export{EffectCards as default}; +//# sourceMappingURL=effect-cards.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.min.mjs.map new file mode 100644 index 0000000..e23f337 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-cards.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectCards","_ref","swiper","extendParams","on","cardsEffect","slideShadows","rotate","perSlideRotate","perSlideOffset","effect","setTranslate","slides","activeIndex","rtlTranslate","rtl","params","startTranslate","isTouched","touchEventsData","currentTranslate","translate","i","length","slideEl","slideProgress","progress","Math","min","max","offset","swiperSlideOffset","centeredSlides","cssMode","wrapperEl","style","transform","minTranslate","tX","tY","tZ","abs","scale","tXAdd","slideIndex","virtual","enabled","from","isSwipeToNext","isSwipeToPrev","subProgress","isHorizontal","prevY","scaleString","shadowEl","querySelector","opacity","zIndex","round","setTransition","duration","transformElements","map","forEach","el","transitionDuration","querySelectorAll","perspective","overwriteParams","watchSlidesProgress","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.mjs new file mode 100644 index 0000000..27e577a --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.mjs @@ -0,0 +1,125 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectCards as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.scss new file mode 100644 index 0000000..ab90342 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cards.scss @@ -0,0 +1,8 @@ +.swiper-cards { + overflow: visible; + .swiper-slide { + transform-origin: center bottom; + backface-visibility: hidden; + overflow: hidden; + } +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow-element.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.less new file mode 100644 index 0000000..58594d9 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.less @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.min.mjs new file mode 100644 index 0000000..6c1d2e1 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{g as getSlideTransformEl,o as getRotateFix}from"../shared/utils.min.mjs";function EffectCoverflow(e){let{swiper:t,extendParams:s,on:r}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}});effectInit({effect:"coverflow",swiper:t,on:r,setTranslate:()=>{const{width:e,height:s,slides:r,slidesSizesGrid:o}=t,a=t.params.coverflowEffect,i=t.isHorizontal(),l=t.translate,f=i?e/2-l:s/2-l,d=i?a.rotate:-a.rotate,c=a.depth,h=getRotateFix(t);for(let e=0,t=r.length;e0?n:0),s&&(s.style.opacity=-n>0?-n:0)}}},setTransition:e=>{t.slides.map((e=>getSlideTransformEl(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})}export{EffectCoverflow as default}; +//# sourceMappingURL=effect-coverflow.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.min.mjs.map new file mode 100644 index 0000000..b2820c2 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-coverflow.mjs.mjs","names":["createShadow","effectInit","effectTarget","getSlideTransformEl","getRotateFix","EffectCoverflow","_ref","swiper","extendParams","on","coverflowEffect","rotate","stretch","depth","scale","modifier","slideShadows","effect","setTranslate","width","swiperWidth","height","swiperHeight","slides","slidesSizesGrid","params","isHorizontal","transform","translate","center","r","i","length","slideEl","slideSize","centerOffset","swiperSlideOffset","offsetMultiplier","rotateY","rotateX","translateZ","Math","abs","indexOf","parseFloat","translateY","translateX","slideTransform","style","zIndex","round","shadowBeforeEl","querySelector","shadowAfterEl","opacity","setTransition","duration","map","forEach","el","transitionDuration","querySelectorAll","shadowEl","perspective","overwriteParams","watchSlidesProgress"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.mjs new file mode 100644 index 0000000..17e0949 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.mjs @@ -0,0 +1,104 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs'; + +function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + const r = getRotateFix(swiper); + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); +} + +export { EffectCoverflow as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.scss new file mode 100644 index 0000000..58594d9 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-coverflow.scss @@ -0,0 +1,2 @@ +.swiper-coverflow { +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative-element.css new file mode 100644 index 0000000..6ccf22b --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative-element.css @@ -0,0 +1,6 @@ +.swiper-creative ::slotted(swiper-slide) { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative-element.min.css new file mode 100644 index 0000000..70fb705 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative-element.min.css @@ -0,0 +1 @@ +.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.css new file mode 100644 index 0000000..2082494 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.css @@ -0,0 +1,6 @@ +.swiper-creative .swiper-slide { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.less new file mode 100644 index 0000000..b893cad --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.less @@ -0,0 +1,7 @@ +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.min.css new file mode 100644 index 0000000..404da2c --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.min.css @@ -0,0 +1 @@ +.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.min.mjs new file mode 100644 index 0000000..789c2c0 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl,o as getRotateFix}from"../shared/utils.min.mjs";function EffectCreative(e){let{swiper:t,extendParams:s,on:r}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const a=e=>"string"==typeof e?e:`${e}px`;effectInit({effect:"creative",swiper:t,on:r,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:r}=t,i=t.params.creativeEffect,{progressMultiplier:o}=i,l=t.params.centeredSlides,n=getRotateFix(t);if(l){const e=r[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(w=i.prev,h=!0),d.forEach(((e,t)=>{d[t]=`calc(${e}px + (${a(w.translate[t])} * ${Math.abs(f*o)}))`})),g.forEach(((e,t)=>{let s=w.rotate[t]*Math.abs(f*o);g[t]=s})),r.style.zIndex=-Math.abs(Math.round(c))+e.length;const y=d.join(", "),u=`rotateX(${n(g[0])}deg) rotateY(${n(g[1])}deg) rotateZ(${n(g[2])}deg)`,v=m<0?`scale(${1+(1-w.scale)*m*o})`:`scale(${1-(1-w.scale)*m*o})`,E=m<0?1+(1-w.opacity)*m*o:1-(1-w.opacity)*m*o,M=`translate3d(${y}) ${u} ${v}`;if(h&&w.shadow||!h){let e=r.querySelector(".swiper-slide-shadow");if(!e&&w.shadow&&(e=createShadow("creative",r)),e){const t=i.shadowPerProgress?f*(1/i.limitProgress):f;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const $=effectTarget(i,r);$.style.transform=M,$.style.opacity=E,w.origin&&($.style.transformOrigin=w.origin)}},setTransition:e=>{const s=t.slides.map((e=>getSlideTransformEl(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}export{EffectCreative as default}; +//# sourceMappingURL=effect-creative.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.min.mjs.map new file mode 100644 index 0000000..dbbd2ae --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-creative.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","getRotateFix","EffectCreative","_ref","swiper","extendParams","on","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","perspective","prev","translate","rotate","opacity","scale","next","getTranslateValue","value","effect","setTranslate","slides","wrapperEl","slidesSizesGrid","params","multiplier","isCenteredSlides","centeredSlides","rotateFix","margin","slidesOffsetBefore","style","transform","i","length","slideEl","slideProgress","progress","Math","min","max","originalProgress","offset","swiperSlideOffset","t","cssMode","r","custom","isHorizontal","data","forEach","index","abs","val","zIndex","round","translateString","join","rotateString","scaleString","opacityString","shadow","shadowEl","querySelector","shadowOpacity","targetEl","origin","transformOrigin","setTransition","duration","transformElements","map","el","transitionDuration","querySelectorAll","allSlides","overwriteParams","watchSlidesProgress","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.mjs new file mode 100644 index 0000000..88f5ff7 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.mjs @@ -0,0 +1,146 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs'; + +function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + const rotateFix = getRotateFix(swiper); + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectCreative as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.scss new file mode 100644 index 0000000..b893cad --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-creative.scss @@ -0,0 +1,7 @@ +.swiper-creative { + .swiper-slide { + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; + } +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube-element.css new file mode 100644 index 0000000..af13615 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube-element.css @@ -0,0 +1,53 @@ +.swiper-cube { + overflow: visible; +} +.swiper-cube ::slotted(swiper-slide) { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-cube.swiper-rtl ::slotted(swiper-slide) { + transform-origin: 100% 0; +} +.swiper-cube ::slotted(.swiper-slide-active), +.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +.swiper-cube ::slotted(.swiper-slide-active), +.swiper-cube ::slotted(.swiper-slide-next), +.swiper-cube ::slotted(.swiper-slide-prev) { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube ::slotted(.swiper-slide-next) + ::slotted(swiper-slide) { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start *//* Cube slide shadows end */ diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube-element.min.css new file mode 100644 index 0000000..afc6ca2 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube-element.min.css @@ -0,0 +1 @@ +.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.css new file mode 100644 index 0000000..14b5d08 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.css @@ -0,0 +1,62 @@ +.swiper-cube { + overflow: visible; +} +.swiper-cube .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-cube.swiper-rtl .swiper-slide { + transform-origin: 100% 0; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-next, +.swiper-cube .swiper-slide-prev { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start */ +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Cube slide shadows end */ diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.less new file mode 100644 index 0000000..54bdc01 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.less @@ -0,0 +1,69 @@ +.swiper-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev { + pointer-events: auto; + visibility: visible; + } + + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + -webkit-filter: blur(50px); + filter: blur(50px); + } + } +} +.swiper-cube { + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } +} +/* Cube slide shadows start */ +.swiper-cube { + .swiper-slide-shadow-cube.swiper-slide-shadow-top, + .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, + .swiper-slide-shadow-cube.swiper-slide-shadow-left, + .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Cube slide shadows end */ diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.min.css new file mode 100644 index 0000000..e91764c --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.min.css @@ -0,0 +1 @@ +.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.min.mjs new file mode 100644 index 0000000..c2f2d80 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.min.mjs @@ -0,0 +1,2 @@ +import{e as effectInit}from"../shared/effect-init.min.mjs";import{c as createElement,o as getRotateFix}from"../shared/utils.min.mjs";function EffectCube(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const r=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),r=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=createElement("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),r||(r=createElement("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(r)),a&&(a.style.opacity=Math.max(-t,0)),r&&(r.style.opacity=Math.max(t,0))};effectInit({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:o,height:i,rtlTranslate:l,size:d,browser:n}=t,p=getRotateFix(t),c=t.params.cubeEffect,w=t.isHorizontal(),h=t.virtual&&t.params.virtual.enabled;let f,m=0;c.shadow&&(w?(f=t.wrapperEl.querySelector(".swiper-cube-shadow"),f||(f=createElement("div","swiper-cube-shadow"),t.wrapperEl.append(f)),f.style.height=`${o}px`):(f=e.querySelector(".swiper-cube-shadow"),f||(f=createElement("div","swiper-cube-shadow"),e.append(f))));for(let e=0;e-1&&(m=90*s+90*n,l&&(m=90*-s-90*n)),t.style.transform=x,c.slideShadows&&r(t,n,w)}if(s.style.transformOrigin=`50% 50% -${d/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${d/2}px`,c.shadow)if(w)f.style.transform=`translate3d(0px, ${o/2+c.shadowOffset}px, ${-o/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${c.shadowScale})`;else{const e=Math.abs(m)-90*Math.floor(Math.abs(m)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=c.shadowScale,a=c.shadowScale/t,r=c.shadowOffset;f.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${i/2+r}px, ${-i/2/a}px) rotateX(-89.99deg)`}const u=(n.isSafari||n.isWebView)&&n.needPerspectiveFix?-d/2:0;s.style.transform=`translate3d(0px,0,${u}px) rotateX(${p(t.isHorizontal()?0:m)}deg) rotateY(${p(t.isHorizontal()?-m:0)}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${u}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);r(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})}export{EffectCube as default}; +//# sourceMappingURL=effect-cube.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.min.mjs.map new file mode 100644 index 0000000..a2ee782 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-cube.mjs.mjs","names":["effectInit","createElement","getRotateFix","EffectCube","_ref","swiper","extendParams","on","cubeEffect","slideShadows","shadow","shadowOffset","shadowScale","createSlideShadows","slideEl","progress","isHorizontal","shadowBefore","querySelector","shadowAfter","split","append","style","opacity","Math","max","effect","setTranslate","el","wrapperEl","slides","width","swiperWidth","height","swiperHeight","rtlTranslate","rtl","size","swiperSize","browser","r","params","isVirtual","virtual","enabled","cubeShadowEl","wrapperRotate","i","length","slideIndex","parseInt","getAttribute","slideAngle","round","floor","min","tx","ty","tz","transform","transformOrigin","shadowAngle","abs","multiplier","sin","PI","cos","scale1","scale2","offset","zFactor","isSafari","isWebView","needPerspectiveFix","setProperty","setTransition","duration","forEach","transitionDuration","querySelectorAll","subEl","shadowEl","recreateShadows","getEffectParams","perspective","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","resistanceRatio","spaceBetween","centeredSlides","virtualTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.mjs new file mode 100644 index 0000000..59fdbe4 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.mjs @@ -0,0 +1,174 @@ +import { e as effectInit } from '../shared/effect-init.mjs'; +import { c as createElement, o as getRotateFix } from '../shared/utils.mjs'; + +function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const r = getRotateFix(swiper); + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); +} + +export { EffectCube as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.scss new file mode 100644 index 0000000..54bdc01 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-cube.scss @@ -0,0 +1,69 @@ +.swiper-cube { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; + .swiper-slide { + pointer-events: none; + } + } + &.swiper-rtl .swiper-slide { + transform-origin: 100% 0; + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } + .swiper-slide-active, + .swiper-slide-next, + .swiper-slide-prev { + pointer-events: auto; + visibility: visible; + } + + .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; + + &:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + -webkit-filter: blur(50px); + filter: blur(50px); + } + } +} +.swiper-cube { + .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; + } +} +/* Cube slide shadows start */ +.swiper-cube { + .swiper-slide-shadow-cube.swiper-slide-shadow-top, + .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, + .swiper-slide-shadow-cube.swiper-slide-shadow-left, + .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Cube slide shadows end */ diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade-element.css new file mode 100644 index 0000000..76242c6 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade-element.css @@ -0,0 +1,16 @@ +.swiper-fade.swiper-free-mode ::slotted(swiper-slide) { + transition-timing-function: ease-out; +} +.swiper-fade ::slotted(swiper-slide) { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-fade ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade-element.min.css new file mode 100644 index 0000000..6fb7280 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade-element.min.css @@ -0,0 +1 @@ +.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.css new file mode 100644 index 0000000..ac7449e --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.css @@ -0,0 +1,16 @@ +.swiper-fade.swiper-free-mode .swiper-slide { + transition-timing-function: ease-out; +} +.swiper-fade .swiper-slide { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-fade .swiper-slide-active { + pointer-events: auto; +} +.swiper-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.less new file mode 100644 index 0000000..0fadca4 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.less @@ -0,0 +1,20 @@ +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + pointer-events: auto; + & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.min.css new file mode 100644 index 0000000..e535e7e --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.min.css @@ -0,0 +1 @@ +.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.min.mjs new file mode 100644 index 0000000..52a481c --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.min.mjs @@ -0,0 +1,2 @@ +import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl}from"../shared/utils.min.mjs";function EffectFade(e){let{swiper:t,extendParams:s,on:a}=e;s({fadeEffect:{crossFade:!1}});effectInit({effect:"fade",swiper:t,on:a,setTranslate:()=>{const{slides:e}=t,s=t.params.fadeEffect;for(let a=0;a{const s=t.slides.map((e=>getSlideTransformEl(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})}export{EffectFade as default}; +//# sourceMappingURL=effect-fade.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.min.mjs.map new file mode 100644 index 0000000..91e91f1 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-fade.mjs.mjs","names":["effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","EffectFade","_ref","swiper","extendParams","on","fadeEffect","crossFade","effect","setTranslate","slides","params","i","length","slideEl","tx","swiperSlideOffset","virtualTranslate","translate","ty","isHorizontal","slideOpacity","Math","max","abs","progress","min","targetEl","style","opacity","transform","setTransition","duration","transformElements","map","forEach","el","transitionDuration","allSlides","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","spaceBetween","cssMode"],"sources":["0"],"mappings":"YAAcA,eAAkB,4CAClBC,iBAAoB,8CACpBC,+BAAkC,8DAClCC,wBAA2B,0BAEzC,SAASC,WAAWC,GAClB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,GACEH,EACJE,EAAa,CACXE,WAAY,CACVC,WAAW,KAoCfV,WAAW,CACTW,OAAQ,OACRL,SACAE,KACAI,aArCmB,KACnB,MAAMC,OACJA,GACEP,EACEQ,EAASR,EAAOQ,OAAOL,WAC7B,IAAK,IAAIM,EAAI,EAAGA,EAAIF,EAAOG,OAAQD,GAAK,EAAG,CACzC,MAAME,EAAUX,EAAOO,OAAOE,GAE9B,IAAIG,GADWD,EAAQE,kBAElBb,EAAOQ,OAAOM,mBAAkBF,GAAMZ,EAAOe,WAClD,IAAIC,EAAK,EACJhB,EAAOiB,iBACVD,EAAKJ,EACLA,EAAK,GAEP,MAAMM,EAAelB,EAAOQ,OAAOL,WAAWC,UAAYe,KAAKC,IAAI,EAAID,KAAKE,IAAIV,EAAQW,UAAW,GAAK,EAAIH,KAAKI,IAAIJ,KAAKC,IAAIT,EAAQW,UAAW,GAAI,GAC/IE,EAAW7B,aAAaa,EAAQG,GACtCa,EAASC,MAAMC,QAAUR,EACzBM,EAASC,MAAME,UAAY,eAAef,QAASI,WACrD,GAmBAY,cAjBoBC,IACpB,MAAMC,EAAoB9B,EAAOO,OAAOwB,KAAIpB,GAAWd,oBAAoBc,KAC3EmB,EAAkBE,SAAQC,IACxBA,EAAGR,MAAMS,mBAAqB,GAAGL,KAAY,IAE/CjC,2BAA2B,CACzBI,SACA6B,WACAC,oBACAK,WAAW,GACX,EAQFC,gBAAiB,KAAM,CACrBC,cAAe,EACfC,eAAgB,EAChBC,qBAAqB,EACrBC,aAAc,EACd1B,kBAAmBd,EAAOQ,OAAOiC,WAGvC,QAES3C"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.mjs new file mode 100644 index 0000000..140e9b7 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.mjs @@ -0,0 +1,66 @@ +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl } from '../shared/utils.mjs'; + +function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectFade as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.scss new file mode 100644 index 0000000..bb059dd --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-fade.scss @@ -0,0 +1,20 @@ +.swiper-fade { + &.swiper-free-mode { + .swiper-slide { + transition-timing-function: ease-out; + } + } + .swiper-slide { + pointer-events: none; + transition-property: opacity; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip-element.css new file mode 100644 index 0000000..4ae8338 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip-element.css @@ -0,0 +1,17 @@ +.swiper-flip { + overflow: visible; +} +.swiper-flip ::slotted(swiper-slide) { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide) { + pointer-events: none; +} +.swiper-flip ::slotted(.swiper-slide-active), +.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active) { + pointer-events: auto; +} +/* Flip slide shadows start *//* Flip slide shadows end */ diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip-element.min.css new file mode 100644 index 0000000..40d852b --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip-element.min.css @@ -0,0 +1 @@ +.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.css new file mode 100644 index 0000000..f4b1d34 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.css @@ -0,0 +1,26 @@ +.swiper-flip { + overflow: visible; +} +.swiper-flip .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-flip .swiper-slide-active, +.swiper-flip .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +/* Flip slide shadows start */ +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Flip slide shadows end */ diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.less new file mode 100644 index 0000000..6c16d11 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.less @@ -0,0 +1,28 @@ +.swiper-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} +/* Flip slide shadows start */ +.swiper-flip { + .swiper-slide-shadow-flip.swiper-slide-shadow-top, + .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, + .swiper-slide-shadow-flip.swiper-slide-shadow-left, + .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Flip slide shadows end */ diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.min.css new file mode 100644 index 0000000..b7656ff --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.min.css @@ -0,0 +1 @@ +.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.min.mjs new file mode 100644 index 0000000..5db63a2 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.min.mjs @@ -0,0 +1,2 @@ +import{c as createShadow}from"../shared/create-shadow.min.mjs";import{e as effectInit}from"../shared/effect-init.min.mjs";import{e as effectTarget}from"../shared/effect-target.min.mjs";import{e as effectVirtualTransitionEnd}from"../shared/effect-virtual-transition-end.min.mjs";import{g as getSlideTransformEl,o as getRotateFix}from"../shared/utils.min.mjs";function EffectFlip(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const r=(e,s)=>{let a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),r=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=createShadow("flip",e,t.isHorizontal()?"left":"top")),r||(r=createShadow("flip",e,t.isHorizontal()?"right":"bottom")),a&&(a.style.opacity=Math.max(-s,0)),r&&(r.style.opacity=Math.max(s,0))};effectInit({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect,i=getRotateFix(t);for(let o=0;o{const s=t.slides.map((e=>getSlideTransformEl(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),effectVirtualTransitionEnd({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),r(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})}export{EffectFlip as default}; +//# sourceMappingURL=effect-flip.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.min.mjs.map new file mode 100644 index 0000000..475c1df --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-flip.mjs.mjs","names":["createShadow","effectInit","effectTarget","effectVirtualTransitionEnd","getSlideTransformEl","getRotateFix","EffectFlip","_ref","swiper","extendParams","on","flipEffect","slideShadows","limitRotation","createSlideShadows","slideEl","progress","shadowBefore","isHorizontal","querySelector","shadowAfter","style","opacity","Math","max","effect","setTranslate","slides","rtlTranslate","rtl","params","rotateFix","i","length","min","offset","swiperSlideOffset","rotateY","rotateX","tx","cssMode","translate","ty","zIndex","abs","round","transform","setTransition","duration","transformElements","map","forEach","el","transitionDuration","querySelectorAll","shadowEl","recreateShadows","getEffectParams","perspective","overwriteParams","slidesPerView","slidesPerGroup","watchSlidesProgress","spaceBetween","virtualTranslate"],"sources":["0"],"mappings":"YAAcA,iBAAoB,8CACpBC,eAAkB,4CAClBC,iBAAoB,8CACpBC,+BAAkC,8DAClCC,yBAA0BC,iBAAoB,0BAE5D,SAASC,WAAWC,GAClB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,GACEH,EACJE,EAAa,CACXE,WAAY,CACVC,cAAc,EACdC,eAAe,KAGnB,MAAMC,EAAqB,CAACC,EAASC,KACnC,IAAIC,EAAeT,EAAOU,eAAiBH,EAAQI,cAAc,6BAA+BJ,EAAQI,cAAc,4BAClHC,EAAcZ,EAAOU,eAAiBH,EAAQI,cAAc,8BAAgCJ,EAAQI,cAAc,+BACjHF,IACHA,EAAejB,aAAa,OAAQe,EAASP,EAAOU,eAAiB,OAAS,QAE3EE,IACHA,EAAcpB,aAAa,OAAQe,EAASP,EAAOU,eAAiB,QAAU,WAE5ED,IAAcA,EAAaI,MAAMC,QAAUC,KAAKC,KAAKR,EAAU,IAC/DI,IAAaA,EAAYC,MAAMC,QAAUC,KAAKC,IAAIR,EAAU,GAAE,EA+DpEf,WAAW,CACTwB,OAAQ,OACRjB,SACAE,KACAgB,aAtDmB,KACnB,MAAMC,OACJA,EACAC,aAAcC,GACZrB,EACEsB,EAAStB,EAAOsB,OAAOnB,WACvBoB,EAAY1B,aAAaG,GAC/B,IAAK,IAAIwB,EAAI,EAAGA,EAAIL,EAAOM,OAAQD,GAAK,EAAG,CACzC,MAAMjB,EAAUY,EAAOK,GACvB,IAAIhB,EAAWD,EAAQC,SACnBR,EAAOsB,OAAOnB,WAAWE,gBAC3BG,EAAWO,KAAKC,IAAID,KAAKW,IAAInB,EAAQC,SAAU,IAAK,IAEtD,MAAMmB,EAASpB,EAAQqB,kBAEvB,IAAIC,GADY,IAAMrB,EAElBsB,EAAU,EACVC,EAAK/B,EAAOsB,OAAOU,SAAWL,EAAS3B,EAAOiC,WAAaN,EAC3DO,EAAK,EACJlC,EAAOU,eAKDW,IACTQ,GAAWA,IALXK,EAAKH,EACLA,EAAK,EACLD,GAAWD,EACXA,EAAU,GAIZtB,EAAQM,MAAMsB,QAAUpB,KAAKqB,IAAIrB,KAAKsB,MAAM7B,IAAaW,EAAOM,OAC5DH,EAAOlB,cACTE,EAAmBC,EAASC,GAE9B,MAAM8B,EAAY,eAAeP,QAASG,qBAAsBX,EAAUO,kBAAwBP,EAAUM,SAC3FnC,aAAa4B,EAAQf,GAC7BM,MAAMyB,UAAYA,CAC7B,GAqBAC,cAnBoBC,IACpB,MAAMC,EAAoBzC,EAAOmB,OAAOuB,KAAInC,GAAWX,oBAAoBW,KAC3EkC,EAAkBE,SAAQC,IACxBA,EAAG/B,MAAMgC,mBAAqB,GAAGL,MACjCI,EAAGE,iBAAiB,gHAAgHH,SAAQI,IAC1IA,EAASlC,MAAMgC,mBAAqB,GAAGL,KAAY,GACnD,IAEJ7C,2BAA2B,CACzBK,SACAwC,WACAC,qBACA,EAQFO,gBAnEsB,KAEtBhD,EAAOsB,OAAOnB,WACdH,EAAOmB,OAAOwB,SAAQpC,IACpB,IAAIC,EAAWD,EAAQC,SACnBR,EAAOsB,OAAOnB,WAAWE,gBAC3BG,EAAWO,KAAKC,IAAID,KAAKW,IAAInB,EAAQC,SAAU,IAAK,IAEtDF,EAAmBC,EAASC,EAAS,GACrC,EA2DFyC,gBAAiB,IAAMjD,EAAOsB,OAAOnB,WACrC+C,YAAa,KAAM,EACnBC,gBAAiB,KAAM,CACrBC,cAAe,EACfC,eAAgB,EAChBC,qBAAqB,EACrBC,aAAc,EACdC,kBAAmBxD,EAAOsB,OAAOU,WAGvC,QAESlC"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.mjs new file mode 100644 index 0000000..5175981 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.mjs @@ -0,0 +1,111 @@ +import { c as createShadow } from '../shared/create-shadow.mjs'; +import { e as effectInit } from '../shared/effect-init.mjs'; +import { e as effectTarget } from '../shared/effect-target.mjs'; +import { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs'; +import { g as getSlideTransformEl, o as getRotateFix } from '../shared/utils.mjs'; + +function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + const rotateFix = getRotateFix(swiper); + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); +} + +export { EffectFlip as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.scss new file mode 100644 index 0000000..6c16d11 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/effect-flip.scss @@ -0,0 +1,28 @@ +.swiper-flip { + overflow: visible; + .swiper-slide { + pointer-events: none; + backface-visibility: hidden; + z-index: 1; + .swiper-slide { + pointer-events: none; + } + } + .swiper-slide-active { + &, + & .swiper-slide-active { + pointer-events: auto; + } + } +} +/* Flip slide shadows start */ +.swiper-flip { + .swiper-slide-shadow-flip.swiper-slide-shadow-top, + .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, + .swiper-slide-shadow-flip.swiper-slide-shadow-left, + .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + backface-visibility: hidden; + } +} +/* Flip slide shadows end */ diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode-element.css new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode-element.css @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode-element.min.css new file mode 100644 index 0000000..ecc8120 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode-element.min.css @@ -0,0 +1 @@ +.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.css new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.css @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.less new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.less @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.min.css new file mode 100644 index 0000000..ecc8120 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.min.css @@ -0,0 +1 @@ +.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.min.mjs new file mode 100644 index 0000000..251c4ac --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.min.mjs @@ -0,0 +1,2 @@ +import{d as now,k as elementTransitionEnd}from"../shared/utils.min.mjs";function freeMode(e){let{swiper:t,extendParams:o,emit:n,once:s}=e;o({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:o}=t;0===e.velocities.length&&e.velocities.push({position:o[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:o[t.isHorizontal()?"currentX":"currentY"],time:now()})},onTouchEnd:function(e){let{currentPos:o}=e;if(t.params.cssMode)return;const{params:i,wrapperEl:a,rtlTranslate:r,snapGrid:l,touchEventsData:m}=t,c=now()-m.touchStartTime;if(o<-t.minTranslate())t.slideTo(t.activeIndex);else if(o>-t.maxTranslate())t.slides.length1){const e=m.velocities.pop(),o=m.velocities.pop(),n=e.position-o.position,s=e.time-o.time;t.velocity=n/s,t.velocity/=2,Math.abs(t.velocity)150||now()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=i.freeMode.momentumVelocityRatio,m.velocities.length=0;let e=1e3*i.freeMode.momentumRatio;const o=t.velocity*e;let c=t.translate+o;r&&(c=-c);let d,u=!1;const f=20*Math.abs(t.velocity)*i.freeMode.momentumBounceRatio;let p;if(ct.minTranslate())i.freeMode.momentumBounce?(c-t.minTranslate()>f&&(c=t.minTranslate()+f),d=t.minTranslate(),u=!0,m.allowMomentumBounce=!0):c=t.minTranslate(),i.loop&&i.centeredSlides&&(p=!0);else if(i.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(l[e]-c){t.loopFix()})),0!==t.velocity){if(e=r?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),i.freeMode.sticky){const o=Math.abs((r?-c:c)-t.translate),n=t.slidesSizesGrid[t.activeIndex];e=o{t&&!t.destroyed&&m.allowMomentumBounce&&(n("momentumBounce"),t.setTransition(i.speed),setTimeout((()=>{t.setTranslate(d),elementTransitionEnd(a,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(n("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,elementTransitionEnd(a,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(i.freeMode.sticky)return void t.slideToClosest();i.freeMode&&n("_freeModeNoMomentumRelease")}(!i.freeMode.momentum||c>=i.longSwipesMs)&&(n("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})}export{freeMode as default}; +//# sourceMappingURL=free-mode.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.min.mjs.map new file mode 100644 index 0000000..97162ea --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"free-mode.mjs.mjs","names":["now","elementTransitionEnd","freeMode","_ref","swiper","extendParams","emit","once","enabled","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","sticky","minimumVelocity","Object","assign","onTouchStart","params","cssMode","translate","getTranslate","setTranslate","setTransition","touchEventsData","velocities","length","onTouchEnd","currentPos","rtl","onTouchMove","data","touches","push","position","isHorizontal","time","touchStartTime","_ref2","wrapperEl","rtlTranslate","snapGrid","timeDiff","minTranslate","slideTo","activeIndex","maxTranslate","slides","lastMoveEvent","pop","velocityEvent","distance","velocity","Math","abs","momentumDuration","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","allowMomentumBounce","loop","centeredSlides","nextSlide","j","swipeDirection","loopFix","moveDistance","currentSlideSize","slidesSizesGrid","speed","slideToClosest","updateProgress","transitionStart","animating","destroyed","setTimeout","transitionEnd","updateActiveIndex","updateSlidesClasses","longSwipesMs"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.mjs new file mode 100644 index 0000000..db39c3d --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.mjs @@ -0,0 +1,237 @@ +import { d as now, k as elementTransitionEnd } from '../shared/utils.mjs'; + +function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); +} + +export { freeMode as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.scss new file mode 100644 index 0000000..9c289eb --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/free-mode.scss @@ -0,0 +1,4 @@ +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid-element.css new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid-element.css @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid-element.min.css new file mode 100644 index 0000000..7d5f8f9 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid-element.min.css @@ -0,0 +1 @@ +.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid.css new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid.css @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid.less new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid.less @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid.min.css new file mode 100644 index 0000000..7d5f8f9 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid.min.css @@ -0,0 +1 @@ +.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid.min.mjs new file mode 100644 index 0000000..84f1b4e --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid.min.mjs @@ -0,0 +1,2 @@ +function Grid(e){let i,r,a,t,{swiper:s,extendParams:l,on:o}=e;l({grid:{rows:1,fill:"column"}});const n=()=>{let e=s.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*s.size:"string"==typeof e&&(e=parseFloat(e)),e};o("init",(()=>{t=s.params.grid&&s.params.grid.rows>1})),o("update",(()=>{const{params:e,el:i}=s,r=e.grid&&e.grid.rows>1;t&&!r?(i.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,s.emitContainerClasses()):!t&&r&&(i.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&i.classList.add(`${e.containerModifierClass}grid-column`),s.emitContainerClasses()),t=r})),s.grid={initSlides:e=>{const{slidesPerView:t}=s.params,{rows:l,fill:o}=s.params.grid,n=s.virtual&&s.params.virtual.enabled?s.virtual.slides.length:e.length;a=Math.floor(n/l),i=Math.floor(n/l)===n/l?n:Math.ceil(n/l)*l,"auto"!==t&&"row"===o&&(i=Math.max(i,t*l)),r=i/l},unsetSlides:()=>{s.slides&&s.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[s.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,t,l)=>{const{slidesPerGroup:o}=s.params,d=n(),{rows:p,fill:c}=s.params.grid,g=s.virtual&&s.params.virtual.enabled?s.virtual.slides.length:l.length;let u,h,m;if("row"===c&&o>1){const r=Math.floor(e/(o*p)),a=e-p*o*r,s=0===r?o:Math.min(Math.ceil((g-r*p*o)/p),o);m=Math.floor(a/s),h=a-m*s+r*o,u=h+m*i/p,t.style.order=u}else"column"===c?(h=Math.floor(e/p),m=e-h*p,(h>a||h===a&&m===p-1)&&(m+=1,m>=p&&(m=0,h+=1))):(m=Math.floor(e/r),h=e-m*r);t.row=m,t.column=h,t.style.height=`calc((100% - ${(p-1)*d}px) / ${p})`,t.style[s.getDirectionLabel("margin-top")]=0!==m?d&&`${d}px`:"",t.swiperSlideGridSet=!0},updateWrapperSize:(e,r)=>{const{centeredSlides:a,roundLengths:t}=s.params,l=n(),{rows:o}=s.params.grid;if(s.virtualSize=(e+l)*i,s.virtualSize=Math.ceil(s.virtualSize/o)-l,s.params.cssMode||(s.wrapperEl.style[s.getDirectionLabel("width")]=`${s.virtualSize+l}px`),a){const e=[];for(let i=0;i { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; +} + +export { Grid as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid.scss new file mode 100644 index 0000000..136cb65 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/grid.scss @@ -0,0 +1,7 @@ +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation-element.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.less new file mode 100644 index 0000000..be8912a --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.less @@ -0,0 +1,2 @@ +@import url('../swiper-vars.less'); + diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.min.mjs new file mode 100644 index 0000000..0c58eff --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument,a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{e as elementChildren}from"../shared/utils.min.mjs";function HashNavigation(a){let{swiper:e,extendParams:t,emit:s,on:i}=a,n=!1;const r=getDocument(),h=getWindow();t({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(a,t){if(e.virtual&&e.params.virtual.enabled){const a=e.slides.filter((a=>a.getAttribute("data-hash")===t))[0];if(!a)return 0;return parseInt(a.getAttribute("data-swiper-slide-index"),10)}return e.getSlideIndex(elementChildren(e.slidesEl,`.${e.params.slideClass}[data-hash="${t}"], swiper-slide[data-hash="${t}"]`)[0])}}});const d=()=>{s("hashChange");const a=r.location.hash.replace("#",""),t=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex];if(a!==(t?t.getAttribute("data-hash"):"")){const t=e.params.hashNavigation.getSlideIndex(e,a);if(void 0===t||Number.isNaN(t))return;e.slideTo(t)}},l=()=>{if(!n||!e.params.hashNavigation.enabled)return;const a=e.virtual&&e.params.virtual.enabled?e.slidesEl.querySelector(`[data-swiper-slide-index="${e.activeIndex}"]`):e.slides[e.activeIndex],t=a?a.getAttribute("data-hash")||a.getAttribute("data-history"):"";e.params.hashNavigation.replaceState&&h.history&&h.history.replaceState?(h.history.replaceState(null,null,`#${t}`||""),s("hashSet")):(r.location.hash=t||"",s("hashSet"))};i("init",(()=>{e.params.hashNavigation.enabled&&(()=>{if(!e.params.hashNavigation.enabled||e.params.history&&e.params.history.enabled)return;n=!0;const a=r.location.hash.replace("#","");if(a){const t=0,s=e.params.hashNavigation.getSlideIndex(e,a);e.slideTo(s||0,t,e.params.runCallbacksOnInit,!0)}e.params.hashNavigation.watchState&&h.addEventListener("hashchange",d)})()})),i("destroy",(()=>{e.params.hashNavigation.enabled&&e.params.hashNavigation.watchState&&h.removeEventListener("hashchange",d)})),i("transitionEnd _freeModeNoMomentumRelease",(()=>{n&&l()})),i("slideChange",(()=>{n&&e.params.cssMode&&l()}))}export{HashNavigation as default}; +//# sourceMappingURL=hash-navigation.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.min.mjs.map new file mode 100644 index 0000000..373df60 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"hash-navigation.mjs.mjs","names":["getDocument","getWindow","elementChildren","HashNavigation","_ref","swiper","extendParams","emit","on","initialized","document","window","hashNavigation","enabled","replaceState","watchState","getSlideIndex","_s","hash","virtual","params","slideWithHash","slides","filter","slideEl","getAttribute","parseInt","slidesEl","slideClass","onHashChange","newHash","location","replace","activeSlideEl","querySelector","activeIndex","newIndex","Number","isNaN","slideTo","setHash","activeSlideHash","history","speed","index","runCallbacksOnInit","addEventListener","init","removeEventListener","cssMode"],"sources":["0"],"mappings":"YAAcA,iBAAkBC,cAAiB,+CACnCC,oBAAuB,0BAErC,SAASC,eAAeC,GACtB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,KACZA,EAAIC,GACJA,GACEJ,EACAK,GAAc,EAClB,MAAMC,EAAWV,cACXW,EAASV,YACfK,EAAa,CACXM,eAAgB,CACdC,SAAS,EACTC,cAAc,EACdC,YAAY,EACZ,aAAAC,CAAcC,EAAIC,GAChB,GAAIb,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAS,CACnD,MAAMQ,EAAgBhB,EAAOiB,OAAOC,QAAOC,GAAWA,EAAQC,aAAa,eAAiBP,IAAM,GAClG,IAAKG,EAAe,OAAO,EAE3B,OADcK,SAASL,EAAcI,aAAa,2BAA4B,GAEhF,CACA,OAAOpB,EAAOW,cAAcd,gBAAgBG,EAAOsB,SAAU,IAAItB,EAAOe,OAAOQ,yBAAyBV,gCAAmCA,OAAU,GACvJ,KAGJ,MAAMW,EAAe,KACnBtB,EAAK,cACL,MAAMuB,EAAUpB,EAASqB,SAASb,KAAKc,QAAQ,IAAK,IAC9CC,EAAgB5B,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAUR,EAAOsB,SAASO,cAAc,6BAA6B7B,EAAO8B,iBAAmB9B,EAAOiB,OAAOjB,EAAO8B,aAElL,GAAIL,KADoBG,EAAgBA,EAAcR,aAAa,aAAe,IACjD,CAC/B,MAAMW,EAAW/B,EAAOe,OAAOR,eAAeI,cAAcX,EAAQyB,GACpE,QAAwB,IAAbM,GAA4BC,OAAOC,MAAMF,GAAW,OAC/D/B,EAAOkC,QAAQH,EACjB,GAEII,EAAU,KACd,IAAK/B,IAAgBJ,EAAOe,OAAOR,eAAeC,QAAS,OAC3D,MAAMoB,EAAgB5B,EAAOc,SAAWd,EAAOe,OAAOD,QAAQN,QAAUR,EAAOsB,SAASO,cAAc,6BAA6B7B,EAAO8B,iBAAmB9B,EAAOiB,OAAOjB,EAAO8B,aAC5KM,EAAkBR,EAAgBA,EAAcR,aAAa,cAAgBQ,EAAcR,aAAa,gBAAkB,GAC5HpB,EAAOe,OAAOR,eAAeE,cAAgBH,EAAO+B,SAAW/B,EAAO+B,QAAQ5B,cAChFH,EAAO+B,QAAQ5B,aAAa,KAAM,KAAM,IAAI2B,KAAqB,IACjElC,EAAK,aAELG,EAASqB,SAASb,KAAOuB,GAAmB,GAC5ClC,EAAK,WACP,EAoBFC,EAAG,QAAQ,KACLH,EAAOe,OAAOR,eAAeC,SAnBtB,MACX,IAAKR,EAAOe,OAAOR,eAAeC,SAAWR,EAAOe,OAAOsB,SAAWrC,EAAOe,OAAOsB,QAAQ7B,QAAS,OACrGJ,GAAc,EACd,MAAMS,EAAOR,EAASqB,SAASb,KAAKc,QAAQ,IAAK,IACjD,GAAId,EAAM,CACR,MAAMyB,EAAQ,EACRC,EAAQvC,EAAOe,OAAOR,eAAeI,cAAcX,EAAQa,GACjEb,EAAOkC,QAAQK,GAAS,EAAGD,EAAOtC,EAAOe,OAAOyB,oBAAoB,EACtE,CACIxC,EAAOe,OAAOR,eAAeG,YAC/BJ,EAAOmC,iBAAiB,aAAcjB,EACxC,EASEkB,EACF,IAEFvC,EAAG,WAAW,KACRH,EAAOe,OAAOR,eAAeC,SAV7BR,EAAOe,OAAOR,eAAeG,YAC/BJ,EAAOqC,oBAAoB,aAAcnB,EAW3C,IAEFrB,EAAG,4CAA4C,KACzCC,GACF+B,GACF,IAEFhC,EAAG,eAAe,KACZC,GAAeJ,EAAOe,OAAO6B,SAC/BT,GACF,GAEJ,QAESrC"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.mjs new file mode 100644 index 0000000..cf33420 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.mjs @@ -0,0 +1,93 @@ +import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { e as elementChildren } from '../shared/utils.mjs'; + +function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); +} + +export { HashNavigation as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/hash-navigation.scss new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history-element.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.less new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.min.mjs new file mode 100644 index 0000000..b88cbf9 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";function History(e){let{swiper:t,extendParams:a,on:s}=e;a({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let r=!1,i={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=getWindow();let a;a=e?new URL(e):t.location;const s=a.pathname.slice(1).split("/").filter((e=>""!==e)),r=s.length;return{key:s[r-2],value:s[r-1]}},n=(e,a)=>{const s=getWindow();if(!r||!t.params.history.enabled)return;let i;i=t.params.url?new URL(t.params.url):s.location;const o=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${a}"]`):t.slides[a];let n=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let a=t.params.history.root;"/"===a[a.length-1]&&(a=a.slice(0,a.length-1)),n=`${a}/${e?`${e}/`:""}${n}`}else i.pathname.includes(e)||(n=`${e?`${e}/`:""}${n}`);t.params.history.keepQuery&&(n+=i.search);const p=s.history.state;p&&p.value===n||(t.params.history.replaceState?s.history.replaceState({value:n},null,n):s.history.pushState({value:n},null,n))},p=(e,a,s)=>{if(a)for(let r=0,i=t.slides.length;r{i=o(t.params.url),p(t.params.speed,i.value,!1)};s("init",(()=>{t.params.history.enabled&&(()=>{const e=getWindow();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);r=!0,i=o(t.params.url),i.key||i.value?(p(0,i.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",d)):t.params.history.replaceState||e.addEventListener("popstate",d)}})()})),s("destroy",(()=>{t.params.history.enabled&&(()=>{const e=getWindow();t.params.history.replaceState||e.removeEventListener("popstate",d)})()})),s("transitionEnd _freeModeNoMomentumRelease",(()=>{r&&n(t.params.history.key,t.activeIndex)})),s("slideChange",(()=>{r&&t.params.cssMode&&n(t.params.history.key,t.activeIndex)}))}export{History as default}; +//# sourceMappingURL=history.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.min.mjs.map new file mode 100644 index 0000000..821c584 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"history.mjs.mjs","names":["getWindow","History","_ref","swiper","extendParams","on","history","enabled","root","replaceState","key","keepQuery","initialized","paths","slugify","text","toString","replace","getPathValues","urlOverride","window","location","URL","pathArray","pathname","slice","split","filter","part","total","length","value","setHistory","index","params","url","slide","virtual","slidesEl","querySelector","slides","getAttribute","includes","search","currentState","state","pushState","scrollToSlide","speed","runCallbacks","i","getSlideIndex","slideTo","setHistoryPopState","hashNavigation","runCallbacksOnInit","addEventListener","init","removeEventListener","destroy","activeIndex","cssMode"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.mjs new file mode 100644 index 0000000..466c8b8 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.mjs @@ -0,0 +1,142 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; + +function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); +} + +export { History as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/history.scss new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/index.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/index.min.mjs new file mode 100644 index 0000000..41b89c3 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/index.min.mjs @@ -0,0 +1,2 @@ +export{default as Virtual}from"./virtual.min.mjs";export{default as Keyboard}from"./keyboard.min.mjs";export{default as Mousewheel}from"./mousewheel.min.mjs";export{default as Navigation}from"./navigation.min.mjs";export{default as Pagination}from"./pagination.min.mjs";export{default as Scrollbar}from"./scrollbar.min.mjs";export{default as Parallax}from"./parallax.min.mjs";export{default as Zoom}from"./zoom.min.mjs";export{default as Controller}from"./controller.min.mjs";export{default as A11y}from"./a11y.min.mjs";export{default as History}from"./history.min.mjs";export{default as HashNavigation}from"./hash-navigation.min.mjs";export{default as Autoplay}from"./autoplay.min.mjs";export{default as Thumbs}from"./thumbs.min.mjs";export{default as FreeMode}from"./free-mode.min.mjs";export{default as Grid}from"./grid.min.mjs";export{default as Manipulation}from"./manipulation.min.mjs";export{default as EffectFade}from"./effect-fade.min.mjs";export{default as EffectCube}from"./effect-cube.min.mjs";export{default as EffectFlip}from"./effect-flip.min.mjs";export{default as EffectCoverflow}from"./effect-coverflow.min.mjs";export{default as EffectCreative}from"./effect-creative.min.mjs";export{default as EffectCards}from"./effect-cards.min.mjs"; +//# sourceMappingURL=index.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/index.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/index.min.mjs.map new file mode 100644 index 0000000..1492964 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/index.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"index.mjs.mjs","names":[],"sources":["0"],"mappings":"OAAQ,uBAAyB,2BACzB,wBAA0B,4BAC1B,0BAA4B,8BAC5B,0BAA4B,8BAC5B,0BAA4B,8BAC5B,yBAA2B,6BAC3B,wBAA0B,4BAC1B,oBAAsB,wBACtB,0BAA4B,8BAC5B,oBAAsB,wBACtB,uBAAyB,2BACzB,8BAAgC,mCAChC,wBAA0B,4BAC1B,sBAAwB,0BACxB,wBAA0B,6BAC1B,oBAAsB,wBACtB,4BAA8B,gCAC9B,0BAA4B,+BAC5B,0BAA4B,+BAC5B,0BAA4B,+BAC5B,+BAAiC,oCACjC,8BAAgC,mCAChC,2BAA6B"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/index.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/index.mjs new file mode 100644 index 0000000..3186045 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/index.mjs @@ -0,0 +1,23 @@ +export {default as Virtual} from './virtual.mjs'; +export {default as Keyboard} from './keyboard.mjs'; +export {default as Mousewheel} from './mousewheel.mjs'; +export {default as Navigation} from './navigation.mjs'; +export {default as Pagination} from './pagination.mjs'; +export {default as Scrollbar} from './scrollbar.mjs'; +export {default as Parallax} from './parallax.mjs'; +export {default as Zoom} from './zoom.mjs'; +export {default as Controller} from './controller.mjs'; +export {default as A11y} from './a11y.mjs'; +export {default as History} from './history.mjs'; +export {default as HashNavigation} from './hash-navigation.mjs'; +export {default as Autoplay} from './autoplay.mjs'; +export {default as Thumbs} from './thumbs.mjs'; +export {default as FreeMode} from './free-mode.mjs'; +export {default as Grid} from './grid.mjs'; +export {default as Manipulation} from './manipulation.mjs'; +export {default as EffectFade} from './effect-fade.mjs'; +export {default as EffectCube} from './effect-cube.mjs'; +export {default as EffectFlip} from './effect-flip.mjs'; +export {default as EffectCoverflow} from './effect-coverflow.mjs'; +export {default as EffectCreative} from './effect-creative.mjs'; +export {default as EffectCards} from './effect-cards.mjs'; \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard-element.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.less new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.min.mjs new file mode 100644 index 0000000..f1d9d2d --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument,a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{a as elementParents,b as elementOffset}from"../shared/utils.min.mjs";function Keyboard(e){let{swiper:t,extendParams:n,on:a,emit:r}=e;const l=getDocument(),i=getWindow();function o(e){if(!t.enabled)return;const{rtlTranslate:n}=t;let a=e;a.originalEvent&&(a=a.originalEvent);const o=a.keyCode||a.charCode,s=t.params.keyboard.pageUpDown,d=s&&33===o,f=s&&34===o,m=37===o,b=39===o,c=38===o,p=40===o;if(!t.allowSlideNext&&(t.isHorizontal()&&b||t.isVertical()&&p||f))return!1;if(!t.allowSlidePrev&&(t.isHorizontal()&&m||t.isVertical()&&c||d))return!1;if(!(a.shiftKey||a.altKey||a.ctrlKey||a.metaKey||l.activeElement&&l.activeElement.nodeName&&("input"===l.activeElement.nodeName.toLowerCase()||"textarea"===l.activeElement.nodeName.toLowerCase()))){if(t.params.keyboard.onlyInViewport&&(d||f||m||b||c||p)){let e=!1;if(elementParents(t.el,`.${t.params.slideClass}, swiper-slide`).length>0&&0===elementParents(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,r=a.clientWidth,l=a.clientHeight,o=i.innerWidth,s=i.innerHeight,d=elementOffset(a);n&&(d.left-=a.scrollLeft);const f=[[d.left,d.top],[d.left+r,d.top],[d.left,d.top+l],[d.left+r,d.top+l]];for(let t=0;t=0&&n[0]<=o&&n[1]>=0&&n[1]<=s){if(0===n[0]&&0===n[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||f||m||b)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((f||b)&&!n||(d||m)&&n)&&t.slideNext(),((d||m)&&!n||(f||b)&&n)&&t.slidePrev()):((d||f||c||p)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(f||p)&&t.slideNext(),(d||c)&&t.slidePrev()),r("keyPress",o)}}function s(){t.keyboard.enabled||(l.addEventListener("keydown",o),t.keyboard.enabled=!0)}function d(){t.keyboard.enabled&&(l.removeEventListener("keydown",o),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},n({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),a("init",(()=>{t.params.keyboard.enabled&&s()})),a("destroy",(()=>{t.keyboard.enabled&&d()})),Object.assign(t.keyboard,{enable:s,disable:d})}export{Keyboard as default}; +//# sourceMappingURL=keyboard.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.min.mjs.map new file mode 100644 index 0000000..04ab4eb --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"keyboard.mjs.mjs","names":["getDocument","getWindow","elementParents","elementOffset","Keyboard","_ref","swiper","extendParams","on","emit","document","window","handle","event","enabled","rtlTranslate","rtl","e","originalEvent","kc","keyCode","charCode","pageUpDown","params","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","allowSlideNext","isHorizontal","isVertical","allowSlidePrev","shiftKey","altKey","ctrlKey","metaKey","activeElement","nodeName","toLowerCase","onlyInViewport","inView","el","slideClass","length","slideActiveClass","swiperWidth","clientWidth","swiperHeight","clientHeight","windowWidth","innerWidth","windowHeight","innerHeight","swiperOffset","left","scrollLeft","swiperCoord","top","i","point","preventDefault","returnValue","slideNext","slidePrev","enable","addEventListener","disable","removeEventListener","Object","assign"],"sources":["0"],"mappings":"YAAcA,iBAAkBC,cAAiB,+CACnCC,oBAAqBC,kBAAqB,0BAGxD,SAASC,SAASC,GAChB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,EAAEC,KACFA,GACEJ,EACJ,MAAMK,EAAWV,cACXW,EAASV,YAWf,SAASW,EAAOC,GACd,IAAKP,EAAOQ,QAAS,OACrB,MACEC,aAAcC,GACZV,EACJ,IAAIW,EAAIJ,EACJI,EAAEC,gBAAeD,EAAIA,EAAEC,eAC3B,MAAMC,EAAKF,EAAEG,SAAWH,EAAEI,SACpBC,EAAahB,EAAOiB,OAAOC,SAASF,WACpCG,EAAWH,GAAqB,KAAPH,EACzBO,EAAaJ,GAAqB,KAAPH,EAC3BQ,EAAqB,KAAPR,EACdS,EAAsB,KAAPT,EACfU,EAAmB,KAAPV,EACZW,EAAqB,KAAPX,EAEpB,IAAKb,EAAOyB,iBAAmBzB,EAAO0B,gBAAkBJ,GAAgBtB,EAAO2B,cAAgBH,GAAeJ,GAC5G,OAAO,EAET,IAAKpB,EAAO4B,iBAAmB5B,EAAO0B,gBAAkBL,GAAerB,EAAO2B,cAAgBJ,GAAaJ,GACzG,OAAO,EAET,KAAIR,EAAEkB,UAAYlB,EAAEmB,QAAUnB,EAAEoB,SAAWpB,EAAEqB,SAGzC5B,EAAS6B,eAAiB7B,EAAS6B,cAAcC,WAA+D,UAAlD9B,EAAS6B,cAAcC,SAASC,eAA+E,aAAlD/B,EAAS6B,cAAcC,SAASC,gBAA/J,CAGA,GAAInC,EAAOiB,OAAOC,SAASkB,iBAAmBjB,GAAYC,GAAcC,GAAeC,GAAgBC,GAAaC,GAAc,CAChI,IAAIa,GAAS,EAEb,GAAIzC,eAAeI,EAAOsC,GAAI,IAAItC,EAAOiB,OAAOsB,4BAA4BC,OAAS,GAAgF,IAA3E5C,eAAeI,EAAOsC,GAAI,IAAItC,EAAOiB,OAAOwB,oBAAoBD,OACxJ,OAEF,MAAMF,EAAKtC,EAAOsC,GACZI,EAAcJ,EAAGK,YACjBC,EAAeN,EAAGO,aAClBC,EAAczC,EAAO0C,WACrBC,EAAe3C,EAAO4C,YACtBC,EAAerD,cAAcyC,GAC/B5B,IAAKwC,EAAaC,MAAQb,EAAGc,YACjC,MAAMC,EAAc,CAAC,CAACH,EAAaC,KAAMD,EAAaI,KAAM,CAACJ,EAAaC,KAAOT,EAAaQ,EAAaI,KAAM,CAACJ,EAAaC,KAAMD,EAAaI,IAAMV,GAAe,CAACM,EAAaC,KAAOT,EAAaQ,EAAaI,IAAMV,IAC5N,IAAK,IAAIW,EAAI,EAAGA,EAAIF,EAAYb,OAAQe,GAAK,EAAG,CAC9C,MAAMC,EAAQH,EAAYE,GAC1B,GAAIC,EAAM,IAAM,GAAKA,EAAM,IAAMV,GAAeU,EAAM,IAAM,GAAKA,EAAM,IAAMR,EAAc,CACzF,GAAiB,IAAbQ,EAAM,IAAyB,IAAbA,EAAM,GAAU,SACtCnB,GAAS,CACX,CACF,CACA,IAAKA,EAAQ,MACf,CACIrC,EAAO0B,iBACLP,GAAYC,GAAcC,GAAeC,KACvCX,EAAE8C,eAAgB9C,EAAE8C,iBAAsB9C,EAAE+C,aAAc,KAE3DtC,GAAcE,KAAkBZ,IAAQS,GAAYE,IAAgBX,IAAKV,EAAO2D,cAChFxC,GAAYE,KAAiBX,IAAQU,GAAcE,IAAiBZ,IAAKV,EAAO4D,eAEjFzC,GAAYC,GAAcG,GAAaC,KACrCb,EAAE8C,eAAgB9C,EAAE8C,iBAAsB9C,EAAE+C,aAAc,IAE5DtC,GAAcI,IAAaxB,EAAO2D,aAClCxC,GAAYI,IAAWvB,EAAO4D,aAEpCzD,EAAK,WAAYU,EArCjB,CAuCF,CACA,SAASgD,IACH7D,EAAOkB,SAASV,UACpBJ,EAAS0D,iBAAiB,UAAWxD,GACrCN,EAAOkB,SAASV,SAAU,EAC5B,CACA,SAASuD,IACF/D,EAAOkB,SAASV,UACrBJ,EAAS4D,oBAAoB,UAAW1D,GACxCN,EAAOkB,SAASV,SAAU,EAC5B,CAtFAR,EAAOkB,SAAW,CAChBV,SAAS,GAEXP,EAAa,CACXiB,SAAU,CACRV,SAAS,EACT4B,gBAAgB,EAChBpB,YAAY,KAgFhBd,EAAG,QAAQ,KACLF,EAAOiB,OAAOC,SAASV,SACzBqD,GACF,IAEF3D,EAAG,WAAW,KACRF,EAAOkB,SAASV,SAClBuD,GACF,IAEFE,OAAOC,OAAOlE,EAAOkB,SAAU,CAC7B2C,SACAE,WAEJ,QAESjE"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.mjs new file mode 100644 index 0000000..ba62a46 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.mjs @@ -0,0 +1,117 @@ +import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { a as elementParents, b as elementOffset } from '../shared/utils.mjs'; + +/* eslint-disable consistent-return */ +function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); +} + +export { Keyboard as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/keyboard.scss new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/manipulation-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/manipulation-element.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/manipulation-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/manipulation-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/manipulation.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/manipulation.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/manipulation.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/manipulation.less new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/manipulation.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/manipulation.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/manipulation.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/manipulation.min.mjs new file mode 100644 index 0000000..1b7832f --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/manipulation.min.mjs @@ -0,0 +1,2 @@ +function appendSlide(e){const l=this,{params:o,slidesEl:i}=l;o.loop&&l.loopDestroy();const t=e=>{if("string"==typeof e){const l=document.createElement("div");l.innerHTML=e,i.append(l.children[0]),l.innerHTML=""}else i.append(e)};if("object"==typeof e&&"length"in e)for(let l=0;l{if("string"==typeof e){const l=document.createElement("div");l.innerHTML=e,t.prepend(l.children[0]),l.innerHTML=""}else t.prepend(e)};if("object"==typeof e&&"length"in e){for(let l=0;l=s)return void o.appendSlide(l);let p=d>e?d+1:d;const r=[];for(let l=s-1;l>=e;l-=1){const e=o.slides[l];e.remove(),r.unshift(e)}if("object"==typeof l&&"length"in l){for(let e=0;ee?d+l.length:d}else n.append(l);for(let e=0;e { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } +} + +function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); +} + +function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } +} + +function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); +} + +function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); +} + +export { Manipulation as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/manipulation.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/manipulation.scss new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel-element.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.less new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.min.mjs new file mode 100644 index 0000000..312e9b6 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{n as nextTick,d as now}from"../shared/utils.min.mjs";function Mousewheel(e){let{swiper:t,extendParams:a,on:s,emit:n}=e;const l=getWindow();let i;a({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let r,o=now();const d=[];function m(){t.enabled&&(t.mouseEntered=!0)}function p(){t.enabled&&(t.mouseEntered=!1)}function u(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&now()-o<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),n("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),n("scroll",e.raw)),o=(new l.Date).getTime(),!1)))}function h(e){let a=e,s=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const l=t.params.mousewheel;t.params.cssMode&&a.preventDefault();let o=t.el;"container"!==t.params.mousewheel.eventsTarget&&(o=document.querySelector(t.params.mousewheel.eventsTarget));const m=o&&o.contains(a.target);if(!t.mouseEntered&&!m&&!l.releaseOnEdges)return!0;a.originalEvent&&(a=a.originalEvent);let p=0;const h=t.rtlTranslate?-1:1,c=function(e){let t=0,a=0,s=0,n=0;return"detail"in e&&(a=e.detail),"wheelDelta"in e&&(a=-e.wheelDelta/120),"wheelDeltaY"in e&&(a=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=a,a=0),s=10*t,n=10*a,"deltaY"in e&&(n=e.deltaY),"deltaX"in e&&(s=e.deltaX),e.shiftKey&&!s&&(s=n,n=0),(s||n)&&e.deltaMode&&(1===e.deltaMode?(s*=40,n*=40):(s*=800,n*=800)),s&&!t&&(t=s<1?-1:1),n&&!a&&(a=n<1?-1:1),{spinX:t,spinY:a,pixelX:s,pixelY:n}}(a);if(l.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(c.pixelX)>Math.abs(c.pixelY)))return!0;p=-c.pixelX*h}else{if(!(Math.abs(c.pixelY)>Math.abs(c.pixelX)))return!0;p=-c.pixelY}else p=Math.abs(c.pixelX)>Math.abs(c.pixelY)?-c.pixelX*h:-c.pixelY;if(0===p)return!0;l.invert&&(p=-p);let w=t.getTranslate()+p*l.sensitivity;if(w>=t.minTranslate()&&(w=t.minTranslate()),w<=t.maxTranslate()&&(w=t.maxTranslate()),s=!!t.params.loop||!(w===t.minTranslate()||w===t.maxTranslate()),s&&t.params.nested&&a.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:now(),delta:Math.abs(p),direction:Math.sign(p)},s=r&&e.time=t.minTranslate()&&(o=t.minTranslate()),o<=t.maxTranslate()&&(o=t.maxTranslate()),t.setTransition(0),t.setTranslate(o),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!m&&t.isBeginning||!u&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(i),i=void 0,d.length>=15&&d.shift();const a=d.length?d[d.length-1]:void 0,s=d[0];if(d.push(e),a&&(e.delta>a.delta||e.direction!==a.direction))d.splice(0);else if(d.length>=15&&e.time-s.time<500&&s.delta-e.delta>=1&&e.delta<=6){const a=p>0?.8:.2;r=e,d.splice(0),i=nextTick((()=>{t.slideToClosest(t.params.speed,!0,void 0,a)}),0)}i||(i=nextTick((()=>{r=e,d.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(s||n("scroll",a),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),l.releaseOnEdges&&(o===t.minTranslate()||o===t.maxTranslate()))return!0}}else{const a={time:now(),delta:Math.abs(p),direction:Math.sign(p),raw:e};d.length>=2&&d.shift();const s=d.length?d[d.length-1]:void 0;if(d.push(a),s?(a.direction!==s.direction||a.delta>s.delta||a.time>s.time+150)&&u(a):u(a),function(e){const a=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&a.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&a.releaseOnEdges)return!0;return!1}(a))return!0}return a.preventDefault?a.preventDefault():a.returnValue=!1,!1}function c(e){let a=t.el;"container"!==t.params.mousewheel.eventsTarget&&(a=document.querySelector(t.params.mousewheel.eventsTarget)),a[e]("mouseenter",m),a[e]("mouseleave",p),a[e]("wheel",h)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",h),!0):!t.mousewheel.enabled&&(c("addEventListener"),t.mousewheel.enabled=!0,!0)}function f(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,h),!0):!!t.mousewheel.enabled&&(c("removeEventListener"),t.mousewheel.enabled=!1,!0)}s("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&f(),t.params.mousewheel.enabled&&w()})),s("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&f()})),Object.assign(t.mousewheel,{enable:w,disable:f})}export{Mousewheel as default}; +//# sourceMappingURL=mousewheel.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.min.mjs.map new file mode 100644 index 0000000..678fdba --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"mousewheel.mjs.mjs","names":["getWindow","nextTick","now","Mousewheel","_ref","swiper","extendParams","on","emit","window","timeout","mousewheel","enabled","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","params","delta","direction","isEnd","loop","animating","slideNext","raw","isBeginning","slidePrev","Date","getTime","handle","event","e","disableParentSwiper","target","closest","cssMode","preventDefault","targetEl","el","document","querySelector","targetElContainsTarget","contains","originalEvent","rtlFactor","rtlTranslate","data","sX","sY","pX","pY","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaY","deltaX","shiftKey","deltaMode","spinX","spinY","pixelX","pixelY","normalize","isHorizontal","Math","abs","positions","getTranslate","minTranslate","maxTranslate","nested","stopPropagation","freeMode","time","sign","ignoreWheelEvents","undefined","position","wasBeginning","wasEnd","setTransition","setTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","loopFix","byMousewheel","sticky","clearTimeout","length","shift","prevEvent","firstEvent","push","splice","snapToThreshold","slideToClosest","speed","autoplay","autoplayDisableOnInteraction","stop","releaseScroll","returnValue","events","method","enable","wrapperEl","removeEventListener","disable","addEventListener","Object","assign"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.mjs new file mode 100644 index 0000000..28c4d2e --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.mjs @@ -0,0 +1,393 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { n as nextTick, d as now } from '../shared/utils.mjs'; + +/* eslint-disable consistent-return */ +function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); +} + +export { Mousewheel as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/mousewheel.scss new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation-element.css new file mode 100644 index 0000000..46a2918 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation-element.css @@ -0,0 +1,63 @@ +:host { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start *//* Navigation font end */ diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation-element.min.css new file mode 100644 index 0000000..70d1870 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation-element.min.css @@ -0,0 +1 @@ +:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.css new file mode 100644 index 0000000..a287b8a --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.css @@ -0,0 +1,86 @@ +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev:after, +.swiper-button-next:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; +} +.swiper-button-prev:after, +.swiper-rtl .swiper-button-next:after { + content: 'prev'; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-next:after, +.swiper-rtl .swiper-button-prev:after { + content: 'next'; +} +/* Navigation font end */ diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.less new file mode 100644 index 0000000..5243fe6 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.less @@ -0,0 +1,86 @@ +@import url('../swiper-vars.less'); + +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; + } + .swiper-rtl & svg { + transform: rotate(180deg); + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev, +.swiper-button-next { + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + &:after { + content: 'prev'; + } +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + &:after { + content: 'next'; + } + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +/* Navigation font end */ diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.min.css new file mode 100644 index 0000000..d93c5d8 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.min.css @@ -0,0 +1 @@ +:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.min.mjs new file mode 100644 index 0000000..c8880dd --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.min.mjs @@ -0,0 +1,2 @@ +import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{m as makeElementsArray}from"../shared/utils.min.mjs";function Navigation(a){let{swiper:e,extendParams:n,on:i,emit:t}=a;function s(a){let n;return a&&"string"==typeof a&&e.isElement&&(n=e.el.querySelector(a),n)?n:(a&&("string"==typeof a&&(n=[...document.querySelectorAll(a)]),e.params.uniqueNavElements&&"string"==typeof a&&n&&n.length>1&&1===e.el.querySelectorAll(a).length?n=e.el.querySelector(a):n&&1===n.length&&(n=n[0])),a&&!n?a:n)}function l(a,n){const i=e.params.navigation;(a=makeElementsArray(a)).forEach((a=>{a&&(a.classList[n?"add":"remove"](...i.disabledClass.split(" ")),"BUTTON"===a.tagName&&(a.disabled=n),e.params.watchOverflow&&e.enabled&&a.classList[e.isLocked?"add":"remove"](i.lockClass))}))}function r(){const{nextEl:a,prevEl:n}=e.navigation;if(e.params.loop)return l(n,!1),void l(a,!1);l(n,e.isBeginning&&!e.params.rewind),l(a,e.isEnd&&!e.params.rewind)}function o(a){a.preventDefault(),(!e.isBeginning||e.params.loop||e.params.rewind)&&(e.slidePrev(),t("navigationPrev"))}function d(a){a.preventDefault(),(!e.isEnd||e.params.loop||e.params.rewind)&&(e.slideNext(),t("navigationNext"))}function c(){const a=e.params.navigation;if(e.params.navigation=createElementIfNotDefined(e,e.originalParams.navigation,e.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!a.nextEl&&!a.prevEl)return;let n=s(a.nextEl),i=s(a.prevEl);Object.assign(e.navigation,{nextEl:n,prevEl:i}),n=makeElementsArray(n),i=makeElementsArray(i);const t=(n,i)=>{n&&n.addEventListener("click","next"===i?d:o),!e.enabled&&n&&n.classList.add(...a.lockClass.split(" "))};n.forEach((a=>t(a,"next"))),i.forEach((a=>t(a,"prev")))}function m(){let{nextEl:a,prevEl:n}=e.navigation;a=makeElementsArray(a),n=makeElementsArray(n);const i=(a,n)=>{a.removeEventListener("click","next"===n?d:o),a.classList.remove(...e.params.navigation.disabledClass.split(" "))};a.forEach((a=>i(a,"next"))),n.forEach((a=>i(a,"prev")))}n({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),e.navigation={nextEl:null,prevEl:null},i("init",(()=>{!1===e.params.navigation.enabled?p():(c(),r())})),i("toEdge fromEdge lock unlock",(()=>{r()})),i("destroy",(()=>{m()})),i("enable disable",(()=>{let{nextEl:a,prevEl:n}=e.navigation;a=makeElementsArray(a),n=makeElementsArray(n),e.enabled?r():[...a,...n].filter((a=>!!a)).forEach((a=>a.classList.add(e.params.navigation.lockClass)))})),i("click",((a,n)=>{let{nextEl:i,prevEl:s}=e.navigation;i=makeElementsArray(i),s=makeElementsArray(s);const l=n.target;let r=s.includes(l)||i.includes(l);if(e.isElement&&!r){const a=n.path||n.composedPath&&n.composedPath();a&&(r=a.find((a=>i.includes(a)||s.includes(a))))}if(e.params.navigation.hideOnClick&&!r){if(e.pagination&&e.params.pagination&&e.params.pagination.clickable&&(e.pagination.el===l||e.pagination.el.contains(l)))return;let a;i.length?a=i[0].classList.contains(e.params.navigation.hiddenClass):s.length&&(a=s[0].classList.contains(e.params.navigation.hiddenClass)),t(!0===a?"navigationShow":"navigationHide"),[...i,...s].filter((a=>!!a)).forEach((a=>a.classList.toggle(e.params.navigation.hiddenClass)))}}));const p=()=>{e.el.classList.add(...e.params.navigation.navigationDisabledClass.split(" ")),m()};Object.assign(e.navigation,{enable:()=>{e.el.classList.remove(...e.params.navigation.navigationDisabledClass.split(" ")),c(),r()},disable:p,update:r,init:c,destroy:m})}export{Navigation as default}; +//# sourceMappingURL=navigation.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.min.mjs.map new file mode 100644 index 0000000..8b5bbb2 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"navigation.mjs.mjs","names":["createElementIfNotDefined","makeElementsArray","Navigation","_ref","swiper","extendParams","on","emit","getEl","el","res","isElement","querySelector","document","querySelectorAll","params","uniqueNavElements","length","toggleEl","disabled","navigation","forEach","subEl","classList","disabledClass","split","tagName","watchOverflow","enabled","isLocked","lockClass","update","nextEl","prevEl","loop","isBeginning","rewind","isEnd","onPrevClick","e","preventDefault","slidePrev","onNextClick","slideNext","init","originalParams","Object","assign","initButton","dir","addEventListener","add","destroy","destroyButton","removeEventListener","remove","hideOnClick","hiddenClass","navigationDisabledClass","disable","filter","_s","targetEl","target","targetIsButton","includes","path","composedPath","find","pathEl","pagination","clickable","contains","isHidden","toggle","enable"],"sources":["0"],"mappings":"YAAcA,8BAAiC,8DACjCC,sBAAyB,0BAEvC,SAASC,WAAWC,GAClB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,EAAEC,KACFA,GACEJ,EAgBJ,SAASK,EAAMC,GACb,IAAIC,EACJ,OAAID,GAAoB,iBAAPA,GAAmBL,EAAOO,YACzCD,EAAMN,EAAOK,GAAGG,cAAcH,GAC1BC,GAAYA,GAEdD,IACgB,iBAAPA,IAAiBC,EAAM,IAAIG,SAASC,iBAAiBL,KAC5DL,EAAOW,OAAOC,mBAAmC,iBAAPP,GAAmBC,GAAOA,EAAIO,OAAS,GAA+C,IAA1Cb,EAAOK,GAAGK,iBAAiBL,GAAIQ,OACvHP,EAAMN,EAAOK,GAAGG,cAAcH,GACrBC,GAAsB,IAAfA,EAAIO,SACpBP,EAAMA,EAAI,KAGVD,IAAOC,EAAYD,EAEhBC,EACT,CACA,SAASQ,EAAST,EAAIU,GACpB,MAAMJ,EAASX,EAAOW,OAAOK,YAC7BX,EAAKR,kBAAkBQ,IACpBY,SAAQC,IACLA,IACFA,EAAMC,UAAUJ,EAAW,MAAQ,aAAaJ,EAAOS,cAAcC,MAAM,MACrD,WAAlBH,EAAMI,UAAsBJ,EAAMH,SAAWA,GAC7Cf,EAAOW,OAAOY,eAAiBvB,EAAOwB,SACxCN,EAAMC,UAAUnB,EAAOyB,SAAW,MAAQ,UAAUd,EAAOe,WAE/D,GAEJ,CACA,SAASC,IAEP,MAAMC,OACJA,EAAMC,OACNA,GACE7B,EAAOgB,WACX,GAAIhB,EAAOW,OAAOmB,KAGhB,OAFAhB,EAASe,GAAQ,QACjBf,EAASc,GAAQ,GAGnBd,EAASe,EAAQ7B,EAAO+B,cAAgB/B,EAAOW,OAAOqB,QACtDlB,EAASc,EAAQ5B,EAAOiC,QAAUjC,EAAOW,OAAOqB,OAClD,CACA,SAASE,EAAYC,GACnBA,EAAEC,mBACEpC,EAAO+B,aAAgB/B,EAAOW,OAAOmB,MAAS9B,EAAOW,OAAOqB,UAChEhC,EAAOqC,YACPlC,EAAK,kBACP,CACA,SAASmC,EAAYH,GACnBA,EAAEC,mBACEpC,EAAOiC,OAAUjC,EAAOW,OAAOmB,MAAS9B,EAAOW,OAAOqB,UAC1DhC,EAAOuC,YACPpC,EAAK,kBACP,CACA,SAASqC,IACP,MAAM7B,EAASX,EAAOW,OAAOK,WAK7B,GAJAhB,EAAOW,OAAOK,WAAapB,0BAA0BI,EAAQA,EAAOyC,eAAezB,WAAYhB,EAAOW,OAAOK,WAAY,CACvHY,OAAQ,qBACRC,OAAQ,wBAEJlB,EAAOiB,SAAUjB,EAAOkB,OAAS,OACvC,IAAID,EAASxB,EAAMO,EAAOiB,QACtBC,EAASzB,EAAMO,EAAOkB,QAC1Ba,OAAOC,OAAO3C,EAAOgB,WAAY,CAC/BY,SACAC,WAEFD,EAAS/B,kBAAkB+B,GAC3BC,EAAShC,kBAAkBgC,GAC3B,MAAMe,EAAa,CAACvC,EAAIwC,KAClBxC,GACFA,EAAGyC,iBAAiB,QAAiB,SAARD,EAAiBP,EAAcJ,IAEzDlC,EAAOwB,SAAWnB,GACrBA,EAAGc,UAAU4B,OAAOpC,EAAOe,UAAUL,MAAM,KAC7C,EAEFO,EAAOX,SAAQZ,GAAMuC,EAAWvC,EAAI,UACpCwB,EAAOZ,SAAQZ,GAAMuC,EAAWvC,EAAI,SACtC,CACA,SAAS2C,IACP,IAAIpB,OACFA,EAAMC,OACNA,GACE7B,EAAOgB,WACXY,EAAS/B,kBAAkB+B,GAC3BC,EAAShC,kBAAkBgC,GAC3B,MAAMoB,EAAgB,CAAC5C,EAAIwC,KACzBxC,EAAG6C,oBAAoB,QAAiB,SAARL,EAAiBP,EAAcJ,GAC/D7B,EAAGc,UAAUgC,UAAUnD,EAAOW,OAAOK,WAAWI,cAAcC,MAAM,KAAK,EAE3EO,EAAOX,SAAQZ,GAAM4C,EAAc5C,EAAI,UACvCwB,EAAOZ,SAAQZ,GAAM4C,EAAc5C,EAAI,SACzC,CA/GAJ,EAAa,CACXe,WAAY,CACVY,OAAQ,KACRC,OAAQ,KACRuB,aAAa,EACbhC,cAAe,yBACfiC,YAAa,uBACb3B,UAAW,qBACX4B,wBAAyB,gCAG7BtD,EAAOgB,WAAa,CAClBY,OAAQ,KACRC,OAAQ,MAmGV3B,EAAG,QAAQ,MACgC,IAArCF,EAAOW,OAAOK,WAAWQ,QAE3B+B,KAEAf,IACAb,IACF,IAEFzB,EAAG,+BAA+B,KAChCyB,GAAQ,IAEVzB,EAAG,WAAW,KACZ8C,GAAS,IAEX9C,EAAG,kBAAkB,KACnB,IAAI0B,OACFA,EAAMC,OACNA,GACE7B,EAAOgB,WACXY,EAAS/B,kBAAkB+B,GAC3BC,EAAShC,kBAAkBgC,GACvB7B,EAAOwB,QACTG,IAGF,IAAIC,KAAWC,GAAQ2B,QAAOnD,KAAQA,IAAIY,SAAQZ,GAAMA,EAAGc,UAAU4B,IAAI/C,EAAOW,OAAOK,WAAWU,YAAW,IAE/GxB,EAAG,SAAS,CAACuD,EAAItB,KACf,IAAIP,OACFA,EAAMC,OACNA,GACE7B,EAAOgB,WACXY,EAAS/B,kBAAkB+B,GAC3BC,EAAShC,kBAAkBgC,GAC3B,MAAM6B,EAAWvB,EAAEwB,OACnB,IAAIC,EAAiB/B,EAAOgC,SAASH,IAAa9B,EAAOiC,SAASH,GAClE,GAAI1D,EAAOO,YAAcqD,EAAgB,CACvC,MAAME,EAAO3B,EAAE2B,MAAQ3B,EAAE4B,cAAgB5B,EAAE4B,eACvCD,IACFF,EAAiBE,EAAKE,MAAKC,GAAUrC,EAAOiC,SAASI,IAAWpC,EAAOgC,SAASI,KAEpF,CACA,GAAIjE,EAAOW,OAAOK,WAAWoC,cAAgBQ,EAAgB,CAC3D,GAAI5D,EAAOkE,YAAclE,EAAOW,OAAOuD,YAAclE,EAAOW,OAAOuD,WAAWC,YAAcnE,EAAOkE,WAAW7D,KAAOqD,GAAY1D,EAAOkE,WAAW7D,GAAG+D,SAASV,IAAY,OAC3K,IAAIW,EACAzC,EAAOf,OACTwD,EAAWzC,EAAO,GAAGT,UAAUiD,SAASpE,EAAOW,OAAOK,WAAWqC,aACxDxB,EAAOhB,SAChBwD,EAAWxC,EAAO,GAAGV,UAAUiD,SAASpE,EAAOW,OAAOK,WAAWqC,cAGjElD,GADe,IAAbkE,EACG,iBAEA,kBAEP,IAAIzC,KAAWC,GAAQ2B,QAAOnD,KAAQA,IAAIY,SAAQZ,GAAMA,EAAGc,UAAUmD,OAAOtE,EAAOW,OAAOK,WAAWqC,cACvG,KAEF,MAKME,EAAU,KACdvD,EAAOK,GAAGc,UAAU4B,OAAO/C,EAAOW,OAAOK,WAAWsC,wBAAwBjC,MAAM,MAClF2B,GAAS,EAEXN,OAAOC,OAAO3C,EAAOgB,WAAY,CAC/BuD,OAVa,KACbvE,EAAOK,GAAGc,UAAUgC,UAAUnD,EAAOW,OAAOK,WAAWsC,wBAAwBjC,MAAM,MACrFmB,IACAb,GAAQ,EAQR4B,UACA5B,SACAa,OACAQ,WAEJ,QAESlD"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.mjs new file mode 100644 index 0000000..3c23caf --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.mjs @@ -0,0 +1,200 @@ +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { m as makeElementsArray } from '../shared/utils.mjs'; + +function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } else if (res && res.length === 1) { + res = res[0]; + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); + if (swiper.isElement && !targetIsButton) { + const path = e.path || e.composedPath && e.composedPath(); + if (path) { + targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); + } + } + if (swiper.params.navigation.hideOnClick && !targetIsButton) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); +} + +export { Navigation as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.scss new file mode 100644 index 0000000..f0ab8ce --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/navigation.scss @@ -0,0 +1,87 @@ +@import '../swiper-vars.scss'; +@at-root { + :root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ + } +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); + &.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; + } + &.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; + } + .swiper-navigation-disabled & { + display: none !important; + } + svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; + } + .swiper-rtl & svg { + transform: rotate(180deg); + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev, +.swiper-button-next { + &:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; + } +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + &:after { + content: 'prev'; + } +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; + &:after { + content: 'next'; + } +} +/* Navigation font end */ diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination-element.css new file mode 100644 index 0000000..cae824f --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination-element.css @@ -0,0 +1,184 @@ +:host { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination-element.min.css new file mode 100644 index 0000000..398a345 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination-element.min.css @@ -0,0 +1 @@ +.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.css new file mode 100644 index 0000000..20bda39 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.css @@ -0,0 +1,184 @@ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.less new file mode 100644 index 0000000..202e40c --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.less @@ -0,0 +1,187 @@ +@import url('../swiper-vars.less'); + +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + button& { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: + 200ms transform, + 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.min.css new file mode 100644 index 0000000..398a345 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.min.css @@ -0,0 +1 @@ +.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.min.mjs new file mode 100644 index 0000000..0db352f --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.min.mjs @@ -0,0 +1,2 @@ +import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{m as makeElementsArray,f as elementOuterSize,h as elementIndex,a as elementParents}from"../shared/utils.min.mjs";function Pagination(e){let{swiper:a,extendParams:s,on:l,emit:t}=e;const i="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${i}-bullet`,bulletActiveClass:`${i}-bullet-active`,modifierClass:`${i}-`,currentClass:`${i}-current`,totalClass:`${i}-total`,hiddenClass:`${i}-hidden`,progressbarFillClass:`${i}-progressbar-fill`,progressbarOppositeClass:`${i}-progressbar-opposite`,clickableClass:`${i}-clickable`,lockClass:`${i}-lock`,horizontalClass:`${i}-horizontal`,verticalClass:`${i}-vertical`,paginationDisabledClass:`${i}-disabled`}}),a.pagination={el:null,bullets:[]};let r=0;function o(){return!a.params.pagination.el||!a.pagination.el||Array.isArray(a.pagination.el)&&0===a.pagination.el.length}function p(e,s){const{bulletActiveClass:l}=a.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${l}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${l}-${s}-${s}`))}function c(e){const s=e.target.closest(classesToSelector(a.params.pagination.bulletClass));if(!s)return;e.preventDefault();const l=elementIndex(s)*a.params.slidesPerGroup;if(a.params.loop){if(a.realIndex===l)return;a.slideToLoop(l)}else a.slideTo(l)}function d(){const e=a.rtl,s=a.params.pagination;if(o())return;let l,i,c=a.pagination.el;c=makeElementsArray(c);const d=a.virtual&&a.params.virtual.enabled?a.virtual.slides.length:a.slides.length,m=a.params.loop?Math.ceil(d/a.params.slidesPerGroup):a.snapGrid.length;if(a.params.loop?(i=a.previousRealIndex||0,l=a.params.slidesPerGroup>1?Math.floor(a.realIndex/a.params.slidesPerGroup):a.realIndex):void 0!==a.snapIndex?(l=a.snapIndex,i=a.previousSnapIndex):(i=a.previousIndex||0,l=a.activeIndex||0),"bullets"===s.type&&a.pagination.bullets&&a.pagination.bullets.length>0){const t=a.pagination.bullets;let o,d,m;if(s.dynamicBullets&&(n=elementOuterSize(t[0],a.isHorizontal()?"width":"height",!0),c.forEach((e=>{e.style[a.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==i&&(r+=l-(i||0),r>s.dynamicMainBullets-1?r=s.dynamicMainBullets-1:r<0&&(r=0)),o=Math.max(l-r,0),d=o+(Math.min(t.length,s.dynamicMainBullets)-1),m=(d+o)/2),t.forEach((e=>{const a=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...a)})),c.length>1)t.forEach((e=>{const t=elementIndex(e);t===l?e.classList.add(...s.bulletActiveClass.split(" ")):a.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(t>=o&&t<=d&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),t===o&&p(e,"prev"),t===d&&p(e,"next"))}));else{const e=t[l];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),a.isElement&&t.forEach(((e,a)=>{e.setAttribute("part",a===l?"bullet-active":"bullet")})),s.dynamicBullets){const e=t[o],a=t[d];for(let e=o;e<=d;e+=1)t[e]&&t[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));p(e,"prev"),p(a,"next")}}if(s.dynamicBullets){const l=Math.min(t.length,s.dynamicMainBullets+4),i=(n*l-n)/2-m*n,r=e?"right":"left";t.forEach((e=>{e.style[a.isHorizontal()?r:"top"]=`${i}px`}))}}c.forEach(((e,i)=>{if("fraction"===s.type&&(e.querySelectorAll(classesToSelector(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(l+1)})),e.querySelectorAll(classesToSelector(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(m)}))),"progressbar"===s.type){let t;t=s.progressbarOpposite?a.isHorizontal()?"vertical":"horizontal":a.isHorizontal()?"horizontal":"vertical";const i=(l+1)/m;let n=1,r=1;"horizontal"===t?n=i:r=i,e.querySelectorAll(classesToSelector(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${r})`,e.style.transitionDuration=`${a.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(a,l+1,m),0===i&&t("paginationRender",e)):(0===i&&t("paginationRender",e),t("paginationUpdate",e)),a.params.watchOverflow&&a.enabled&&e.classList[a.isLocked?"add":"remove"](s.lockClass)}))}function m(){const e=a.params.pagination;if(o())return;const s=a.virtual&&a.params.virtual.enabled?a.virtual.slides.length:a.grid&&a.params.grid.rows>1?a.slides.length/Math.ceil(a.params.grid.rows):a.slides.length;let l=a.pagination.el;l=makeElementsArray(l);let i="";if("bullets"===e.type){let l=a.params.loop?Math.ceil(s/a.params.slidesPerGroup):a.snapGrid.length;a.params.freeMode&&a.params.freeMode.enabled&&l>s&&(l=s);for(let s=0;s`}"fraction"===e.type&&(i=e.renderFraction?e.renderFraction.call(a,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(i=e.renderProgressbar?e.renderProgressbar.call(a,e.progressbarFillClass):``),a.pagination.bullets=[],l.forEach((s=>{"custom"!==e.type&&(s.innerHTML=i||""),"bullets"===e.type&&a.pagination.bullets.push(...s.querySelectorAll(classesToSelector(e.bulletClass)))})),"custom"!==e.type&&t("paginationRender",l[0])}function u(){a.params.pagination=createElementIfNotDefined(a,a.originalParams.pagination,a.params.pagination,{el:"swiper-pagination"});const e=a.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&a.isElement&&(s=a.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(a.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...a.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>elementParents(e,".swiper")[0]===a.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(a.pagination,{el:s}),s=makeElementsArray(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(a.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),r=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",c),a.enabled||s.classList.add(e.lockClass)})))}function g(){const e=a.params.pagination;if(o())return;let s=a.pagination.el;s&&(s=makeElementsArray(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(a.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",c))}))),a.pagination.bullets&&a.pagination.bullets.forEach((a=>a.classList.remove(...e.bulletActiveClass.split(" "))))}l("changeDirection",(()=>{if(!a.pagination||!a.pagination.el)return;const e=a.params.pagination;let{el:s}=a.pagination;s=makeElementsArray(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(a.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),l("init",(()=>{!1===a.params.pagination.enabled?b():(u(),m(),d())})),l("activeIndexChange",(()=>{void 0===a.snapIndex&&d()})),l("snapIndexChange",(()=>{d()})),l("snapGridLengthChange",(()=>{m(),d()})),l("destroy",(()=>{g()})),l("enable disable",(()=>{let{el:e}=a.pagination;e&&(e=makeElementsArray(e),e.forEach((e=>e.classList[a.enabled?"remove":"add"](a.params.pagination.lockClass))))})),l("lock unlock",(()=>{d()})),l("click",((e,s)=>{const l=s.target,i=makeElementsArray(a.pagination.el);if(a.params.pagination.el&&a.params.pagination.hideOnClick&&i&&i.length>0&&!l.classList.contains(a.params.pagination.bulletClass)){if(a.navigation&&(a.navigation.nextEl&&l===a.navigation.nextEl||a.navigation.prevEl&&l===a.navigation.prevEl))return;const e=i[0].classList.contains(a.params.pagination.hiddenClass);t(!0===e?"paginationShow":"paginationHide"),i.forEach((e=>e.classList.toggle(a.params.pagination.hiddenClass)))}}));const b=()=>{a.el.classList.add(a.params.pagination.paginationDisabledClass);let{el:e}=a.pagination;e&&(e=makeElementsArray(e),e.forEach((e=>e.classList.add(a.params.pagination.paginationDisabledClass)))),g()};Object.assign(a.pagination,{enable:()=>{a.el.classList.remove(a.params.pagination.paginationDisabledClass);let{el:e}=a.pagination;e&&(e=makeElementsArray(e),e.forEach((e=>e.classList.remove(a.params.pagination.paginationDisabledClass)))),u(),m(),d()},disable:b,render:m,update:d,init:u,destroy:g})}export{Pagination as default}; +//# sourceMappingURL=pagination.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.min.mjs.map new file mode 100644 index 0000000..eee8355 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"pagination.mjs.mjs","names":["classesToSelector","createElementIfNotDefined","makeElementsArray","elementOuterSize","elementIndex","elementParents","Pagination","_ref","swiper","extendParams","on","emit","pfx","bulletSize","pagination","el","bulletElement","clickable","hideOnClick","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","type","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","hiddenClass","progressbarFillClass","progressbarOppositeClass","clickableClass","lockClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","params","Array","isArray","length","setSideBullets","bulletEl","position","classList","add","onBulletClick","e","target","closest","preventDefault","index","slidesPerGroup","loop","realIndex","slideToLoop","slideTo","update","rtl","current","previousIndex","slidesLength","virtual","enabled","slides","total","Math","ceil","snapGrid","previousRealIndex","floor","snapIndex","previousSnapIndex","activeIndex","firstIndex","lastIndex","midIndex","isHorizontal","forEach","subEl","style","undefined","max","min","classesToRemove","map","suffix","s","includes","split","flat","remove","bullet","bulletIndex","isElement","setAttribute","firstDisplayedBullet","lastDisplayedBullet","i","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","querySelectorAll","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","transform","transitionDuration","speed","innerHTML","watchOverflow","isLocked","render","grid","rows","paginationHTML","numberOfBullets","freeMode","call","push","init","originalParams","querySelector","document","uniqueNavElements","filter","Object","assign","addEventListener","destroy","removeEventListener","disable","_s","targetEl","contains","navigation","nextEl","prevEl","isHidden","toggle","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.mjs new file mode 100644 index 0000000..e38786d --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.mjs @@ -0,0 +1,443 @@ +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { m as makeElementsArray, f as elementOuterSize, h as elementIndex, a as elementParents } from '../shared/utils.mjs'; + +function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); +} + +export { Pagination as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.scss new file mode 100644 index 0000000..5595484 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/pagination.scss @@ -0,0 +1,188 @@ +@import '../swiper-vars.scss'; +@at-root { + :root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ + } +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; + &.swiper-pagination-hidden { + opacity: 0; + } + .swiper-pagination-disabled > &, + &.swiper-pagination-disabled { + display: none !important; + } +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; + .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; + } + .swiper-pagination-bullet-active { + transform: scale(1); + } + .swiper-pagination-bullet-active-main { + transform: scale(1); + } + .swiper-pagination-bullet-active-prev { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); + } + .swiper-pagination-bullet-active-next { + transform: scale(0.66); + } + .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); + } +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); + @at-root button#{&} { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + appearance: none; + } + .swiper-pagination-clickable & { + cursor: pointer; + } + + &:only-child { + display: none !important; + } +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} + +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); + .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; + } + &.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; + .swiper-pagination-bullet { + display: inline-block; + transition: + 200ms transform, + 200ms top; + } + } +} +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-horizontal.swiper-pagination-bullets { + .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); + } + &.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; + .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms left; + } + } +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: + 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; + .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; + } + .swiper-rtl & .swiper-pagination-progressbar-fill { + transform-origin: right top; + } + .swiper-horizontal > &, + &.swiper-pagination-horizontal, + .swiper-vertical > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; + } + .swiper-vertical > &, + &.swiper-pagination-vertical, + .swiper-horizontal > &.swiper-pagination-progressbar-opposite, + &.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; + } +} +.swiper-pagination-lock { + display: none; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax-element.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.less new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.min.mjs new file mode 100644 index 0000000..b70fbd0 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.min.mjs @@ -0,0 +1,2 @@ +import{e as elementChildren}from"../shared/utils.min.mjs";function Parallax(a){let{swiper:e,extendParams:t,on:l}=a;t({parallax:{enabled:!1}});const r="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",s=(a,t)=>{const{rtl:l}=e,r=l?-1:1,s=a.getAttribute("data-swiper-parallax")||"0";let i=a.getAttribute("data-swiper-parallax-x"),p=a.getAttribute("data-swiper-parallax-y");const n=a.getAttribute("data-swiper-parallax-scale"),o=a.getAttribute("data-swiper-parallax-opacity"),d=a.getAttribute("data-swiper-parallax-rotate");if(i||p?(i=i||"0",p=p||"0"):e.isHorizontal()?(i=s,p="0"):(p=s,i="0"),i=i.indexOf("%")>=0?parseInt(i,10)*t*r+"%":i*t*r+"px",p=p.indexOf("%")>=0?parseInt(p,10)*t+"%":p*t+"px",null!=o){const e=o-(o-1)*(1-Math.abs(t));a.style.opacity=e}let x=`translate3d(${i}, ${p}, 0px)`;if(null!=n){x+=` scale(${n-(n-1)*(1-Math.abs(t))})`}if(d&&null!=d){x+=` rotate(${d*t*-1}deg)`}a.style.transform=x},i=()=>{const{el:a,slides:t,progress:l,snapGrid:i,isElement:p}=e,n=elementChildren(a,r);e.isElement&&n.push(...elementChildren(e.hostEl,r)),n.forEach((a=>{s(a,l)})),t.forEach(((a,t)=>{let p=a.progress;e.params.slidesPerGroup>1&&"auto"!==e.params.slidesPerView&&(p+=Math.ceil(t/2)-l*(i.length-1)),p=Math.min(Math.max(p,-1),1),a.querySelectorAll(`${r}, [data-swiper-parallax-rotate]`).forEach((a=>{s(a,p)}))}))};l("beforeInit",(()=>{e.params.parallax.enabled&&(e.params.watchSlidesProgress=!0,e.originalParams.watchSlidesProgress=!0)})),l("init",(()=>{e.params.parallax.enabled&&i()})),l("setTranslate",(()=>{e.params.parallax.enabled&&i()})),l("setTransition",((a,t)=>{e.params.parallax.enabled&&function(a){void 0===a&&(a=e.params.speed);const{el:t,hostEl:l}=e,s=[...t.querySelectorAll(r)];e.isElement&&s.push(...l.querySelectorAll(r)),s.forEach((e=>{let t=parseInt(e.getAttribute("data-swiper-parallax-duration"),10)||a;0===a&&(t=0),e.style.transitionDuration=`${t}ms`}))}(t)}))}export{Parallax as default}; +//# sourceMappingURL=parallax.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.min.mjs.map new file mode 100644 index 0000000..395322a --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"parallax.mjs.mjs","names":["elementChildren","Parallax","_ref","swiper","extendParams","on","parallax","enabled","elementsSelector","setTransform","el","progress","rtl","rtlFactor","p","getAttribute","x","y","scale","opacity","rotate","isHorizontal","indexOf","parseInt","currentOpacity","Math","abs","style","transform","setTranslate","slides","snapGrid","isElement","elements","push","hostEl","forEach","subEl","slideEl","slideIndex","slideProgress","params","slidesPerGroup","slidesPerView","ceil","length","min","max","querySelectorAll","watchSlidesProgress","originalParams","_swiper","duration","speed","parallaxEl","parallaxDuration","transitionDuration","setTransition"],"sources":["0"],"mappings":"YAAcA,oBAAuB,0BAErC,SAASC,SAASC,GAChB,IAAIC,OACFA,EAAMC,aACNA,EAAYC,GACZA,GACEH,EACJE,EAAa,CACXE,SAAU,CACRC,SAAS,KAGb,MAAMC,EAAmB,2IACnBC,EAAe,CAACC,EAAIC,KACxB,MAAMC,IACJA,GACET,EACEU,EAAYD,GAAO,EAAI,EACvBE,EAAIJ,EAAGK,aAAa,yBAA2B,IACrD,IAAIC,EAAIN,EAAGK,aAAa,0BACpBE,EAAIP,EAAGK,aAAa,0BACxB,MAAMG,EAAQR,EAAGK,aAAa,8BACxBI,EAAUT,EAAGK,aAAa,gCAC1BK,EAASV,EAAGK,aAAa,+BAqB/B,GApBIC,GAAKC,GACPD,EAAIA,GAAK,IACTC,EAAIA,GAAK,KACAd,EAAOkB,gBAChBL,EAAIF,EACJG,EAAI,MAEJA,EAAIH,EACJE,EAAI,KAGJA,EADEA,EAAEM,QAAQ,MAAQ,EACbC,SAASP,EAAG,IAAML,EAAWE,EAAhC,IAEGG,EAAIL,EAAWE,EAAlB,KAGJI,EADEA,EAAEK,QAAQ,MAAQ,EACbC,SAASN,EAAG,IAAMN,EAArB,IAEGM,EAAIN,EAAP,KAEF,MAAOQ,EAA6C,CACtD,MAAMK,EAAiBL,GAAWA,EAAU,IAAM,EAAIM,KAAKC,IAAIf,IAC/DD,EAAGiB,MAAMR,QAAUK,CACrB,CACA,IAAII,EAAY,eAAeZ,MAAMC,UACrC,GAAI,MAAOC,EAAyC,CAElDU,GAAa,UADQV,GAASA,EAAQ,IAAM,EAAIO,KAAKC,IAAIf,MAE3D,CACA,GAAIS,SAAiBA,EAA2C,CAE9DQ,GAAa,WADSR,EAAST,GAAY,OAE7C,CACAD,EAAGiB,MAAMC,UAAYA,CAAS,EAE1BC,EAAe,KACnB,MAAMnB,GACJA,EAAEoB,OACFA,EAAMnB,SACNA,EAAQoB,SACRA,EAAQC,UACRA,GACE7B,EACE8B,EAAWjC,gBAAgBU,EAAIF,GACjCL,EAAO6B,WACTC,EAASC,QAAQlC,gBAAgBG,EAAOgC,OAAQ3B,IAElDyB,EAASG,SAAQC,IACf5B,EAAa4B,EAAO1B,EAAS,IAE/BmB,EAAOM,SAAQ,CAACE,EAASC,KACvB,IAAIC,EAAgBF,EAAQ3B,SACxBR,EAAOsC,OAAOC,eAAiB,GAAqC,SAAhCvC,EAAOsC,OAAOE,gBACpDH,GAAiBf,KAAKmB,KAAKL,EAAa,GAAK5B,GAAYoB,EAASc,OAAS,IAE7EL,EAAgBf,KAAKqB,IAAIrB,KAAKsB,IAAIP,GAAgB,GAAI,GACtDF,EAAQU,iBAAiB,GAAGxC,oCAAmD4B,SAAQC,IACrF5B,EAAa4B,EAAOG,EAAc,GAClC,GACF,EAoBJnC,EAAG,cAAc,KACVF,EAAOsC,OAAOnC,SAASC,UAC5BJ,EAAOsC,OAAOQ,qBAAsB,EACpC9C,EAAO+C,eAAeD,qBAAsB,EAAI,IAElD5C,EAAG,QAAQ,KACJF,EAAOsC,OAAOnC,SAASC,SAC5BsB,GAAc,IAEhBxB,EAAG,gBAAgB,KACZF,EAAOsC,OAAOnC,SAASC,SAC5BsB,GAAc,IAEhBxB,EAAG,iBAAiB,CAAC8C,EAASC,KACvBjD,EAAOsC,OAAOnC,SAASC,SAhCR,SAAU6C,QACb,IAAbA,IACFA,EAAWjD,EAAOsC,OAAOY,OAE3B,MAAM3C,GACJA,EAAEyB,OACFA,GACEhC,EACE8B,EAAW,IAAIvB,EAAGsC,iBAAiBxC,IACrCL,EAAO6B,WACTC,EAASC,QAAQC,EAAOa,iBAAiBxC,IAE3CyB,EAASG,SAAQkB,IACf,IAAIC,EAAmBhC,SAAS+B,EAAWvC,aAAa,iCAAkC,KAAOqC,EAChF,IAAbA,IAAgBG,EAAmB,GACvCD,EAAW3B,MAAM6B,mBAAqB,GAAGD,KAAoB,GAEjE,CAgBEE,CAAcL,EAAS,GAE3B,QAESnD"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.mjs new file mode 100644 index 0000000..1f467de --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.mjs @@ -0,0 +1,124 @@ +import { e as elementChildren } from '../shared/utils.mjs'; + +function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); +} + +export { Parallax as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/parallax.scss new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar-element.css new file mode 100644 index 0000000..b6b755e --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar-element.css @@ -0,0 +1,58 @@ +:host { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar-element.min.css new file mode 100644 index 0000000..dc9860f --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar-element.min.css @@ -0,0 +1 @@ +.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.css new file mode 100644 index 0000000..678451c --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.css @@ -0,0 +1,58 @@ +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.less new file mode 100644 index 0000000..4920d9b --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.less @@ -0,0 +1,59 @@ +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + -ms-touch-action: none; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.min.css new file mode 100644 index 0000000..dc9860f --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.min.css @@ -0,0 +1 @@ +.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.min.mjs new file mode 100644 index 0000000..a190521 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{m as makeElementsArray,i as classesToTokens,c as createElement,n as nextTick,b as elementOffset}from"../shared/utils.min.mjs";import{c as createElementIfNotDefined}from"../shared/create-element-if-not-defined.min.mjs";import{c as classesToSelector}from"../shared/classes-to-selector.min.mjs";function Scrollbar(s){let{swiper:l,extendParams:e,on:a,emit:r}=s;const t=getDocument();let o,n,i,c,p=!1,m=null,d=null;function b(){if(!l.params.scrollbar.el||!l.scrollbar.el)return;const{scrollbar:s,rtlTranslate:e}=l,{dragEl:a,el:r}=s,t=l.params.scrollbar,o=l.params.loop?l.progressLoop:l.progress;let c=n,p=(i-n)*o;e?(p=-p,p>0?(c=n-p,p=0):-p+n>i&&(c=i+p)):p<0?(c=n+p,p=0):p+n>i&&(c=i-p),l.isHorizontal()?(a.style.transform=`translate3d(${p}px, 0, 0)`,a.style.width=`${c}px`):(a.style.transform=`translate3d(0px, ${p}px, 0)`,a.style.height=`${c}px`),t.hide&&(clearTimeout(m),r.style.opacity=1,m=setTimeout((()=>{r.style.opacity=0,r.style.transitionDuration="400ms"}),1e3))}function u(){if(!l.params.scrollbar.el||!l.scrollbar.el)return;const{scrollbar:s}=l,{dragEl:e,el:a}=s;e.style.width="",e.style.height="",i=l.isHorizontal()?a.offsetWidth:a.offsetHeight,c=l.size/(l.virtualSize+l.params.slidesOffsetBefore-(l.params.centeredSlides?l.snapGrid[0]:0)),n="auto"===l.params.scrollbar.dragSize?i*c:parseInt(l.params.scrollbar.dragSize,10),l.isHorizontal()?e.style.width=`${n}px`:e.style.height=`${n}px`,a.style.display=c>=1?"none":"",l.params.scrollbar.hide&&(a.style.opacity=0),l.params.watchOverflow&&l.enabled&&s.el.classList[l.isLocked?"add":"remove"](l.params.scrollbar.lockClass)}function f(s){return l.isHorizontal()?s.clientX:s.clientY}function g(s){const{scrollbar:e,rtlTranslate:a}=l,{el:r}=e;let t;t=(f(s)-elementOffset(r)[l.isHorizontal()?"left":"top"]-(null!==o?o:n/2))/(i-n),t=Math.max(Math.min(t,1),0),a&&(t=1-t);const c=l.minTranslate()+(l.maxTranslate()-l.minTranslate())*t;l.updateProgress(c),l.setTranslate(c),l.updateActiveIndex(),l.updateSlidesClasses()}function y(s){const e=l.params.scrollbar,{scrollbar:a,wrapperEl:t}=l,{el:n,dragEl:i}=a;p=!0,o=s.target===i?f(s)-s.target.getBoundingClientRect()[l.isHorizontal()?"left":"top"]:null,s.preventDefault(),s.stopPropagation(),t.style.transitionDuration="100ms",i.style.transitionDuration="100ms",g(s),clearTimeout(d),n.style.transitionDuration="0ms",e.hide&&(n.style.opacity=1),l.params.cssMode&&(l.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",s)}function h(s){const{scrollbar:e,wrapperEl:a}=l,{el:t,dragEl:o}=e;p&&(s.preventDefault&&s.cancelable?s.preventDefault():s.returnValue=!1,g(s),a.style.transitionDuration="0ms",t.style.transitionDuration="0ms",o.style.transitionDuration="0ms",r("scrollbarDragMove",s))}function T(s){const e=l.params.scrollbar,{scrollbar:a,wrapperEl:t}=l,{el:o}=a;p&&(p=!1,l.params.cssMode&&(l.wrapperEl.style["scroll-snap-type"]="",t.style.transitionDuration=""),e.hide&&(clearTimeout(d),d=nextTick((()=>{o.style.opacity=0,o.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",s),e.snapOnRelease&&l.slideToClosest())}function v(s){const{scrollbar:e,params:a}=l,r=e.el;if(!r)return;const o=r,n=!!a.passiveListeners&&{passive:!1,capture:!1},i=!!a.passiveListeners&&{passive:!0,capture:!1};if(!o)return;const c="on"===s?"addEventListener":"removeEventListener";o[c]("pointerdown",y,n),t[c]("pointermove",h,n),t[c]("pointerup",T,i)}function D(){const{scrollbar:s,el:e}=l;l.params.scrollbar=createElementIfNotDefined(l,l.originalParams.scrollbar,l.params.scrollbar,{el:"swiper-scrollbar"});const a=l.params.scrollbar;if(!a.el)return;let r,o;if("string"==typeof a.el&&l.isElement&&(r=l.el.querySelector(a.el)),r||"string"!=typeof a.el)r||(r=a.el);else if(r=t.querySelectorAll(a.el),!r.length)return;l.params.uniqueNavElements&&"string"==typeof a.el&&r.length>1&&1===e.querySelectorAll(a.el).length&&(r=e.querySelector(a.el)),r.length>0&&(r=r[0]),r.classList.add(l.isHorizontal()?a.horizontalClass:a.verticalClass),r&&(o=r.querySelector(classesToSelector(l.params.scrollbar.dragClass)),o||(o=createElement("div",l.params.scrollbar.dragClass),r.append(o))),Object.assign(s,{el:r,dragEl:o}),a.draggable&&l.params.scrollbar.el&&l.scrollbar.el&&v("on"),r&&r.classList[l.enabled?"remove":"add"](...classesToTokens(l.params.scrollbar.lockClass))}function C(){const s=l.params.scrollbar,e=l.scrollbar.el;e&&e.classList.remove(...classesToTokens(l.isHorizontal()?s.horizontalClass:s.verticalClass)),l.params.scrollbar.el&&l.scrollbar.el&&v("off")}e({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),l.scrollbar={el:null,dragEl:null},a("changeDirection",(()=>{if(!l.scrollbar||!l.scrollbar.el)return;const s=l.params.scrollbar;let{el:e}=l.scrollbar;e=makeElementsArray(e),e.forEach((e=>{e.classList.remove(s.horizontalClass,s.verticalClass),e.classList.add(l.isHorizontal()?s.horizontalClass:s.verticalClass)}))})),a("init",(()=>{!1===l.params.scrollbar.enabled?E():(D(),u(),b())})),a("update resize observerUpdate lock unlock changeDirection",(()=>{u()})),a("setTranslate",(()=>{b()})),a("setTransition",((s,e)=>{!function(s){l.params.scrollbar.el&&l.scrollbar.el&&(l.scrollbar.dragEl.style.transitionDuration=`${s}ms`)}(e)})),a("enable disable",(()=>{const{el:s}=l.scrollbar;s&&s.classList[l.enabled?"remove":"add"](...classesToTokens(l.params.scrollbar.lockClass))})),a("destroy",(()=>{C()}));const E=()=>{l.el.classList.add(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),l.scrollbar.el&&l.scrollbar.el.classList.add(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),C()};Object.assign(l.scrollbar,{enable:()=>{l.el.classList.remove(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),l.scrollbar.el&&l.scrollbar.el.classList.remove(...classesToTokens(l.params.scrollbar.scrollbarDisabledClass)),D(),u(),b()},disable:E,updateSize:u,setTranslate:b,init:D,destroy:C})}export{Scrollbar as default}; +//# sourceMappingURL=scrollbar.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.min.mjs.map new file mode 100644 index 0000000..84930e3 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"scrollbar.mjs.mjs","names":["getDocument","makeElementsArray","classesToTokens","createElement","nextTick","elementOffset","createElementIfNotDefined","classesToSelector","Scrollbar","_ref","swiper","extendParams","on","emit","document","dragStartPos","dragSize","trackSize","divider","isTouched","timeout","dragTimeout","setTranslate","params","scrollbar","el","rtlTranslate","rtl","dragEl","progress","loop","progressLoop","newSize","newPos","isHorizontal","style","transform","width","height","hide","clearTimeout","opacity","setTimeout","transitionDuration","updateSize","offsetWidth","offsetHeight","size","virtualSize","slidesOffsetBefore","centeredSlides","snapGrid","parseInt","display","watchOverflow","enabled","classList","isLocked","lockClass","getPointerPosition","e","clientX","clientY","setDragPosition","positionRatio","Math","max","min","position","minTranslate","maxTranslate","updateProgress","updateActiveIndex","updateSlidesClasses","onDragStart","wrapperEl","target","getBoundingClientRect","preventDefault","stopPropagation","cssMode","onDragMove","cancelable","returnValue","onDragEnd","snapOnRelease","slideToClosest","events","method","activeListener","passiveListeners","passive","capture","passiveListener","eventMethod","init","swiperEl","originalParams","isElement","querySelector","querySelectorAll","length","uniqueNavElements","add","horizontalClass","verticalClass","dragClass","append","Object","assign","draggable","destroy","remove","scrollbarDisabledClass","forEach","subEl","disable","_s","duration","setTransition","enable"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.mjs new file mode 100644 index 0000000..052fee6 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.mjs @@ -0,0 +1,366 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { m as makeElementsArray, i as classesToTokens, c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs'; +import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs'; +import { c as classesToSelector } from '../shared/classes-to-selector.mjs'; + +function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('changeDirection', () => { + if (!swiper.scrollbar || !swiper.scrollbar.el) return; + const params = swiper.params.scrollbar; + let { + el + } = swiper.scrollbar; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock changeDirection', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); +} + +export { Scrollbar as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.scss new file mode 100644 index 0000000..93882d3 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/scrollbar.scss @@ -0,0 +1,61 @@ +@at-root { + :root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ + } +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + -ms-touch-action: none; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); + .swiper-scrollbar-disabled > &, + &.swiper-scrollbar-disabled { + display: none !important; + } + .swiper-horizontal > &, + &.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } + .swiper-vertical > &, + &.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); + } +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs-element.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs-element.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.less new file mode 100644 index 0000000..6762a03 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.less @@ -0,0 +1,5 @@ +.swiper-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.min.css new file mode 100644 index 0000000..e69de29 diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.min.mjs new file mode 100644 index 0000000..36c3e5f --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{l as isObject,e as elementChildren}from"../shared/utils.min.mjs";function Thumb(e){let{swiper:s,extendParams:i,on:t}=e;i({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,a=!1;function l(){const e=s.thumbs.swiper;if(!e||e.destroyed)return;const i=e.clickedIndex,t=e.clickedSlide;if(t&&t.classList.contains(s.params.thumbs.slideThumbActiveClass))return;if(null==i)return;let r;r=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):i,s.params.loop?s.slideToLoop(r):s.slideTo(r)}function n(){const{thumbs:e}=s.params;if(r)return!1;r=!0;const i=s.constructor;if(e.swiper instanceof i)s.thumbs.swiper=e.swiper,Object.assign(s.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(s.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),s.thumbs.swiper.update();else if(isObject(e.swiper)){const t=Object.assign({},e.swiper);Object.assign(t,{watchSlidesProgress:!0,slideToClickedSlide:!1}),s.thumbs.swiper=new i(t),a=!0}return s.thumbs.swiper.el.classList.add(s.params.thumbs.thumbsContainerClass),s.thumbs.swiper.on("tap",l),!0}function d(e){const i=s.thumbs.swiper;if(!i||i.destroyed)return;const t="auto"===i.params.slidesPerView?i.slidesPerViewDynamic():i.params.slidesPerView;let r=1;const a=s.params.thumbs.slideThumbActiveClass;if(s.params.slidesPerView>1&&!s.params.centeredSlides&&(r=s.params.slidesPerView),s.params.thumbs.multipleActiveThumbs||(r=1),r=Math.floor(r),i.slides.forEach((e=>e.classList.remove(a))),i.params.loop||i.params.virtual&&i.params.virtual.enabled)for(let e=0;e{e.classList.add(a)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${s.realIndex}`))[0];a=i.slides.indexOf(e),d=s.activeIndex>s.previousIndex?"next":"prev"}else a=s.realIndex,d=a>s.previousIndex?"next":"prev";n&&(a+="next"===d?l:-1*l),i.visibleSlidesIndexes&&i.visibleSlidesIndexes.indexOf(a)<0&&(i.params.centeredSlides?a=a>r?a-Math.floor(t/2)+1:a+Math.floor(t/2)-1:a>r&&i.params.slidesPerGroup,i.slideTo(a,e?0:void 0))}}s.thumbs={swiper:null},t("beforeInit",(()=>{const{thumbs:e}=s.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const i=getDocument(),t=()=>{const t="string"==typeof e.swiper?i.querySelector(e.swiper):e.swiper;if(t&&t.swiper)e.swiper=t.swiper,n(),d(!0);else if(t){const i=`${s.params.eventsPrefix}init`,r=a=>{e.swiper=a.detail[0],t.removeEventListener(i,r),n(),d(!0),e.swiper.update(),s.update()};t.addEventListener(i,r)}return t},r=()=>{if(s.destroyed)return;t()||requestAnimationFrame(r)};requestAnimationFrame(r)}else n(),d(!0)})),t("slideChange update resize observerUpdate",(()=>{d()})),t("setTransition",((e,i)=>{const t=s.thumbs.swiper;t&&!t.destroyed&&t.setTransition(i)})),t("beforeDestroy",(()=>{const e=s.thumbs.swiper;e&&!e.destroyed&&a&&e.destroy()})),Object.assign(s.thumbs,{init:n,update:d})}export{Thumb as default}; +//# sourceMappingURL=thumbs.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.min.mjs.map new file mode 100644 index 0000000..3c78fc6 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"thumbs.mjs.mjs","names":["getDocument","isObject","elementChildren","Thumb","_ref","swiper","extendParams","on","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","initialized","swiperCreated","onThumbClick","thumbsSwiper","destroyed","clickedIndex","clickedSlide","classList","contains","params","slideToIndex","loop","parseInt","getAttribute","slideToLoop","slideTo","init","thumbsParams","SwiperClass","constructor","Object","assign","originalParams","watchSlidesProgress","slideToClickedSlide","update","thumbsSwiperParams","el","add","initial","slidesPerView","slidesPerViewDynamic","thumbsToActivate","thumbActiveClass","centeredSlides","Math","floor","slides","forEach","slideEl","remove","virtual","enabled","i","slidesEl","realIndex","useOffset","currentThumbsIndex","activeIndex","newThumbsIndex","direction","newThumbsSlide","filter","indexOf","previousIndex","visibleSlidesIndexes","slidesPerGroup","undefined","HTMLElement","document","getThumbsElementAndInit","thumbsElement","querySelector","eventName","eventsPrefix","onThumbsSwiper","e","detail","removeEventListener","addEventListener","watchForThumbsToAppear","requestAnimationFrame","_s","duration","setTransition","destroy"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.mjs new file mode 100644 index 0000000..218772f --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.mjs @@ -0,0 +1,193 @@ +import { g as getDocument } from '../shared/ssr-window.esm.mjs'; +import { l as isObject, e as elementChildren } from '../shared/utils.mjs'; + +function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener(eventName, onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener(eventName, onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); +} + +export { Thumb as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.scss new file mode 100644 index 0000000..6762a03 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/thumbs.scss @@ -0,0 +1,5 @@ +.swiper-thumbs { + .swiper-slide-thumb-active { + // Styles for active thumb slide + } +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual-element.css new file mode 100644 index 0000000..432b52b --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual-element.css @@ -0,0 +1,19 @@ +.swiper-virtual ::slotted(swiper-slide) { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual-element.min.css new file mode 100644 index 0000000..d0e6043 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual-element.min.css @@ -0,0 +1 @@ +.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual.css new file mode 100644 index 0000000..60ebeea --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual.css @@ -0,0 +1,19 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual.less new file mode 100644 index 0000000..824cc1e --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual.less @@ -0,0 +1,26 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } +} +.swiper-virtual.swiper-css-mode.swiper-horizontal { + .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } +} + +.swiper-virtual.swiper-css-mode.swiper-vertical { + .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual.min.css new file mode 100644 index 0000000..dbb4007 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual.min.css @@ -0,0 +1 @@ +.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual.min.mjs new file mode 100644 index 0000000..c96dc2b --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual.min.mjs @@ -0,0 +1,2 @@ +import{g as getDocument}from"../shared/ssr-window.esm.min.mjs";import{s as setCSSProperty,e as elementChildren,c as createElement}from"../shared/utils.min.mjs";function Virtual(e){let s,{swiper:t,extendParams:i,on:r,emit:a}=e;i({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=getDocument();t.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const d=l.createElement("div");function n(e,s){const i=t.params.virtual;if(i.cache&&t.virtual.cache[s])return t.virtual.cache[s];let r;return i.renderSlide?(r=i.renderSlide.call(t,e,s),"string"==typeof r&&(d.innerHTML=r,r=d.children[0])):r=t.isElement?createElement("swiper-slide"):createElement("div",t.params.slideClass),r.setAttribute("data-swiper-slide-index",s),i.renderSlide||(r.innerHTML=e),i.cache&&(t.virtual.cache[s]=r),r}function c(e,s){const{slidesPerView:i,slidesPerGroup:r,centeredSlides:l,loop:d,initialSlide:c}=t.params;if(s&&!d&&c>0)return;const{addSlidesBefore:o,addSlidesAfter:u}=t.params.virtual,{from:p,to:h,slides:f,slidesGrid:v,offset:m}=t.virtual;t.params.cssMode||t.updateActiveIndex();const g=t.activeIndex||0;let E,x,w;E=t.rtlTranslate?"right":t.isHorizontal()?"left":"top",l?(x=Math.floor(i/2)+r+u,w=Math.floor(i/2)+r+o):(x=i+(r-1)+u,w=(d?i:r)+o);let S=g-w,b=g+x;d||(S=Math.max(S,0),b=Math.min(b,f.length-1));let A=(t.slidesGrid[S]||0)-(t.slidesGrid[0]||0);function M(){t.updateSlides(),t.updateProgress(),t.updateSlidesClasses(),a("virtualUpdate")}if(d&&g>=w?(S-=w,l||(A+=t.slidesGrid[0])):d&&g{e.style[E]=A-Math.abs(t.cssOverflowAdjustment())+"px"})),t.updateProgress(),void a("virtualUpdate");if(t.params.virtual.renderExternal)return t.params.virtual.renderExternal.call(t,{offset:A,from:S,to:b,slides:function(){const e=[];for(let s=S;s<=b;s+=1)e.push(f[s]);return e}()}),void(t.params.virtual.renderExternalUpdate?M():a("virtualUpdate"));const y=[],P=[],j=e=>{let s=e;return e<0?s=f.length+e:s>=f.length&&(s-=f.length),s};if(e)t.slides.filter((e=>e.matches(`.${t.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=p;e<=h;e+=1)if(eb){const s=j(e);t.slides.filter((e=>e.matches(`.${t.params.slideClass}[data-swiper-slide-index="${s}"], swiper-slide[data-swiper-slide-index="${s}"]`))).forEach((e=>{e.remove()}))}const C=d?-f.length:0,G=d?2*f.length:f.length;for(let s=C;s=S&&s<=b){const t=j(s);void 0===h||e?P.push(t):(s>h&&P.push(t),s{t.slidesEl.append(n(f[e],e))})),d)for(let e=y.length-1;e>=0;e-=1){const s=y[e];t.slidesEl.prepend(n(f[s],s))}else y.sort(((e,s)=>s-e)),y.forEach((e=>{t.slidesEl.prepend(n(f[e],e))}));elementChildren(t.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[E]=A-Math.abs(t.cssOverflowAdjustment())+"px"})),M()}r("beforeInit",(()=>{if(!t.params.virtual.enabled)return;let e;if(void 0===t.passedParams.virtual.slides){const s=[...t.slidesEl.children].filter((e=>e.matches(`.${t.params.slideClass}, swiper-slide`)));s&&s.length&&(t.virtual.slides=[...s],e=!0,s.forEach(((e,s)=>{e.setAttribute("data-swiper-slide-index",s),t.virtual.cache[s]=e,e.remove()})))}e||(t.virtual.slides=t.params.virtual.slides),t.classNames.push(`${t.params.containerModifierClass}virtual`),t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0,c(!1,!0)})),r("setTranslate",(()=>{t.params.virtual.enabled&&(t.params.cssMode&&!t._immediateVirtual?(clearTimeout(s),s=setTimeout((()=>{c()}),100)):c())})),r("init update resize",(()=>{t.params.virtual.enabled&&t.params.cssMode&&setCSSProperty(t.wrapperEl,"--swiper-virtual-size",`${t.virtualSize}px`)})),Object.assign(t.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let s=0;s{const i=e[t],a=i.getAttribute("data-swiper-slide-index");a&&i.setAttribute("data-swiper-slide-index",parseInt(a,10)+r),s[parseInt(t,10)+r]=i})),t.virtual.cache=s}c(!0),t.slideTo(i,0)},removeSlide:function(e){if(null==e)return;let s=t.activeIndex;if(Array.isArray(e))for(let i=e.length-1;i>=0;i-=1)t.params.virtual.cache&&(delete t.virtual.cache[e[i]],Object.keys(t.virtual.cache).forEach((s=>{s>e&&(t.virtual.cache[s-1]=t.virtual.cache[s],t.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete t.virtual.cache[s])}))),t.virtual.slides.splice(e[i],1),e[i]{s>e&&(t.virtual.cache[s-1]=t.virtual.cache[s],t.virtual.cache[s-1].setAttribute("data-swiper-slide-index",s-1),delete t.virtual.cache[s])}))),t.virtual.slides.splice(e,1),e 0) { + return; + } + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(false, true); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); +} + +export { Virtual as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual.scss new file mode 100644 index 0000000..824cc1e --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/virtual.scss @@ -0,0 +1,26 @@ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode { + .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; + } +} +.swiper-virtual.swiper-css-mode.swiper-horizontal { + .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); + } +} + +.swiper-virtual.swiper-css-mode.swiper-vertical { + .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); + } +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom-element.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom-element.css new file mode 100644 index 0000000..f81a92b --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom-element.css @@ -0,0 +1,5 @@ +/* Zoom container styles start *//* Zoom container styles end */ +::slotted(.swiper-slide-zoomed) { + cursor: move; + touch-action: none; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom-element.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom-element.min.css new file mode 100644 index 0000000..17d073f --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom-element.min.css @@ -0,0 +1 @@ +::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.css new file mode 100644 index 0000000..40f5b10 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.css @@ -0,0 +1,21 @@ +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; +} +.swiper-zoom-container > img, +.swiper-zoom-container > svg, +.swiper-zoom-container > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} +/* Zoom container styles end */ +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.less new file mode 100644 index 0000000..d226ae9 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.less @@ -0,0 +1,23 @@ +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} +/* Zoom container styles end */ + +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.min.css new file mode 100644 index 0000000..e55cd9a --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.min.css @@ -0,0 +1 @@ +.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.min.mjs new file mode 100644 index 0000000..83bc6cc --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow}from"../shared/ssr-window.esm.min.mjs";import{e as elementChildren,a as elementParents,b as elementOffset,j as getTranslate}from"../shared/utils.min.mjs";function Zoom(e){let{swiper:t,extendParams:i,on:a,emit:r}=e;const s=getWindow();i({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let o,n,l=1,m=!1;const c=[],d={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},u={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},p={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let g,h=1;function E(){if(c.length<2)return 1;const e=c[0].pageX,t=c[0].pageY,i=c[1].pageX,a=c[1].pageY;return Math.sqrt((i-e)**2+(a-t)**2)}function v(){const e=t.params.zoom,i=d.imageWrapEl.getAttribute("data-swiper-zoom")||e.maxRatio;if(e.limitToOriginalSize&&d.imageEl&&d.imageEl.naturalWidth){const e=d.imageEl.naturalWidth/d.imageEl.offsetWidth;return Math.min(e,i)}return i}function f(e){const i=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(i)||t.slides.filter((t=>t.contains(e.target))).length>0}function x(e){if("mouse"===e.pointerType&&c.splice(0,c.length),!f(e))return;const i=t.params.zoom;if(o=!1,n=!1,c.push(e),!(c.length<2)){if(o=!0,d.scaleStart=E(),!d.slideEl){d.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),d.slideEl||(d.slideEl=t.slides[t.activeIndex]);let a=d.slideEl.querySelector(`.${i.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=a,d.imageWrapEl=a?elementParents(d.imageEl,`.${i.containerClass}`)[0]:void 0,!d.imageWrapEl)return void(d.imageEl=void 0);d.maxRatio=v()}if(d.imageEl){const[e,t]=function(){if(c.length<2)return{x:null,y:null};const e=d.imageEl.getBoundingClientRect();return[(c[0].pageX+(c[1].pageX-c[0].pageX)/2-e.x-s.scrollX)/l,(c[0].pageY+(c[1].pageY-c[0].pageY)/2-e.y-s.scrollY)/l]}();d.originX=e,d.originY=t,d.imageEl.style.transitionDuration="0ms"}m=!0}}function X(e){if(!f(e))return;const i=t.params.zoom,a=t.zoom,r=c.findIndex((t=>t.pointerId===e.pointerId));r>=0&&(c[r]=e),c.length<2||(n=!0,d.scaleMove=E(),d.imageEl&&(a.scale=d.scaleMove/d.scaleStart*l,a.scale>d.maxRatio&&(a.scale=d.maxRatio-1+(a.scale-d.maxRatio+1)**.5),a.scalet.pointerId===e.pointerId));r>=0&&c.splice(r,1),o&&n&&(o=!1,n=!1,d.imageEl&&(a.scale=Math.max(Math.min(a.scale,d.maxRatio),i.minRatio),d.imageEl.style.transitionDuration=`${t.params.speed}ms`,d.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,l=a.scale,m=!1,a.scale>1&&d.slideEl?d.slideEl.classList.add(`${i.zoomedSlideClass}`):a.scale<=1&&d.slideEl&&d.slideEl.classList.remove(`${i.zoomedSlideClass}`),1===a.scale&&(d.originX=0,d.originY=0,d.slideEl=void 0)))}function y(){t.touchEventsData.preventTouchMoveFromPointerMove=!1}function z(e){if(!f(e)||!function(e){const i=`.${t.params.zoom.containerClass}`;return!!e.target.matches(i)||[...t.hostEl.querySelectorAll(i)].filter((t=>t.contains(e.target))).length>0}(e))return;const i=t.zoom;if(!d.imageEl)return;if(!u.isTouched||!d.slideEl)return;u.isMoved||(u.width=d.imageEl.offsetWidth||d.imageEl.clientWidth,u.height=d.imageEl.offsetHeight||d.imageEl.clientHeight,u.startX=getTranslate(d.imageWrapEl,"x")||0,u.startY=getTranslate(d.imageWrapEl,"y")||0,d.slideWidth=d.slideEl.offsetWidth,d.slideHeight=d.slideEl.offsetHeight,d.imageWrapEl.style.transitionDuration="0ms");const a=u.width*i.scale,r=u.height*i.scale;u.minX=Math.min(d.slideWidth/2-a/2,0),u.maxX=-u.minX,u.minY=Math.min(d.slideHeight/2-r/2,0),u.maxY=-u.minY,u.touchesCurrent.x=c.length>0?c[0].pageX:e.pageX,u.touchesCurrent.y=c.length>0?c[0].pageY:e.pageY;if(Math.max(Math.abs(u.touchesCurrent.x-u.touchesStart.x),Math.abs(u.touchesCurrent.y-u.touchesStart.y))>5&&(t.allowClick=!1),!u.isMoved&&!m){if(t.isHorizontal()&&(Math.floor(u.minX)===Math.floor(u.startX)&&u.touchesCurrent.xu.touchesStart.x))return u.isTouched=!1,void y();if(!t.isHorizontal()&&(Math.floor(u.minY)===Math.floor(u.startY)&&u.touchesCurrent.yu.touchesStart.y))return u.isTouched=!1,void y()}e.cancelable&&e.preventDefault(),e.stopPropagation(),clearTimeout(g),t.touchEventsData.preventTouchMoveFromPointerMove=!0,g=setTimeout((()=>{y()})),u.isMoved=!0;const s=(i.scale-l)/(d.maxRatio-t.params.zoom.minRatio),{originX:o,originY:n}=d;u.currentX=u.touchesCurrent.x-u.touchesStart.x+u.startX+s*(u.width-2*o),u.currentY=u.touchesCurrent.y-u.touchesStart.y+u.startY+s*(u.height-2*n),u.currentXu.maxX&&(u.currentX=u.maxX-1+(u.currentX-u.maxX+1)**.8),u.currentYu.maxY&&(u.currentY=u.maxY-1+(u.currentY-u.maxY+1)**.8),p.prevPositionX||(p.prevPositionX=u.touchesCurrent.x),p.prevPositionY||(p.prevPositionY=u.touchesCurrent.y),p.prevTime||(p.prevTime=Date.now()),p.x=(u.touchesCurrent.x-p.prevPositionX)/(Date.now()-p.prevTime)/2,p.y=(u.touchesCurrent.y-p.prevPositionY)/(Date.now()-p.prevTime)/2,Math.abs(u.touchesCurrent.x-p.prevPositionX)<2&&(p.x=0),Math.abs(u.touchesCurrent.y-p.prevPositionY)<2&&(p.y=0),p.prevPositionX=u.touchesCurrent.x,p.prevPositionY=u.touchesCurrent.y,p.prevTime=Date.now(),d.imageWrapEl.style.transform=`translate3d(${u.currentX}px, ${u.currentY}px,0)`}function C(){const e=t.zoom;d.slideEl&&t.activeIndex!==t.slides.indexOf(d.slideEl)&&(d.imageEl&&(d.imageEl.style.transform="translate3d(0,0,0) scale(1)"),d.imageWrapEl&&(d.imageWrapEl.style.transform="translate3d(0,0,0)"),d.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,l=1,d.slideEl=void 0,d.imageEl=void 0,d.imageWrapEl=void 0,d.originX=0,d.originY=0)}function M(e){const i=t.zoom,a=t.params.zoom;if(!d.slideEl){e&&e.target&&(d.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),d.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?d.slideEl=elementChildren(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:d.slideEl=t.slides[t.activeIndex]);let i=d.slideEl.querySelector(`.${a.containerClass}`);i&&(i=i.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=i,d.imageWrapEl=i?elementParents(d.imageEl,`.${a.containerClass}`)[0]:void 0}if(!d.imageEl||!d.imageWrapEl)return;let r,o,n,m,c,p,g,h,E,f,x,X,Y,y,z,C,M,w;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),d.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===u.touchesStart.x&&e?(r=e.pageX,o=e.pageY):(r=u.touchesStart.x,o=u.touchesStart.y);const W="number"==typeof e?e:null;1===l&&W&&(r=void 0,o=void 0);const b=v();i.scale=W||b,l=W||b,!e||1===l&&W?(g=0,h=0):(M=d.slideEl.offsetWidth,w=d.slideEl.offsetHeight,n=elementOffset(d.slideEl).left+s.scrollX,m=elementOffset(d.slideEl).top+s.scrollY,c=n+M/2-r,p=m+w/2-o,E=d.imageEl.offsetWidth||d.imageEl.clientWidth,f=d.imageEl.offsetHeight||d.imageEl.clientHeight,x=E*i.scale,X=f*i.scale,Y=Math.min(M/2-x/2,0),y=Math.min(w/2-X/2,0),z=-Y,C=-y,g=c*i.scale,h=p*i.scale,gz&&(g=z),hC&&(h=C)),W&&1===i.scale&&(d.originX=0,d.originY=0),d.imageWrapEl.style.transitionDuration="300ms",d.imageWrapEl.style.transform=`translate3d(${g}px, ${h}px,0)`,d.imageEl.style.transitionDuration="300ms",d.imageEl.style.transform=`translate3d(0,0,0) scale(${i.scale})`}function w(){const e=t.zoom,i=t.params.zoom;if(!d.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?d.slideEl=elementChildren(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:d.slideEl=t.slides[t.activeIndex];let e=d.slideEl.querySelector(`.${i.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),d.imageEl=e,d.imageWrapEl=e?elementParents(d.imageEl,`.${i.containerClass}`)[0]:void 0}d.imageEl&&d.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,l=1,d.imageWrapEl.style.transitionDuration="300ms",d.imageWrapEl.style.transform="translate3d(0,0,0)",d.imageEl.style.transitionDuration="300ms",d.imageEl.style.transform="translate3d(0,0,0) scale(1)",d.slideEl.classList.remove(`${i.zoomedSlideClass}`),d.slideEl=void 0,d.originX=0,d.originY=0)}function W(e){const i=t.zoom;i.scale&&1!==i.scale?w():M(e)}function b(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function S(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:i,activeListenerWithCapture:a}=b();t.wrapperEl.addEventListener("pointerdown",x,i),t.wrapperEl.addEventListener("pointermove",X,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,Y,i)})),t.wrapperEl.addEventListener("pointermove",z,a)}function $(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:i,activeListenerWithCapture:a}=b();t.wrapperEl.removeEventListener("pointerdown",x,i),t.wrapperEl.removeEventListener("pointermove",X,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,Y,i)})),t.wrapperEl.removeEventListener("pointermove",z,a)}Object.defineProperty(t.zoom,"scale",{get:()=>h,set(e){if(h!==e){const t=d.imageEl,i=d.slideEl;r("zoomChange",e,t,i)}h=e}}),a("init",(()=>{t.params.zoom.enabled&&S()})),a("destroy",(()=>{$()})),a("touchStart",((e,i)=>{t.zoom.enabled&&function(e){const i=t.device;if(!d.imageEl)return;if(u.isTouched)return;i.android&&e.cancelable&&e.preventDefault(),u.isTouched=!0;const a=c.length>0?c[0]:e;u.touchesStart.x=a.pageX,u.touchesStart.y=a.pageY}(i)})),a("touchEnd",((e,i)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!d.imageEl)return;if(!u.isTouched||!u.isMoved)return u.isTouched=!1,void(u.isMoved=!1);u.isTouched=!1,u.isMoved=!1;let i=300,a=300;const r=p.x*i,s=u.currentX+r,o=p.y*a,n=u.currentY+o;0!==p.x&&(i=Math.abs((s-u.currentX)/p.x)),0!==p.y&&(a=Math.abs((n-u.currentY)/p.y));const l=Math.max(i,a);u.currentX=s,u.currentY=n;const m=u.width*e.scale,c=u.height*e.scale;u.minX=Math.min(d.slideWidth/2-m/2,0),u.maxX=-u.minX,u.minY=Math.min(d.slideHeight/2-c/2,0),u.maxY=-u.minY,u.currentX=Math.max(Math.min(u.currentX,u.maxX),u.minX),u.currentY=Math.max(Math.min(u.currentY,u.maxY),u.minY),d.imageWrapEl.style.transitionDuration=`${l}ms`,d.imageWrapEl.style.transform=`translate3d(${u.currentX}px, ${u.currentY}px,0)`}()})),a("doubleTap",((e,i)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&W(i)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&C()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&C()})),Object.assign(t.zoom,{enable:S,disable:$,in:M,out:w,toggle:W})}export{Zoom as default}; +//# sourceMappingURL=zoom.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.min.mjs.map new file mode 100644 index 0000000..9a01b29 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"zoom.mjs.mjs","names":["getWindow","elementChildren","elementParents","elementOffset","getTranslate","Zoom","_ref","swiper","extendParams","on","emit","window","zoom","enabled","limitToOriginalSize","maxRatio","minRatio","toggle","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideEl","undefined","slideWidth","slideHeight","imageEl","imageWrapEl","image","isTouched","isMoved","currentX","currentY","minX","minY","maxX","maxY","width","height","startX","startY","touchesStart","touchesCurrent","velocity","x","y","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","scale","getDistanceBetweenTouches","length","x1","pageX","y1","pageY","x2","y2","Math","sqrt","getMaxRatio","params","getAttribute","naturalWidth","imageMaxRatio","offsetWidth","min","eventWithinSlide","e","slideSelector","isElement","slideClass","target","matches","slides","filter","contains","onGestureStart","pointerType","splice","push","scaleStart","closest","activeIndex","querySelector","querySelectorAll","box","getBoundingClientRect","scrollX","scrollY","getScaleOrigin","style","transitionDuration","onGestureChange","pointerIndex","findIndex","cachedEv","pointerId","scaleMove","transform","onGestureEnd","type","max","speed","classList","add","remove","allowTouchMove","touchEventsData","preventTouchMoveFromPointerMove","onTouchMove","selector","hostEl","containerEl","eventWithinZoomContainer","clientWidth","offsetHeight","clientHeight","scaledWidth","scaledHeight","abs","allowClick","isHorizontal","floor","cancelable","preventDefault","stopPropagation","clearTimeout","setTimeout","scaleRatio","Date","now","onTransitionEnd","indexOf","zoomIn","virtual","slidesEl","slideActiveClass","touchX","touchY","offsetX","offsetY","diffX","diffY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","cssMode","wrapperEl","overflow","touchAction","forceZoomRatio","left","top","zoomOut","zoomToggle","getListeners","passiveListener","passiveListeners","passive","capture","activeListenerWithCapture","enable","addEventListener","forEach","eventName","disable","removeEventListener","Object","defineProperty","get","set","value","_s","device","android","event","onTouchStart","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","onTouchEnd","animating","assign","in","out"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.mjs new file mode 100644 index 0000000..6e19ee7 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.mjs @@ -0,0 +1,621 @@ +import { a as getWindow } from '../shared/ssr-window.esm.mjs'; +import { e as elementChildren, a as elementParents, b as elementOffset, j as getTranslate } from '../shared/utils.mjs'; + +function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + limitToOriginalSize: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getMaxRatio() { + const params = swiper.params.zoom; + const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { + const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; + return Math.min(imageMaxRatio, maxRatio); + } + return maxRatio; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = getMaxRatio(); + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + let allowTouchMoveTimeout; + function allowTouchMove() { + swiper.touchEventsData.preventTouchMoveFromPointerMove = false; + } + function preventTouchMove() { + clearTimeout(allowTouchMoveTimeout); + swiper.touchEventsData.preventTouchMoveFromPointerMove = true; + allowTouchMoveTimeout = setTimeout(() => { + allowTouchMove(); + }); + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { + return; + } + const zoom = swiper.zoom; + if (!gesture.imageEl) { + return; + } + if (!image.isTouched || !gesture.slideEl) { + return; + } + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + allowTouchMove(); + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + allowTouchMove(); + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + preventTouchMove(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + const maxRatio = getMaxRatio(); + zoom.scale = forceZoomRatio || maxRatio; + currentScale = forceZoomRatio || maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); +} + +export { Zoom as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.scss new file mode 100644 index 0000000..1f56449 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/modules/zoom.scss @@ -0,0 +1,21 @@ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; + + > img, + > svg, + > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; + } +} + +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/package.json b/web/themes/custom/quartiers_de_demain/librairies/swiper/package.json new file mode 100644 index 0000000..6354ba0 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/package.json @@ -0,0 +1,212 @@ +{ + "name": "swiper", + "version": "11.1.7", + "description": "Most modern mobile touch slider and framework with hardware accelerated transitions", + "typings": "swiper.d.ts", + "type": "module", + "main": "./swiper.mjs", + "module": "./swiper.mjs", + "exports": { + ".": { + "types": "./swiper.d.ts", + "default": "./swiper.mjs" + }, + "./effect-utils": { + "types": "./swiper-effect-utils.d.ts", + "default": "./swiper-effect-utils.mjs" + }, + "./core": { + "types": "./swiper.d.ts", + "default": "./swiper.mjs" + }, + "./bundle": { + "types": "./swiper.d.ts", + "default": "./swiper-bundle.mjs" + }, + "./css": "./swiper.css", + "./css/bundle": "./swiper-bundle.css", + "./swiper-bundle.css": "./swiper-bundle.css", + "./css/a11y": "./modules/a11y.css", + "./css/autoplay": "./modules/autoplay.css", + "./css/controller": "./modules/controller.css", + "./css/effect-coverflow": "./modules/effect-coverflow.css", + "./css/effect-cube": "./modules/effect-cube.css", + "./css/effect-fade": "./modules/effect-fade.css", + "./css/effect-flip": "./modules/effect-flip.css", + "./css/effect-creative": "./modules/effect-creative.css", + "./css/effect-cards": "./modules/effect-cards.css", + "./css/free-mode": "./modules/free-mode.css", + "./css/grid": "./modules/grid.css", + "./css/hash-navigation": "./modules/hash-navigation.css", + "./css/history": "./modules/history.css", + "./css/keyboard": "./modules/keyboard.css", + "./css/manipulation": "./modules/manipulation.css", + "./css/mousewheel": "./modules/mousewheel.css", + "./css/navigation": "./modules/navigation.css", + "./css/pagination": "./modules/pagination.css", + "./css/parallax": "./modules/parallax.css", + "./css/scrollbar": "./modules/scrollbar.css", + "./css/thumbs": "./modules/thumbs.css", + "./css/virtual": "./modules/virtual.css", + "./css/zoom": "./modules/zoom.css", + "./less": "./swiper.less", + "./less/a11y": "./modules/a11y.less", + "./less/autoplay": "./modules/autoplay.less", + "./less/controller": "./modules/controller.less", + "./less/effect-coverflow": "./modules/effect-coverflow.less", + "./less/effect-cube": "./modules/effect-cube.less", + "./less/effect-fade": "./modules/effect-fade.less", + "./less/effect-flip": "./modules/effect-flip.less", + "./less/effect-creative": "./modules/effect-creative.less", + "./less/effect-cards": "./modules/effect-cards.less", + "./less/free-mode": "./modules/free-mode.less", + "./less/grid": "./modules/grid.less", + "./less/hash-navigation": "./modules/hash-navigation.less", + "./less/history": "./modules/history.less", + "./less/keyboard": "./modules/keyboard.less", + "./less/manipulation": "./modules/manipulation.less", + "./less/mousewheel": "./modules/mousewheel.less", + "./less/navigation": "./modules/navigation.less", + "./less/pagination": "./modules/pagination.less", + "./less/parallax": "./modules/parallax.less", + "./less/scrollbar": "./modules/scrollbar.less", + "./less/thumbs": "./modules/thumbs.less", + "./less/virtual": "./modules/virtual.less", + "./less/zoom": "./modules/zoom.less", + "./scss": "./swiper.scss", + "./scss/a11y": "./modules/a11y.scss", + "./scss/autoplay": "./modules/autoplay.scss", + "./scss/controller": "./modules/controller.scss", + "./scss/effect-coverflow": "./modules/effect-coverflow.scss", + "./scss/effect-cube": "./modules/effect-cube.scss", + "./scss/effect-fade": "./modules/effect-fade.scss", + "./scss/effect-flip": "./modules/effect-flip.scss", + "./scss/effect-creative": "./modules/effect-creative.scss", + "./scss/effect-cards": "./modules/effect-cards.scss", + "./scss/free-mode": "./modules/free-mode.scss", + "./scss/grid": "./modules/grid.scss", + "./scss/hash-navigation": "./modules/hash-navigation.scss", + "./scss/history": "./modules/history.scss", + "./scss/keyboard": "./modules/keyboard.scss", + "./scss/manipulation": "./modules/manipulation.scss", + "./scss/mousewheel": "./modules/mousewheel.scss", + "./scss/navigation": "./modules/navigation.scss", + "./scss/pagination": "./modules/pagination.scss", + "./scss/parallax": "./modules/parallax.scss", + "./scss/scrollbar": "./modules/scrollbar.scss", + "./scss/thumbs": "./modules/thumbs.scss", + "./scss/virtual": "./modules/virtual.scss", + "./scss/zoom": "./modules/zoom.scss", + "./element": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element.mjs" + }, + "./element/bundle": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element-bundle.mjs" + }, + "./element-bundle": { + "types": "./swiper-element.d.ts", + "default": "./swiper-element-bundle.mjs" + }, + "./element/css/a11y": "./modules/a11y-element.css", + "./element/css/autoplay": "./modules/autoplay-element.css", + "./element/css/controller": "./modules/controller-element.css", + "./element/css/effect-coverflow": "./modules/effect-coverflow-element.css", + "./element/css/effect-cube": "./modules/effect-cube-element.css", + "./element/css/effect-fade": "./modules/effect-fade-element.css", + "./element/css/effect-flip": "./modules/effect-flip-element.css", + "./element/css/effect-creative": "./modules/effect-creative-element.css", + "./element/css/effect-cards": "./modules/effect-cards-element.css", + "./element/css/free-mode": "./modules/free-mode-element.css", + "./element/css/grid": "./modules/grid-element.css", + "./element/css/hash-navigation": "./modules/hash-navigation-element.css", + "./element/css/history": "./modules/history-element.css", + "./element/css/keyboard": "./modules/keyboard-element.css", + "./element/css/manipulation": "./modules/manipulation-element.css", + "./element/css/mousewheel": "./modules/mousewheel-element.css", + "./element/css/navigation": "./modules/navigation-element.css", + "./element/css/pagination": "./modules/pagination-element.css", + "./element/css/parallax": "./modules/parallax-element.css", + "./element/css/scrollbar": "./modules/scrollbar-element.css", + "./element/css/thumbs": "./modules/thumbs-element.css", + "./element/css/virtual": "./modules/virtual-element.css", + "./element/css/zoom": "./modules/zoom-element.css", + "./react": { + "types": "./swiper-react.d.ts", + "default": "./swiper-react.mjs" + }, + "./vue": { + "types": "./swiper-vue.d.ts", + "default": "./swiper-vue.mjs" + }, + "./modules": { + "types": "./types/modules/index.d.ts", + "default": "./modules/index.mjs" + }, + "./types": "./types/index.d.ts", + "./package.json": "./package.json" + }, + "typesVersions": { + "*": { + "modules": [ + "./types/modules/index.d.ts" + ], + "element": [ + "./swiper-element.d.ts" + ], + "element/bundle": [ + "./swiper-element.d.ts" + ], + "react": [ + "./swiper-react.d.ts" + ], + "vue": [ + "./swiper-vue.d.ts" + ] + } + }, + "repository": { + "type": "git", + "url": "https://github.com/nolimits4web/Swiper.git" + }, + "keywords": [ + "swiper", + "swipe", + "slider", + "touch", + "ios", + "mobile", + "cordova", + "phonegap", + "app", + "framework", + "framework7", + "carousel", + "gallery", + "plugin", + "react", + "vue", + "slideshow" + ], + "author": "Vladimir Kharlampidi", + "license": "MIT", + "bugs": { + "url": "https://github.com/nolimits4web/swiper/issues" + }, + "homepage": "https://swiperjs.com", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "engines": { + "node": ">= 4.7.0" + }, + "releaseDate": "July 24, 2024" +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/classes-to-selector.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/classes-to-selector.min.mjs new file mode 100644 index 0000000..f177f5b --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/classes-to-selector.min.mjs @@ -0,0 +1,2 @@ +function classesToSelector(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}export{classesToSelector as c}; +//# sourceMappingURL=classes-to-selector.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/classes-to-selector.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/classes-to-selector.min.mjs.map new file mode 100644 index 0000000..d817369 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/classes-to-selector.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"classes-to-selector.mjs.mjs","names":["classesToSelector","classes","trim","replace"],"sources":["0"],"mappings":"AAAA,SAASA,kBAAkBC,GAIzB,YAHgB,IAAZA,IACFA,EAAU,IAEL,IAAIA,EAAQC,OAAOC,QAAQ,eAAgB,QACjDA,QAAQ,KAAM,MACjB,QAESH"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/classes-to-selector.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/classes-to-selector.mjs new file mode 100644 index 0000000..dd142d5 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/classes-to-selector.mjs @@ -0,0 +1,9 @@ +function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; +} + +export { classesToSelector as c }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-element-if-not-defined.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-element-if-not-defined.min.mjs new file mode 100644 index 0000000..f92d40d --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-element-if-not-defined.min.mjs @@ -0,0 +1,2 @@ +import{e as elementChildren,c as createElement}from"./utils.min.mjs";function createElementIfNotDefined(e,t,n,a){return e.params.createElements&&Object.keys(a).forEach((l=>{if(!n[l]&&!0===n.auto){let r=elementChildren(e.el,`.${a[l]}`)[0];r||(r=createElement("div",a[l]),r.className=a[l],e.el.append(r)),n[l]=r,t[l]=r}})),n}export{createElementIfNotDefined as c}; +//# sourceMappingURL=create-element-if-not-defined.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-element-if-not-defined.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-element-if-not-defined.min.mjs.map new file mode 100644 index 0000000..85a319b --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-element-if-not-defined.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"create-element-if-not-defined.mjs.mjs","names":["elementChildren","createElement","createElementIfNotDefined","swiper","originalParams","params","checkProps","createElements","Object","keys","forEach","key","auto","element","el","className","append"],"sources":["0"],"mappings":"YAAcA,qBAAsBC,kBAAqB,kBAEzD,SAASC,0BAA0BC,EAAQC,EAAgBC,EAAQC,GAejE,OAdIH,EAAOE,OAAOE,gBAChBC,OAAOC,KAAKH,GAAYI,SAAQC,IAC9B,IAAKN,EAAOM,KAAwB,IAAhBN,EAAOO,KAAe,CACxC,IAAIC,EAAUb,gBAAgBG,EAAOW,GAAI,IAAIR,EAAWK,MAAQ,GAC3DE,IACHA,EAAUZ,cAAc,MAAOK,EAAWK,IAC1CE,EAAQE,UAAYT,EAAWK,GAC/BR,EAAOW,GAAGE,OAAOH,IAEnBR,EAAOM,GAAOE,EACdT,EAAeO,GAAOE,CACxB,KAGGR,CACT,QAESH"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-element-if-not-defined.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-element-if-not-defined.mjs new file mode 100644 index 0000000..10b283f --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-element-if-not-defined.mjs @@ -0,0 +1,21 @@ +import { e as elementChildren, c as createElement } from './utils.mjs'; + +function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; +} + +export { createElementIfNotDefined as c }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-shadow.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-shadow.min.mjs new file mode 100644 index 0000000..ee6b7a7 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-shadow.min.mjs @@ -0,0 +1,2 @@ +import{g as getSlideTransformEl,c as createElement}from"./utils.min.mjs";function createShadow(e,t,r){const s=`swiper-slide-shadow${r?`-${r}`:""}${e?` swiper-slide-shadow-${e}`:""}`,a=getSlideTransformEl(t);let i=a.querySelector(`.${s.split(" ").join(".")}`);return i||(i=createElement("div",s.split(" ")),a.append(i)),i}export{createShadow as c}; +//# sourceMappingURL=create-shadow.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-shadow.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-shadow.min.mjs.map new file mode 100644 index 0000000..4505556 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-shadow.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"create-shadow.mjs.mjs","names":["getSlideTransformEl","createElement","createShadow","suffix","slideEl","side","shadowClass","shadowContainer","shadowEl","querySelector","split","join","append"],"sources":["0"],"mappings":"YAAcA,yBAA0BC,kBAAqB,kBAE7D,SAASC,aAAaC,EAAQC,EAASC,GACrC,MAAMC,EAAc,sBAAsBD,EAAO,IAAIA,IAAS,KAAKF,EAAS,wBAAwBA,IAAW,KACzGI,EAAkBP,oBAAoBI,GAC5C,IAAII,EAAWD,EAAgBE,cAAc,IAAIH,EAAYI,MAAM,KAAKC,KAAK,QAK7E,OAJKH,IACHA,EAAWP,cAAc,MAAOK,EAAYI,MAAM,MAClDH,EAAgBK,OAAOJ,IAElBA,CACT,QAESN"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-shadow.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-shadow.mjs new file mode 100644 index 0000000..2767e70 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/create-shadow.mjs @@ -0,0 +1,14 @@ +import { g as getSlideTransformEl, c as createElement } from './utils.mjs'; + +function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; +} + +export { createShadow as c }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-init.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-init.min.mjs new file mode 100644 index 0000000..feed86e --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-init.min.mjs @@ -0,0 +1,2 @@ +function effectInit(e){const{effect:s,swiper:a,on:t,setTranslate:r,setTransition:i,overwriteParams:n,perspective:o,recreateShadows:f,getEffectParams:l}=e;let c;t("beforeInit",(()=>{if(a.params.effect!==s)return;a.classNames.push(`${a.params.containerModifierClass}${s}`),o&&o()&&a.classNames.push(`${a.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(a.params,e),Object.assign(a.originalParams,e)})),t("setTranslate",(()=>{a.params.effect===s&&r()})),t("setTransition",((e,t)=>{a.params.effect===s&&i(t)})),t("transitionEnd",(()=>{if(a.params.effect===s&&f){if(!l||!l().slideShadows)return;a.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),f()}})),t("virtualUpdate",(()=>{a.params.effect===s&&(a.slides.length||(c=!0),requestAnimationFrame((()=>{c&&a.slides&&a.slides.length&&(r(),c=!1)})))}))}export{effectInit as e}; +//# sourceMappingURL=effect-init.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-init.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-init.min.mjs.map new file mode 100644 index 0000000..7250e5b --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-init.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-init.mjs.mjs","names":["effectInit","params","effect","swiper","on","setTranslate","setTransition","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","classNames","push","containerModifierClass","overwriteParamsResult","Object","assign","originalParams","_s","duration","slideShadows","slides","forEach","slideEl","querySelectorAll","shadowEl","remove","length","requestAnimationFrame"],"sources":["0"],"mappings":"AAAA,SAASA,WAAWC,GAClB,MAAMC,OACJA,EAAMC,OACNA,EAAMC,GACNA,EAAEC,aACFA,EAAYC,cACZA,EAAaC,gBACbA,EAAeC,YACfA,EAAWC,gBACXA,EAAeC,gBACfA,GACET,EA+BJ,IAAIU,EA9BJP,EAAG,cAAc,KACf,GAAID,EAAOF,OAAOC,SAAWA,EAAQ,OACrCC,EAAOS,WAAWC,KAAK,GAAGV,EAAOF,OAAOa,yBAAyBZ,KAC7DM,GAAeA,KACjBL,EAAOS,WAAWC,KAAK,GAAGV,EAAOF,OAAOa,4BAE1C,MAAMC,EAAwBR,EAAkBA,IAAoB,CAAC,EACrES,OAAOC,OAAOd,EAAOF,OAAQc,GAC7BC,OAAOC,OAAOd,EAAOe,eAAgBH,EAAsB,IAE7DX,EAAG,gBAAgB,KACbD,EAAOF,OAAOC,SAAWA,GAC7BG,GAAc,IAEhBD,EAAG,iBAAiB,CAACe,EAAIC,KACnBjB,EAAOF,OAAOC,SAAWA,GAC7BI,EAAcc,EAAS,IAEzBhB,EAAG,iBAAiB,KAClB,GAAID,EAAOF,OAAOC,SAAWA,GACzBO,EAAiB,CACnB,IAAKC,IAAoBA,IAAkBW,aAAc,OAEzDlB,EAAOmB,OAAOC,SAAQC,IACpBA,EAAQC,iBAAiB,gHAAgHF,SAAQG,GAAYA,EAASC,UAAS,IAGjLlB,GACF,KAGFL,EAAG,iBAAiB,KACdD,EAAOF,OAAOC,SAAWA,IACxBC,EAAOmB,OAAOM,SACjBjB,GAAyB,GAE3BkB,uBAAsB,KAChBlB,GAA0BR,EAAOmB,QAAUnB,EAAOmB,OAAOM,SAC3DvB,IACAM,GAAyB,EAC3B,IACA,GAEN,QAESX"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-init.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-init.mjs new file mode 100644 index 0000000..d418687 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-init.mjs @@ -0,0 +1,58 @@ +function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); +} + +export { effectInit as e }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-target.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-target.min.mjs new file mode 100644 index 0000000..9829053 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-target.min.mjs @@ -0,0 +1,2 @@ +import{g as getSlideTransformEl}from"./utils.min.mjs";function effectTarget(e,i){const t=getSlideTransformEl(i);return t!==i&&(t.style.backfaceVisibility="hidden",t.style["-webkit-backface-visibility"]="hidden"),t}export{effectTarget as e}; +//# sourceMappingURL=effect-target.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-target.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-target.min.mjs.map new file mode 100644 index 0000000..9d0c540 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-target.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-target.mjs.mjs","names":["getSlideTransformEl","effectTarget","effectParams","slideEl","transformEl","style","backfaceVisibility"],"sources":["0"],"mappings":"YAAcA,wBAA2B,kBAEzC,SAASC,aAAaC,EAAcC,GAClC,MAAMC,EAAcJ,oBAAoBG,GAKxC,OAJIC,IAAgBD,IAClBC,EAAYC,MAAMC,mBAAqB,SACvCF,EAAYC,MAAM,+BAAiC,UAE9CD,CACT,QAESH"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-target.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-target.mjs new file mode 100644 index 0000000..b1a7b3b --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-target.mjs @@ -0,0 +1,12 @@ +import { g as getSlideTransformEl } from './utils.mjs'; + +function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; +} + +export { effectTarget as e }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-virtual-transition-end.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-virtual-transition-end.min.mjs new file mode 100644 index 0000000..6071178 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-virtual-transition-end.min.mjs @@ -0,0 +1,2 @@ +import{k as elementTransitionEnd}from"./utils.min.mjs";function effectVirtualTransitionEnd(e){let{swiper:t,duration:n,transformElements:r,allSlides:i}=e;const{activeIndex:a}=t;if(t.params.virtualTranslate&&0!==n){let e,n=!1;e=i?r:r.filter((e=>{const n=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(n)===a})),e.forEach((e=>{elementTransitionEnd(e,(()=>{if(n)return;if(!t||t.destroyed)return;n=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}export{effectVirtualTransitionEnd as e}; +//# sourceMappingURL=effect-virtual-transition-end.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-virtual-transition-end.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-virtual-transition-end.min.mjs.map new file mode 100644 index 0000000..da4e095 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-virtual-transition-end.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"effect-virtual-transition-end.mjs.mjs","names":["elementTransitionEnd","effectVirtualTransitionEnd","_ref","swiper","duration","transformElements","allSlides","activeIndex","params","virtualTranslate","transitionEndTarget","eventTriggered","filter","transformEl","el","classList","contains","parentElement","slides","slideEl","shadowRoot","parentNode","getSlide","getSlideIndex","forEach","destroyed","animating","evt","window","CustomEvent","bubbles","cancelable","wrapperEl","dispatchEvent"],"sources":["0"],"mappings":"YAAcA,yBAA4B,kBAE1C,SAASC,2BAA2BC,GAClC,IAAIC,OACFA,EAAMC,SACNA,EAAQC,kBACRA,EAAiBC,UACjBA,GACEJ,EACJ,MAAMK,YACJA,GACEJ,EASJ,GAAIA,EAAOK,OAAOC,kBAAiC,IAAbL,EAAgB,CACpD,IACIM,EADAC,GAAiB,EAGnBD,EADEJ,EACoBD,EAEAA,EAAkBO,QAAOC,IAC7C,MAAMC,EAAKD,EAAYE,UAAUC,SAAS,0BAf/BF,KACf,IAAKA,EAAGG,cAGN,OADcd,EAAOe,OAAON,QAAOO,GAAWA,EAAQC,YAAcD,EAAQC,aAAeN,EAAGO,aAAY,GAG5G,OAAOP,EAAGG,aAAa,EASmDK,CAAST,GAAeA,EAC9F,OAAOV,EAAOoB,cAAcT,KAAQP,CAAW,IAGnDG,EAAoBc,SAAQV,IAC1Bd,qBAAqBc,GAAI,KACvB,GAAIH,EAAgB,OACpB,IAAKR,GAAUA,EAAOsB,UAAW,OACjCd,GAAiB,EACjBR,EAAOuB,WAAY,EACnB,MAAMC,EAAM,IAAIC,OAAOC,YAAY,gBAAiB,CAClDC,SAAS,EACTC,YAAY,IAEd5B,EAAO6B,UAAUC,cAAcN,EAAI,GACnC,GAEN,CACF,QAES1B"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-virtual-transition-end.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-virtual-transition-end.mjs new file mode 100644 index 0000000..540615e --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/effect-virtual-transition-end.mjs @@ -0,0 +1,48 @@ +import { k as elementTransitionEnd } from './utils.mjs'; + +function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } +} + +export { effectVirtualTransitionEnd as e }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/get-element-params.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/get-element-params.min.mjs new file mode 100644 index 0000000..8a456d3 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/get-element-params.min.mjs @@ -0,0 +1,2 @@ +import{e as extend,i as isObject,c as attrToProp,p as paramsList}from"./update-swiper.min.mjs";import{d as defaults}from"./swiper-core.min.mjs";const formatValue=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let a;try{a=JSON.parse(e)}catch(t){a=e}return a}return e}},modulesParamsList=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function getParams(e,a,t){const r={},n={};extend(r,defaults);const i=[...paramsList,"on"],o=i.map((e=>e.replace(/_/,"")));i.forEach((a=>{a=a.replace("_",""),void 0!==e[a]&&(n[a]=e[a])}));const s=[...e.attributes];return"string"==typeof a&&void 0!==t&&s.push({name:a,value:isObject(t)?{...t}:t}),s.forEach((e=>{const a=modulesParamsList.filter((a=>0===e.name.indexOf(`${a}-`)))[0];if(a){const t=attrToProp(a),r=attrToProp(e.name.split(`${a}-`)[1]);void 0===n[t]&&(n[t]={}),!0===n[t]&&(n[t]={enabled:!0}),n[t][r]=formatValue(e.value)}else{const a=attrToProp(e.name);if(!o.includes(a))return;const t=formatValue(e.value);n[a]&&modulesParamsList.includes(e.name)&&!isObject(t)?(n[a].constructor!==Object&&(n[a]={}),n[a].enabled=!!t):n[a]=t}})),extend(r,n),r.navigation?r.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==r.navigation?r.navigation:{}}:!1===r.navigation&&delete r.navigation,r.scrollbar?r.scrollbar={el:".swiper-scrollbar",...!0!==r.scrollbar?r.scrollbar:{}}:!1===r.scrollbar&&delete r.scrollbar,r.pagination?r.pagination={el:".swiper-pagination",...!0!==r.pagination?r.pagination:{}}:!1===r.pagination&&delete r.pagination,{params:r,passedParams:n}}export{getParams as g}; +//# sourceMappingURL=get-element-params.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/get-element-params.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/get-element-params.min.mjs.map new file mode 100644 index 0000000..883b699 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/get-element-params.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"get-element-params.mjs.mjs","names":["extend","isObject","attrToProp","paramsList","defaults","formatValue","val","parseFloat","Number","includes","v","JSON","parse","err","modulesParamsList","getParams","element","propName","propValue","params","passedParams","localParamsList","allowedParams","map","key","replace","forEach","paramName","attrsList","attributes","push","name","value","attr","moduleParam","filter","mParam","indexOf","parentObjName","subObjName","split","enabled","constructor","Object","navigation","prevEl","nextEl","scrollbar","el","pagination"],"sources":["0"],"mappings":"YAAcA,YAAaC,cAAeC,gBAAiBC,eAAkB,sCAC/DC,aAAgB,wBAE9B,MAAMC,YAAcC,IAClB,GAAIC,WAAWD,KAASE,OAAOF,GAAM,OAAOE,OAAOF,GACnD,GAAY,SAARA,EAAgB,OAAO,EAC3B,GAAY,KAARA,EAAY,OAAO,EACvB,GAAY,UAARA,EAAiB,OAAO,EAC5B,GAAY,SAARA,EAAgB,OAAO,KAC3B,GAAY,cAARA,EAAJ,CACA,GAAmB,iBAARA,GAAoBA,EAAIG,SAAS,MAAQH,EAAIG,SAAS,MAAQH,EAAIG,SAAS,KAAM,CAC1F,IAAIC,EACJ,IACEA,EAAIC,KAAKC,MAAMN,EACjB,CAAE,MAAOO,GACPH,EAAIJ,CACN,CACA,OAAOI,CACT,CACA,OAAOJ,CAVkC,CAU/B,EAENQ,kBAAoB,CAAC,OAAQ,WAAY,aAAc,eAAgB,mBAAoB,kBAAmB,cAAe,cAAe,cAAe,YAAa,OAAQ,kBAAmB,UAAW,WAAY,aAAc,aAAc,aAAc,WAAY,YAAa,SAAU,UAAW,QACxT,SAASC,UAAUC,EAASC,EAAUC,GACpC,MAAMC,EAAS,CAAC,EACVC,EAAe,CAAC,EACtBpB,OAAOmB,EAAQf,UACf,MAAMiB,EAAkB,IAAIlB,WAAY,MAClCmB,EAAgBD,EAAgBE,KAAIC,GAAOA,EAAIC,QAAQ,IAAK,MAGlEJ,EAAgBK,SAAQC,IACtBA,EAAYA,EAAUF,QAAQ,IAAK,SACD,IAAvBT,EAAQW,KACjBP,EAAaO,GAAaX,EAAQW,GACpC,IAIF,MAAMC,EAAY,IAAIZ,EAAQa,YA6D9B,MA5DwB,iBAAbZ,QAA8C,IAAdC,GACzCU,EAAUE,KAAK,CACbC,KAAMd,EACNe,MAAO/B,SAASiB,GAAa,IACxBA,GACDA,IAGRU,EAAUF,SAAQO,IAChB,MAAMC,EAAcpB,kBAAkBqB,QAAOC,GAA8C,IAApCH,EAAKF,KAAKM,QAAQ,GAAGD,QAAkB,GAC9F,GAAIF,EAAa,CACf,MAAMI,EAAgBpC,WAAWgC,GAC3BK,EAAarC,WAAW+B,EAAKF,KAAKS,MAAM,GAAGN,MAAgB,SACtB,IAAhCd,EAAakB,KAAgClB,EAAakB,GAAiB,CAAC,IACnD,IAAhClB,EAAakB,KACflB,EAAakB,GAAiB,CAC5BG,SAAS,IAGbrB,EAAakB,GAAeC,GAAclC,YAAY4B,EAAKD,MAC7D,KAAO,CACL,MAAMD,EAAO7B,WAAW+B,EAAKF,MAC7B,IAAKT,EAAcb,SAASsB,GAAO,OACnC,MAAMC,EAAQ3B,YAAY4B,EAAKD,OAC3BZ,EAAaW,IAASjB,kBAAkBL,SAASwB,EAAKF,QAAU9B,SAAS+B,IACvEZ,EAAaW,GAAMW,cAAgBC,SACrCvB,EAAaW,GAAQ,CAAC,GAExBX,EAAaW,GAAMU,UAAYT,GAE/BZ,EAAaW,GAAQC,CAEzB,KAEFhC,OAAOmB,EAAQC,GACXD,EAAOyB,WACTzB,EAAOyB,WAAa,CAClBC,OAAQ,sBACRC,OAAQ,0BACkB,IAAtB3B,EAAOyB,WAAsBzB,EAAOyB,WAAa,CAAC,IAEzB,IAAtBzB,EAAOyB,mBACTzB,EAAOyB,WAEZzB,EAAO4B,UACT5B,EAAO4B,UAAY,CACjBC,GAAI,wBACqB,IAArB7B,EAAO4B,UAAqB5B,EAAO4B,UAAY,CAAC,IAExB,IAArB5B,EAAO4B,kBACT5B,EAAO4B,UAEZ5B,EAAO8B,WACT9B,EAAO8B,WAAa,CAClBD,GAAI,yBACsB,IAAtB7B,EAAO8B,WAAsB9B,EAAO8B,WAAa,CAAC,IAEzB,IAAtB9B,EAAO8B,mBACT9B,EAAO8B,WAET,CACL9B,SACAC,eAEJ,QAESL"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/get-element-params.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/get-element-params.mjs new file mode 100644 index 0000000..eb00b03 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/get-element-params.mjs @@ -0,0 +1,106 @@ +import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs'; +import { d as defaults } from './swiper-core.mjs'; + +const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; +}; +const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; +function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; +} + +export { getParams as g }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/ssr-window.esm.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/ssr-window.esm.min.mjs new file mode 100644 index 0000000..4ee44c8 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/ssr-window.esm.min.mjs @@ -0,0 +1,2 @@ +function isObject(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function extend(e,t){void 0===e&&(e={}),void 0===t&&(t={}),Object.keys(t).forEach((n=>{void 0===e[n]?e[n]=t[n]:isObject(t[n])&&isObject(e[n])&&Object.keys(t[n]).length>0&&extend(e[n],t[n])}))}const ssrDocument={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function getDocument(){const e="undefined"!=typeof document?document:{};return extend(e,ssrDocument),e}const ssrWindow={document:ssrDocument,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function getWindow(){const e="undefined"!=typeof window?window:{};return extend(e,ssrWindow),e}export{getWindow as a,getDocument as g}; +//# sourceMappingURL=ssr-window.esm.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/ssr-window.esm.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/ssr-window.esm.min.mjs.map new file mode 100644 index 0000000..2a3d646 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/ssr-window.esm.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"ssr-window.esm.mjs.mjs","names":["isObject","obj","constructor","Object","extend","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window"],"sources":["0"],"mappings":"AAYA,SAASA,SAASC,GAChB,OAAe,OAARA,GAA+B,iBAARA,GAAoB,gBAAiBA,GAAOA,EAAIC,cAAgBC,MAChG,CACA,SAASC,OAAOC,EAAQC,QACP,IAAXD,IACFA,EAAS,CAAC,QAEA,IAARC,IACFA,EAAM,CAAC,GAETH,OAAOI,KAAKD,GAAKE,SAAQC,SACI,IAAhBJ,EAAOI,GAAsBJ,EAAOI,GAAOH,EAAIG,GAAcT,SAASM,EAAIG,KAAST,SAASK,EAAOI,KAASN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,GACpJN,OAAOC,EAAOI,GAAMH,EAAIG,GAC1B,GAEJ,CACA,MAAME,YAAc,CAClBC,KAAM,CAAC,EACP,gBAAAC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBC,cAAe,CACb,IAAAC,GAAQ,EACRC,SAAU,IAEZC,cAAa,IACJ,KAETC,iBAAgB,IACP,GAETC,eAAc,IACL,KAETC,YAAW,KACF,CACL,SAAAC,GAAa,IAGjBC,cAAa,KACJ,CACLC,SAAU,GACVC,WAAY,GACZC,MAAO,CAAC,EACR,YAAAC,GAAgB,EAChBC,qBAAoB,IACX,KAIbC,gBAAe,KACN,CAAC,GAEVC,WAAU,IACD,KAETC,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGZ,SAASC,cACP,MAAMC,EAA0B,oBAAbC,SAA2BA,SAAW,CAAC,EAE1D,OADAtC,OAAOqC,EAAK9B,aACL8B,CACT,CACA,MAAME,UAAY,CAChBD,SAAU/B,YACViC,UAAW,CACTC,UAAW,IAEbd,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEVO,QAAS,CACP,YAAAC,GAAgB,EAChB,SAAAC,GAAa,EACb,EAAAC,GAAM,EACN,IAAAC,GAAQ,GAEVC,YAAa,WACX,OAAOC,IACT,EACA,gBAAAvC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBuC,iBAAgB,KACP,CACLC,iBAAgB,IACP,KAIb,KAAAC,GAAS,EACT,IAAAC,GAAQ,EACRC,OAAQ,CAAC,EACT,UAAAC,GAAc,EACd,YAAAC,GAAgB,EAChBC,WAAU,KACD,CAAC,GAEVC,sBAAsBC,GACM,oBAAfJ,YACTI,IACO,MAEFJ,WAAWI,EAAU,GAE9B,oBAAAC,CAAqBC,GACO,oBAAfN,YAGXC,aAAaK,EACf,GAEF,SAASC,YACP,MAAMC,EAAwB,oBAAXC,OAAyBA,OAAS,CAAC,EAEtD,OADA/D,OAAO8D,EAAKvB,WACLuB,CACT,QAESD,eAAgBzB"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/ssr-window.esm.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/ssr-window.esm.mjs new file mode 100644 index 0000000..874f0e9 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/ssr-window.esm.mjs @@ -0,0 +1,145 @@ +/** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ +/* eslint-disable no-param-reassign */ +function isObject(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; +} +function extend(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + extend(target[key], src[key]); + } + }); +} +const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } +}; +function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend(doc, ssrDocument); + return doc; +} +const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } +}; +function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend(win, ssrWindow); + return win; +} + +export { getWindow as a, getDocument as g }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/swiper-core.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/swiper-core.min.mjs new file mode 100644 index 0000000..f1b5357 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/swiper-core.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow,g as getDocument}from"./ssr-window.esm.min.mjs";import{a as elementParents,p as elementStyle,e as elementChildren,s as setCSSProperty,f as elementOuterSize,q as elementNextAll,r as elementPrevAll,j as getTranslate,t as animateCSSModeScroll,n as nextTick,u as showWarning,c as createElement,v as elementIsChildOf,d as now,w as extend,h as elementIndex,x as deleteProps}from"./utils.min.mjs";let support,deviceCached,browser;function calcSupport(){const e=getWindow(),t=getDocument();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}function getSupport(){return support||(support=calcSupport()),support}function calcDevice(e){let{userAgent:t}=void 0===e?{}:e;const s=getSupport(),i=getWindow(),r=i.navigator.platform,n=t||i.navigator.userAgent,a={ios:!1,android:!1},l=i.screen.width,o=i.screen.height,d=n.match(/(Android);?[\s\/]+([\d.]+)?/);let c=n.match(/(iPad).*OS\s([\d_]+)/);const p=n.match(/(iPod)(.*OS\s([\d_]+))?/),u=!c&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===r;let m="MacIntel"===r;return!c&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${o}`)>=0&&(c=n.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),m=!1),d&&!h&&(a.os="android",a.android=!0),(c||u||p)&&(a.os="ios",a.ios=!0),a}function getDevice(e){return void 0===e&&(e={}),deviceCached||(deviceCached=calcDevice(e)),deviceCached}function calcBrowser(){const e=getWindow(),t=getDevice();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=i();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||r&&t.ios,isWebView:r}}function getBrowser(){return browser||(browser=calcBrowser()),browser}function Resize(e){let{swiper:t,on:s,emit:i}=e;const r=getWindow();let n=null,a=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},o=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{a=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),n.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",o))})),s("destroy",(()=>{a&&r.cancelAnimationFrame(a),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",o)}))}function Observer(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const n=[],a=getWindow(),l=function(e,s){void 0===s&&(s={});const i=new(a.MutationObserver||a.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};a.requestAnimationFrame?a.requestAnimationFrame(s):a.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),n.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=elementParents(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}var eventsEmitter={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};function updateSize(){const e=this;let t,s;const i=e.el;t=void 0!==e.params.width&&null!==e.params.width?e.params.width:i.clientWidth,s=void 0!==e.params.height&&null!==e.params.height?e.params.height:i.clientHeight,0===t&&e.isHorizontal()||0===s&&e.isVertical()||(t=t-parseInt(elementStyle(i,"padding-left")||0,10)-parseInt(elementStyle(i,"padding-right")||0,10),s=s-parseInt(elementStyle(i,"padding-top")||0,10)-parseInt(elementStyle(i,"padding-bottom")||0,10),Number.isNaN(t)&&(t=0),Number.isNaN(s)&&(s=0),Object.assign(e,{width:t,height:s,size:e.isHorizontal()?t:s}))}function updateSlides(){const e=this;function t(t,s){return parseFloat(t.getPropertyValue(e.getDirectionLabel(s))||0)}const s=e.params,{wrapperEl:i,slidesEl:r,size:n,rtlTranslate:a,wrongRTL:l}=e,o=e.virtual&&s.virtual.enabled,d=o?e.virtual.slides.length:e.slides.length,c=elementChildren(r,`.${e.params.slideClass}, swiper-slide`),p=o?e.virtual.slides.length:c.length;let u=[];const h=[],m=[];let f=s.slidesOffsetBefore;"function"==typeof f&&(f=s.slidesOffsetBefore.call(e));let v=s.slidesOffsetAfter;"function"==typeof v&&(v=s.slidesOffsetAfter.call(e));const g=e.snapGrid.length,w=e.slidesGrid.length;let S=s.spaceBetween,T=-f,b=0,x=0;if(void 0===n)return;"string"==typeof S&&S.indexOf("%")>=0?S=parseFloat(S.replace("%",""))/100*n:"string"==typeof S&&(S=parseFloat(S)),e.virtualSize=-S,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(setCSSProperty(i,"--swiper-centered-offset-before",""),setCSSProperty(i,"--swiper-centered-offset-after",""));const y=s.grid&&s.grid.rows>1&&e.grid;let E;y?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const C="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&u.push(e.virtualSize-n)}if(o&&s.loop){const t=m[0]+S;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${S}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;m.forEach((t=>{e+=t+(S||0)})),e-=S;const t=e-n;u=u.map((e=>e<=0?-f:e>t?t+v:e))}if(s.centerInsufficientSlides){let e=0;m.forEach((t=>{e+=t+(S||0)})),e-=S;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{u[t]=e-s})),h.forEach(((e,t)=>{h[t]=e+s}))}}if(Object.assign(e,{slides:c,snapGrid:u,slidesGrid:h,slidesSizesGrid:m}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){setCSSProperty(i,"--swiper-centered-offset-before",-u[0]+"px"),setCSSProperty(i,"--swiper-centered-offset-after",e.size/2-m[m.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),u.length!==g&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==w&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);p<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}}function updateAutoHeight(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)}function updateSlidesOffset(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};function updateSlidesProgress(e){void 0===e&&(e=this&&this.translate||0);const t=this,s=t.params,{slides:i,rtlTranslate:r,snapGrid:n}=t;if(0===i.length)return;void 0===i[0].swiperSlideOffset&&t.updateSlidesOffset();let a=-e;r&&(a=e),t.visibleSlidesIndexes=[],t.visibleSlides=[];let l=s.spaceBetween;"string"==typeof l&&l.indexOf("%")>=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],f=u>=0&&u1&&h<=t.size||u<=0&&h>=t.size;f&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e)),toggleSlideClasses$1(o,f,s.slideVisibleClass),toggleSlideClasses$1(o,m,s.slideFullyVisibleClass),o.progress=r?-c:c,o.originalProgress=r?-p:p}}function updateProgress(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:l}=t;const o=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=l||r>=1,s&&(r=0),l&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=r?(o-r)/a:(o+a-n)/a,l>1&&(l-=1)}Object.assign(t,{progress:r,progressLoop:l,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!o&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(o&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)}const toggleSlideClasses=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};function updateSlidesClasses(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,l=e=>elementChildren(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${r}"]`);else a?(o=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):o=t[r];o&&(a||(c=elementNextAll(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=elementPrevAll(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{toggleSlideClasses(e,e===o,s.slideActiveClass),toggleSlideClasses(e,e===c,s.slideNextClass),toggleSlideClasses(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()}const processLazyPreloader=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},unlazy=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},preload=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&unlazy(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&unlazy(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}function updateActiveIndex(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=getActiveIndexByTranslate(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/r.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===n&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&preload(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))}function updateClickedSlide(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;eo?o:i&&ea?"next":n=o.length&&(v=o.length-1);const g=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(u?g>n.translate&&g>n.minTranslate():gn.translate&&g>n.maxTranslate()&&(p||0)!==a)return!1}let w;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(g),w=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return animateCSSModeScroll({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(g),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,w),0===t?n.transitionEnd(s,w):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,w))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0}function slideToLoop(e,t,s,i){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let l=r.params.slidesPerView;"auto"===l?l=r.slidesPerViewDynamic():(l=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&l%2==0&&(l+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r}function slideNext(e,t,s){void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r||i.destroyed)return i;void 0===e&&(e=i.params.speed);let l=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex{i.slideTo(i.activeIndex+o,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)}function slidePrev(e,t,s){void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:l,enabled:o,animating:d}=i;if(!o||i.destroyed)return i;void 0===e&&(e=i.params.speed);const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?i.translate:-i.translate),h=n.map((e=>p(e)));let m=n[h.indexOf(u)-1];if(void 0===m&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(m=n[e>0?e-1:e])}let f=0;if(void 0!==m&&(f=a.indexOf(m),f<0&&(f=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(f=f-i.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(f,e,t,s)})),!0):i.slideTo(f,e,t,s)}function slideReset(e,t,s){void 0===t&&(t=!0);const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)}function slideToClosest(e,t,s,i){void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),l=a+Math.floor((n-a)/r.params.slidesPerGroup),o=r.rtlTranslate?r.translate:-r.translate;if(o>=r.snapGrid[l]){const e=r.snapGrid[l];o-e>(r.snapGrid[l+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[l-1];o-e<=(r.snapGrid[l]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)}function slideToClickedSlide(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const a=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(elementChildren(s,`${a}[data-swiper-slide-index="${r}"]`)[0]),nextTick((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(elementChildren(s,`${a}[data-swiper-slide-index="${r}"]`)[0]),nextTick((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}var slide={slideTo:slideTo,slideToLoop:slideToLoop,slideNext:slideNext,slidePrev:slidePrev,slideReset:slideReset,slideToClosest:slideToClosest,slideToClickedSlide:slideToClickedSlide};function loopCreate(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{elementChildren(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),l=t.slides.length%a!=0,o=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):b=n;const x="next"===i||!i,y="prev"===i||!i;let E=0,C=0;const M=w?Math.ceil(d.length/h.grid.rows):d.length,P=(w?d[n].column:n)+(m&&void 0===r?-f/2+.5:0);if(P=0;t-=1)d[t].column===e&&S.push(t)}else S.push(M-t-1)}}else if(P+f>M-g){C=Math.max(P-(M-2*g),v);for(let e=0;e{e.column===t&&T.push(s)})):T.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),y&&S.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),x&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===h.slidesPerView?o.updateSlides():w&&(S.length>0&&y||T.length>0&&x)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),h.watchSlidesProgress&&o.updateSlidesOffset(),s)if(S.length>0&&y){if(void 0===t){const e=o.slidesGrid[b],t=o.slidesGrid[b+E]-e;l?o.setTranslate(o.translate-t):(o.slideTo(b+Math.ceil(E),0,!1,!0),r&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(r){const e=w?S.length/h.grid.rows:S.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(T.length>0&&x)if(void 0===t){const e=o.slidesGrid[b],t=o.slidesGrid[b-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(b-C,0,!1,!0),r&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=w?T.length/h.grid.rows:T.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===h.slidesPerView&&s})}o.emit("loopFix")}function loopDestroy(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}var loop={loopCreate:loopCreate,loopFix:loopFix,loopDestroy:loopDestroy};function setGrabCursor(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))}function unsetGrabCursor(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}var grabCursor={setGrabCursor:setGrabCursor,unsetGrabCursor:unsetGrabCursor};function closestElement(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===getDocument()||s===getWindow())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}function preventEdgeSwipe(e,t,s){const i=getWindow(),{params:r}=e,n=r.edgeSwipeDetection,a=r.edgeSwipeThreshold;return!n||!(s<=a||s>=i.innerWidth-a)||"prevent"===n&&(t.preventDefault(),!0)}function onTouchStart(e){const t=this,s=getDocument();let i=e;i.originalEvent&&(i=i.originalEvent);const r=t.touchEventsData;if("pointerdown"===i.type){if(null!==r.pointerId&&r.pointerId!==i.pointerId)return;r.pointerId=i.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(r.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void preventEdgeSwipe(t,i,i.targetTouches[0].pageX);const{params:n,touches:a,enabled:l}=t;if(!l)return;if(!n.simulateTouch&&"mouse"===i.pointerType)return;if(t.animating&&n.preventInteractionOnTransition)return;!t.animating&&n.cssMode&&n.loop&&t.loopFix();let o=i.target;if("wrapper"===n.touchEventsTarget&&!elementIsChildOf(o,t.wrapperEl))return;if("which"in i&&3===i.which)return;if("button"in i&&i.button>0)return;if(r.isTouched&&r.isMoved)return;const d=!!n.noSwipingClass&&""!==n.noSwipingClass,c=i.composedPath?i.composedPath():i.path;d&&i.target&&i.target.shadowRoot&&c&&(o=c[0]);const p=n.noSwipingSelector?n.noSwipingSelector:`.${n.noSwipingClass}`,u=!(!i.target||!i.target.shadowRoot);if(n.noSwiping&&(u?closestElement(p,o):o.closest(p)))return void(t.allowClick=!0);if(n.swipeHandler&&!o.closest(n.swipeHandler))return;a.currentX=i.pageX,a.currentY=i.pageY;const h=a.currentX,m=a.currentY;if(!preventEdgeSwipe(t,i,h))return;Object.assign(r,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),a.startX=h,a.startY=m,r.touchStartTime=now(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,n.threshold>0&&(r.allowThresholdMove=!1);let f=!0;o.matches(r.focusableElements)&&(f=!1,"SELECT"===o.nodeName&&(r.isTouched=!1)),s.activeElement&&s.activeElement.matches(r.focusableElements)&&s.activeElement!==o&&s.activeElement.blur();const v=f&&t.allowTouchMove&&n.touchStartPreventDefault;!n.touchStartForcePreventDefault&&!v||o.isContentEditable||i.preventDefault(),n.freeMode&&n.freeMode.enabled&&t.freeMode&&t.animating&&!n.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",i)}function onTouchMove(e){const t=getDocument(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:a,enabled:l}=s;if(!l)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let o,d=e;if(d.originalEvent&&(d=d.originalEvent),"pointermove"===d.type){if(null!==i.touchId)return;if(d.pointerId!==i.pointerId)return}if("touchmove"===d.type){if(o=[...d.changedTouches].filter((e=>e.identifier===i.touchId))[0],!o||o.identifier!==i.touchId)return}else o=d;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",d));const c=o.pageX,p=o.pageY;if(d.preventedByNestedSwiper)return n.startX=c,void(n.startY=p);if(!s.allowTouchMove)return d.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:c,startY:p,currentX:c,currentY:p}),i.touchStartTime=now()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(pn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(cn.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&d.target===t.activeElement&&d.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",d),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=c,n.currentY=p;const u=n.currentX-n.startX,h=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(u**2+h**2)=25&&(e=180*Math.atan2(Math.abs(h),Math.abs(u))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",d),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling||"touchmove"===d.type&&i.preventTouchMoveFromPointerMove)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&d.cancelable&&d.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&d.stopPropagation();let m=s.isHorizontal()?u:h,f=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(m=Math.abs(m)*(a?1:-1),f=Math.abs(f)*(a?1:-1)),n.diff=m,m*=r.touchRatio,a&&(m=-m,f=-f);const v=s.touchesDirection;s.swipeDirection=m>0?"prev":"next",s.touchesDirection=f>0?"prev":"next";const g=s.params.loop&&!r.cssMode,w="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(g&&w&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",d)}if((new Date).getTime(),i.isMoved&&i.allowThresholdMove&&v!==s.touchesDirection&&g&&w&&Math.abs(m)>=1)return Object.assign(n,{startX:c,startY:p,currentX:c,currentY:p,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",d),i.isMoved=!0,i.currentTranslate=m+i.startTranslate;let S=!0,T=r.resistanceRatio;if(r.touchReleaseOnEdges&&(T=0),m>0?(g&&w&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(S=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+m)**T))):m<0&&(g&&w&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(m)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function onTouchEnd(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:a,rtlTranslate:l,slidesGrid:o,enabled:d}=t;if(!d)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const c=now(),p=c-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),p<300&&c-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=now(),nextTick((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===a.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let u;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,u=n.followFinger?l?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:u});const h=u>=-t.maxTranslate()&&!t.params.loop;let m=0,f=t.slidesSizesGrid[0];for(let e=0;e=o[e]&&u=o[e])&&(m=e,f=o[o.length-1]-o[o.length-2])}let v=null,g=null;n.rewind&&(t.isBeginning?g=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(v=0));const w=(u-o[m])/f,S=mn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(w>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?v:m+S):t.slideTo(m)),"prev"===t.swipeDirection&&(w>1-n.longSwipesRatio?t.slideTo(m+S):null!==g&&w<0&&Math.abs(w)>n.longSwipesRatio?t.slideTo(g):t.slideTo(m))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(m+S):t.slideTo(m):("next"===t.swipeDirection&&t.slideTo(null!==v?v:m+S),"prev"===t.swipeDirection&&t.slideTo(null!==g?g:m))}}function onResize(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function onClick(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function onScroll(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function onLoad(e){const t=this;processLazyPreloader(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function onDocumentTouchStart(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const events=(e,t)=>{const s=getDocument(),{params:i,el:r,wrapperEl:n,device:a}=e,l=!!i.nested,o="on"===t?"addEventListener":"removeEventListener",d=t;r&&"string"!=typeof r&&(s[o]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),r[o]("touchstart",e.onTouchStart,{passive:!1}),r[o]("pointerdown",e.onTouchStart,{passive:!1}),s[o]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[o]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[o]("touchend",e.onTouchEnd,{passive:!0}),s[o]("pointerup",e.onTouchEnd,{passive:!0}),s[o]("pointercancel",e.onTouchEnd,{passive:!0}),s[o]("touchcancel",e.onTouchEnd,{passive:!0}),s[o]("pointerout",e.onTouchEnd,{passive:!0}),s[o]("pointerleave",e.onTouchEnd,{passive:!0}),s[o]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[o]("click",e.onClick,!0),i.cssMode&&n[o]("scroll",e.onScroll),i.updateOnWindowResize?e[d](a.ios||a.android?"resize orientationchange observerUpdate":"resize observerUpdate",onResize,!0):e[d]("observerUpdate",onResize,!0),r[o]("load",e.onLoad,{capture:!0}))};function attachEvents(){const e=this,{params:t}=e;e.onTouchStart=onTouchStart.bind(e),e.onTouchMove=onTouchMove.bind(e),e.onTouchEnd=onTouchEnd.bind(e),e.onDocumentTouchStart=onDocumentTouchStart.bind(e),t.cssMode&&(e.onScroll=onScroll.bind(e)),e.onClick=onClick.bind(e),e.onLoad=onLoad.bind(e),events(e,"on")}function detachEvents(){events(this,"off")}var events$1={attachEvents:attachEvents,detachEvents:detachEvents};const isGridEnabled=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;function setBreakpoint(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const l=(a in n?n[a]:void 0)||e.originalParams,o=isGridEnabled(e,i),d=isGridEnabled(e,l),c=e.params.grabCursor,p=l.grabCursor,u=i.enabled;o&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),c&&!p?e.unsetGrabCursor():!c&&p&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=i[t]&&i[t].enabled,r=l[t]&&l[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const h=l.direction&&l.direction!==i.direction,m=i.loop&&(l.slidesPerView!==i.slidesPerView||h),f=i.loop;h&&s&&e.changeDirection(),extend(e.params,l);const v=e.params.enabled,g=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),u&&!v?e.disable():!u&&v&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",l),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!f&&g?(e.loopCreate(t),e.updateSlides()):f&&!g&&e.loopDestroy()),e.emit("breakpoint",l)}function getBreakpoint(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=getWindow(),n="window"===t?r.innerHeight:s.clientHeight,a=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));a.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;e{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}function addClasses(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=prepareClasses(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()}function removeClasses(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}var classes={addClasses:addClasses,removeClasses:removeClasses};function checkOverflow(){const e=this,{isLocked:t,params:s}=e,{slidesOffsetBefore:i}=s;if(i){const t=e.slides.length-1,s=e.slidesGrid[t]+e.slidesSizesGrid[t]+2*i;e.isLocked=e.size>s}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}var checkOverflow$1={checkOverflow:checkOverflow},defaults={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function moduleExtendParams(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),extend(t,s)):extend(t,s)):extend(t,s)}}const prototypes={eventsEmitter:eventsEmitter,update:update,translate:translate,transition:transition,slide:slide,loop:loop,grabCursor:grabCursor,events:events$1,breakpoints:breakpoints,checkOverflow:checkOverflow$1,classes:classes},extendedDefaults={};class Swiper{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const i=extend({},t,{el:s});e.push(new Swiper(i))})),e}const a=this;a.__swiper__=!0,a.support=getSupport(),a.device=getDevice({userAgent:t.userAgent}),a.browser=getBrowser(),a.eventsListeners={},a.eventsAnyListeners=[],a.modules=[...a.__modules__],t.modules&&Array.isArray(t.modules)&&a.modules.push(...t.modules);const l={};a.modules.forEach((e=>{e({params:t,swiper:a,extendParams:moduleExtendParams(t,l),on:a.on.bind(a),once:a.once.bind(a),off:a.off.bind(a),emit:a.emit.bind(a)})}));const o=extend({},defaults,l);return a.params=extend({},o,extendedDefaults,t),a.originalParams=extend({},a.params),a.passedParams=extend({},t),a.params&&a.params.on&&Object.keys(a.params.on).forEach((e=>{a.on(e,a.params.on[e])})),a.params&&a.params.onAny&&a.onAny(a.params.onAny),Object.assign(a,{enabled:a.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===a.params.direction,isVertical:()=>"vertical"===a.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:a.params.allowSlideNext,allowSlidePrev:a.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:a.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:a.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),a.emit("_swiper"),a.params.init&&a.init(),a}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=elementChildren(t,`.${s.slideClass}, swiper-slide`),r=elementIndex(i[0]);return elementIndex(e)-r}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=elementChildren(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?Math.ceil(i[l].swiperSlideSize):0;for(let s=l+1;sa&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>a&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){r[l]-r[e]{t.complete&&processLazyPreloader(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return elementChildren(s,i())[0]})();return!r&&t.params.createElements&&(r=createElement("div",t.params.wrapperClass),s.append(r),elementChildren(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===elementStyle(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===elementStyle(s,"direction")),wrongRTL:"-webkit-box"===elementStyle(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?processLazyPreloader(t,e):e.addEventListener("load",(e=>{processLazyPreloader(t,e.target)}))})),preload(t),t.initialized=!0,preload(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r&&"string"!=typeof r&&r.removeAttribute("style"),n&&n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),deleteProps(s)),s.destroyed=!0),null}static extendDefaults(e){extend(extendedDefaults,e)}static get extendedDefaults(){return extendedDefaults}static get defaults(){return defaults}static installModule(e){Swiper.prototype.__modules__||(Swiper.prototype.__modules__=[]);const t=Swiper.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>Swiper.installModule(e))),Swiper):(Swiper.installModule(e),Swiper)}}Object.keys(prototypes).forEach((e=>{Object.keys(prototypes[e]).forEach((t=>{Swiper.prototype[t]=prototypes[e][t]}))})),Swiper.use([Resize,Observer]);export{Swiper as S,defaults as d}; +//# sourceMappingURL=swiper-core.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/swiper-core.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/swiper-core.min.mjs.map new file mode 100644 index 0000000..0b1eea0 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/swiper-core.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-core.mjs.mjs","names":["getWindow","getDocument","elementParents","elementStyle","elementChildren","setCSSProperty","elementOuterSize","elementNextAll","elementPrevAll","getTranslate","animateCSSModeScroll","nextTick","showWarning","createElement","elementIsChildOf","now","extend","elementIndex","deleteProps","support","deviceCached","browser","calcSupport","window","document","smoothScroll","documentElement","style","touch","DocumentTouch","getSupport","calcDevice","_temp","userAgent","platform","navigator","ua","device","ios","android","screenWidth","screen","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","indexOf","os","getDevice","overrides","calcBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","split","map","num","Number","isWebView","test","isSafariBrowser","need3dFix","getBrowser","Resize","_ref","swiper","on","emit","observer","animationFrame","resizeHandler","destroyed","initialized","orientationChangeHandler","params","resizeObserver","ResizeObserver","entries","requestAnimationFrame","newWidth","newHeight","forEach","_ref2","contentBoxSize","contentRect","target","el","inlineSize","blockSize","observe","addEventListener","cancelAnimationFrame","unobserve","removeEventListener","Observer","extendParams","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","__preventObserver__","length","observerUpdate","setTimeout","attributes","childList","isElement","characterData","push","observeParents","observeSlideChildren","containerParents","hostEl","i","wrapperEl","disconnect","splice","eventsEmitter","events","handler","priority","self","this","eventsListeners","method","event","once","onceHandler","off","__emitterProxy","_len","arguments","args","Array","_key","apply","onAny","eventsAnyListeners","offAny","index","eventHandler","data","context","_len2","_key2","isArray","slice","unshift","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","Object","assign","size","updateSlides","getDirectionPropertyValue","node","label","parseFloat","getPropertyValue","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slides","slideClass","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","call","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","replace","virtualSize","slideEl","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","grid","rows","slideSize","initSlides","unsetSlides","shouldResetSlideSize","slidesPerView","breakpoints","keys","filter","key","slide","updateSlide","slideStyles","getComputedStyle","currentTransform","transform","currentWebKitTransform","webkitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","offsetWidth","Math","floor","swiperSlideSize","abs","slidesPerGroup","min","slidesPerGroupSkip","max","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","loop","groups","ceil","slidesBefore","slidesAfter","groupSize","_","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","classList","contains","maxBackfaceHiddenSlides","add","remove","updateAutoHeight","speed","activeSlides","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","activeIndex","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","toggleSlideClasses$1","condition","className","updateSlidesProgress","translate","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","progress","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","toggleSlideClasses","updateSlidesClasses","getFilteredSlide","selector","activeSlide","prevSlide","nextSlide","column","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","processLazyPreloader","imageEl","closest","lazyEl","querySelector","lazyPreloaderClass","shadowRoot","unlazy","removeAttribute","preload","amount","lazyPreloadPrevNext","len","slidesPerViewDynamic","activeColumn","preloadColumns","from","slideIndexLastInView","rewind","realIndex","getActiveIndexByTranslate","normalizeSlideIndex","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","skip","firstSlideInColumn","activeSlideIndex","getAttribute","runCallbacksOnInit","updateClickedSlide","path","pathEl","matches","slideFound","clickedSlide","undefined","clickedIndex","slideToClickedSlide","update","getSwiperTranslate","axis","virtualTranslate","currentTranslate","setTranslate","byController","x","y","newProgress","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","targetPosition","side","scrollTo","behavior","onTranslateToWrapperTransitionEnd","e","duration","transitionDuration","transitionDelay","transitionEmit","direction","step","dir","transitionStart","transitionEnd","transition","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","t","scrollSnapType","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","setAttribute","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","c","constructor","loopDestroy","newSlidesOrder","swiperSlideIndex","setGrabCursor","moving","simulateTouch","isLocked","touchEventsTarget","cursor","unsetGrabCursor","grabCursor","closestElement","base","__closestFrom","assignedSlot","found","getRootNode","host","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","pointerType","targetEl","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","nodeName","activeElement","blur","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","PI","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","CustomEvent","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","Date","getTime","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","clearTimeout","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","attachEvents","bind","detachEvents","events$1","isGridEnabled","breakpoint","getBreakpoint","breakpointsBase","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","prop","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","a","b","matchMedia","prepareClasses","prefix","resultClasses","item","classNames","addClasses","suffixes","autoheight","centered","removeClasses","classes","wasLocked","lastSlideRightEdge","checkOverflow$1","defaults","init","swiperElementNodeName","createElements","eventsPrefix","url","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","obj","moduleParamName","moduleParams","auto","prototypes","extendedDefaults","Swiper","prototype","toString","querySelectorAll","swipers","newParams","__swiper__","modules","__modules__","mod","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","current","cls","join","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","element","mounted","parentNode","toUpperCase","getWrapperSelector","trim","getWrapper","slideSlots","lazyElements","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/swiper-core.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/swiper-core.mjs new file mode 100644 index 0000000..6567151 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/swiper-core.mjs @@ -0,0 +1,3907 @@ +import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs'; +import { a as elementParents, p as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, q as elementNextAll, r as elementPrevAll, j as getTranslate, t as animateCSSModeScroll, n as nextTick, u as showWarning, c as createElement, v as elementIsChildOf, d as now, w as extend, h as elementIndex, x as deleteProps } from './utils.mjs'; + +let support; +function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; +} +function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; +} + +let deviceCached; +function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; +} +function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; +} + +let browser; +function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; +} +function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; +} + +function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); +} + +function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); +} + +/* eslint-disable no-underscore-dangle */ + +var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } +}; + +function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); +} + +function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); + if (allSlidesSize + offsetSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } +} + +function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; +} + +function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } +} + +const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } +}; +function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } +} + +function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); +} + +const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } +}; +function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); +} + +const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } +}; +const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); +}; +const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } +}; + +function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; +} +function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } +} + +function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } +} + +var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide +}; + +function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; +} + +function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); +} + +function minTranslate() { + return -this.snapGrid[0]; +} + +function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; +} + +function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; +} + +var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo +}; + +function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); +} + +function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } +} + +function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); +} + +function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); +} + +var transition = { + setTransition, + transitionStart, + transitionEnd +}; + +function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; +} + +function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; +} + +/* eslint no-unused-vars: "off" */ +function slideNext(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slidePrev(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideReset(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); +} + +/* eslint no-unused-vars: "off" */ +function slideToClosest(speed, runCallbacks, internal, threshold) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); +} + +function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } +} + +var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide +}; + +function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); +} + +function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); +} + +function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); +} + +var loop = { + loopCreate, + loopFix, + loopDestroy +}; + +function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } +} + +function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } +} + +var grabCursor = { + setGrabCursor, + unsetGrabCursor +}; + +// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd +function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); +} +function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; +} +function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); +} + +function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); +} + +function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } +} + +function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } +} + +function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } +} + +function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); +} + +function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); +} + +function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } +} + +const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); +}; +function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); +} +function detachEvents() { + const swiper = this; + events(swiper, 'off'); +} +var events$1 = { + attachEvents, + detachEvents +}; + +const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; +}; +function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); +} + +function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; +} + +var breakpoints = { + setBreakpoint, + getBreakpoint +}; + +function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; +} +function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); +} + +function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); +} + +var classes = { + addClasses, + removeClasses +}; + +function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } +} +var checkOverflow$1 = { + checkOverflow +}; + +var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false +}; + +function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; +} + +/* eslint no-param-reassign: "off" */ +const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes +}; +const extendedDefaults = {}; +class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } +} +Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); +}); +Swiper.use([Resize, Observer]); + +export { Swiper as S, defaults as d }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-on-virtual-data.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-on-virtual-data.min.mjs new file mode 100644 index 0000000..54c8e04 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-on-virtual-data.min.mjs @@ -0,0 +1,2 @@ +import{e as extend,p as paramsList,i as isObject,n as needsNavigation,a as needsPagination,b as needsScrollbar}from"./update-swiper.min.mjs";import{d as defaults}from"./swiper-core.min.mjs";function getParams(a,e){void 0===a&&(a={}),void 0===e&&(e=!0);const s={on:{}},n={},t={};extend(s,defaults),s._emitClasses=!0,s.init=!1;const r={},i=paramsList.map((a=>a.replace(/_/,""))),l=Object.assign({},a);return Object.keys(l).forEach((l=>{void 0!==a[l]&&(i.indexOf(l)>=0?isObject(a[l])?(s[l]={},t[l]={},extend(s[l],a[l]),extend(t[l],a[l])):(s[l]=a[l],t[l]=a[l]):0===l.search(/on[A-Z]/)&&"function"==typeof a[l]?e?n[`${l[2].toLowerCase()}${l.substr(3)}`]=a[l]:s.on[`${l[2].toLowerCase()}${l.substr(3)}`]=a[l]:r[l]=a[l])})),["navigation","pagination","scrollbar"].forEach((a=>{!0===s[a]&&(s[a]={}),!1===s[a]&&delete s[a]})),{params:s,passedParams:t,rest:r,events:n}}function mountSwiper(a,e){let{el:s,nextEl:n,prevEl:t,paginationEl:r,scrollbarEl:i,swiper:l}=a;needsNavigation(e)&&n&&t&&(l.params.navigation.nextEl=n,l.originalParams.navigation.nextEl=n,l.params.navigation.prevEl=t,l.originalParams.navigation.prevEl=t),needsPagination(e)&&r&&(l.params.pagination.el=r,l.originalParams.pagination.el=r),needsScrollbar(e)&&i&&(l.params.scrollbar.el=i,l.originalParams.scrollbar.el=i),l.init(s)}function getChangedParams(a,e,s,n,t){const r=[];if(!e)return r;const i=a=>{r.indexOf(a)<0&&r.push(a)};if(s&&n){const a=n.map(t),e=s.map(t);a.join("")!==e.join("")&&i("children"),n.length!==s.length&&i("children")}return paramsList.filter((a=>"_"===a[0])).map((a=>a.replace(/_/,""))).forEach((s=>{if(s in a&&s in e)if(isObject(a[s])&&isObject(e[s])){const n=Object.keys(a[s]),t=Object.keys(e[s]);n.length!==t.length?i(s):(n.forEach((n=>{a[s][n]!==e[s][n]&&i(s)})),t.forEach((n=>{a[s][n]!==e[s][n]&&i(s)})))}else a[s]!==e[s]&&i(s)})),r}const updateOnVirtualData=a=>{!a||a.destroyed||!a.params.virtual||a.params.virtual&&!a.params.virtual.enabled||(a.updateSlides(),a.updateProgress(),a.updateSlidesClasses(),a.parallax&&a.params.parallax&&a.params.parallax.enabled&&a.parallax.setTranslate())};export{getChangedParams as a,getParams as g,mountSwiper as m,updateOnVirtualData as u}; +//# sourceMappingURL=update-on-virtual-data.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-on-virtual-data.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-on-virtual-data.min.mjs.map new file mode 100644 index 0000000..88b07d2 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-on-virtual-data.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"update-on-virtual-data.mjs.mjs","names":["extend","paramsList","isObject","needsNavigation","needsPagination","needsScrollbar","defaults","getParams","obj","splitEvents","params","on","events","passedParams","_emitClasses","init","rest","allowedParams","map","key","replace","plainObj","Object","assign","keys","forEach","indexOf","search","toLowerCase","substr","mountSwiper","_ref","swiperParams","el","nextEl","prevEl","paginationEl","scrollbarEl","swiper","navigation","originalParams","pagination","scrollbar","getChangedParams","oldParams","children","oldChildren","getKey","addKey","push","oldChildrenKeys","childrenKeys","join","length","filter","newKeys","oldKeys","newKey","oldKey","updateOnVirtualData","destroyed","virtual","enabled","updateSlides","updateProgress","updateSlidesClasses","parallax","setTranslate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-on-virtual-data.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-on-virtual-data.mjs new file mode 100644 index 0000000..0fc3050 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-on-virtual-data.mjs @@ -0,0 +1,130 @@ +import { e as extend, p as paramsList, i as isObject, n as needsNavigation, a as needsPagination, b as needsScrollbar } from './update-swiper.mjs'; +import { d as defaults } from './swiper-core.mjs'; + +function getParams(obj, splitEvents) { + if (obj === void 0) { + obj = {}; + } + if (splitEvents === void 0) { + splitEvents = true; + } + const params = { + on: {} + }; + const events = {}; + const passedParams = {}; + extend(params, defaults); + params._emitClasses = true; + params.init = false; + const rest = {}; + const allowedParams = paramsList.map(key => key.replace(/_/, '')); + const plainObj = Object.assign({}, obj); + Object.keys(plainObj).forEach(key => { + if (typeof obj[key] === 'undefined') return; + if (allowedParams.indexOf(key) >= 0) { + if (isObject(obj[key])) { + params[key] = {}; + passedParams[key] = {}; + extend(params[key], obj[key]); + extend(passedParams[key], obj[key]); + } else { + params[key] = obj[key]; + passedParams[key] = obj[key]; + } + } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') { + if (splitEvents) { + events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } else { + params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key]; + } + } else { + rest[key] = obj[key]; + } + }); + ['navigation', 'pagination', 'scrollbar'].forEach(key => { + if (params[key] === true) params[key] = {}; + if (params[key] === false) delete params[key]; + }); + return { + params, + passedParams, + rest, + events + }; +} + +function mountSwiper(_ref, swiperParams) { + let { + el, + nextEl, + prevEl, + paginationEl, + scrollbarEl, + swiper + } = _ref; + if (needsNavigation(swiperParams) && nextEl && prevEl) { + swiper.params.navigation.nextEl = nextEl; + swiper.originalParams.navigation.nextEl = nextEl; + swiper.params.navigation.prevEl = prevEl; + swiper.originalParams.navigation.prevEl = prevEl; + } + if (needsPagination(swiperParams) && paginationEl) { + swiper.params.pagination.el = paginationEl; + swiper.originalParams.pagination.el = paginationEl; + } + if (needsScrollbar(swiperParams) && scrollbarEl) { + swiper.params.scrollbar.el = scrollbarEl; + swiper.originalParams.scrollbar.el = scrollbarEl; + } + swiper.init(el); +} + +function getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) { + const keys = []; + if (!oldParams) return keys; + const addKey = key => { + if (keys.indexOf(key) < 0) keys.push(key); + }; + if (children && oldChildren) { + const oldChildrenKeys = oldChildren.map(getKey); + const childrenKeys = children.map(getKey); + if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children'); + if (oldChildren.length !== children.length) addKey('children'); + } + const watchParams = paramsList.filter(key => key[0] === '_').map(key => key.replace(/_/, '')); + watchParams.forEach(key => { + if (key in swiperParams && key in oldParams) { + if (isObject(swiperParams[key]) && isObject(oldParams[key])) { + const newKeys = Object.keys(swiperParams[key]); + const oldKeys = Object.keys(oldParams[key]); + if (newKeys.length !== oldKeys.length) { + addKey(key); + } else { + newKeys.forEach(newKey => { + if (swiperParams[key][newKey] !== oldParams[key][newKey]) { + addKey(key); + } + }); + oldKeys.forEach(oldKey => { + if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key); + }); + } + } else if (swiperParams[key] !== oldParams[key]) { + addKey(key); + } + } + }); + return keys; +} + +const updateOnVirtualData = swiper => { + if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return; + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) { + swiper.parallax.setTranslate(); + } +}; + +export { getChangedParams as a, getParams as g, mountSwiper as m, updateOnVirtualData as u }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-swiper.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-swiper.min.mjs new file mode 100644 index 0000000..d2d6f64 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-swiper.min.mjs @@ -0,0 +1,2 @@ +const paramsList=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function isObject(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function extend(e,t){const i=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>i.indexOf(e)<0)).forEach((i=>{void 0===e[i]?e[i]=t[i]:isObject(t[i])&&isObject(e[i])&&Object.keys(t[i]).length>0?t[i].__swiper__?e[i]=t[i]:extend(e[i],t[i]):e[i]=t[i]}))}function needsNavigation(e){return void 0===e&&(e={}),e.navigation&&void 0===e.navigation.nextEl&&void 0===e.navigation.prevEl}function needsPagination(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}function needsScrollbar(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}function uniqueClasses(e){void 0===e&&(e="");const t=e.split(" ").map((e=>e.trim())).filter((e=>!!e)),i=[];return t.forEach((e=>{i.indexOf(e)<0&&i.push(e)})),i.join(" ")}function attrToProp(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}function wrapperClass(e){return void 0===e&&(e=""),e?e.includes("swiper-wrapper")?e:`swiper-wrapper ${e}`:"swiper-wrapper"}function updateSwiper(e){let{swiper:t,slides:i,passedParams:l,changedParams:n,nextEl:o,prevEl:r,scrollbarEl:a,paginationEl:s}=e;const d=n.filter((e=>"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:c,pagination:p,navigation:u,scrollbar:v,virtual:g,thumbs:b}=t;let f,_,w,h,S,E,m,C;n.includes("thumbs")&&l.thumbs&&l.thumbs.swiper&&c.thumbs&&!c.thumbs.swiper&&(f=!0),n.includes("controller")&&l.controller&&l.controller.control&&c.controller&&!c.controller.control&&(_=!0),n.includes("pagination")&&l.pagination&&(l.pagination.el||s)&&(c.pagination||!1===c.pagination)&&p&&!p.el&&(w=!0),n.includes("scrollbar")&&l.scrollbar&&(l.scrollbar.el||a)&&(c.scrollbar||!1===c.scrollbar)&&v&&!v.el&&(h=!0),n.includes("navigation")&&l.navigation&&(l.navigation.prevEl||r)&&(l.navigation.nextEl||o)&&(c.navigation||!1===c.navigation)&&u&&!u.prevEl&&!u.nextEl&&(S=!0);const x=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),c[e].prevEl=void 0,c[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),c[e].el=void 0,t[e].el=void 0))};if(n.includes("loop")&&t.isElement&&(c.loop&&!l.loop?E=!0:!c.loop&&l.loop?m=!0:C=!0),d.forEach((e=>{if(isObject(c[e])&&isObject(l[e]))Object.assign(c[e],l[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in l[e])||l[e].enabled||x(e);else{const t=l[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?c[e]=l[e]:!1===t&&x(e)}})),d.includes("controller")&&!_&&t.controller&&t.controller.control&&c.controller&&c.controller.control&&(t.controller.control=c.controller.control),n.includes("children")&&i&&g&&c.virtual.enabled?(g.slides=i,g.update(!0)):n.includes("virtual")&&g&&c.virtual.enabled&&(i&&(g.slides=i),g.update(!0)),n.includes("children")&&i&&c.loop&&(C=!0),f){b.init()&&b.update(!0)}_&&(t.controller.control=c.controller.control),w&&(!t.isElement||s&&"string"!=typeof s||(s=document.createElement("div"),s.classList.add("swiper-pagination"),s.part.add("pagination"),t.el.appendChild(s)),s&&(c.pagination.el=s),p.init(),p.render(),p.update()),h&&(!t.isElement||a&&"string"!=typeof a||(a=document.createElement("div"),a.classList.add("swiper-scrollbar"),a.part.add("scrollbar"),t.el.appendChild(a)),a&&(c.scrollbar.el=a),v.init(),v.updateSize(),v.setTranslate()),S&&(t.isElement&&(o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-button-next"),o.innerHTML=t.hostEl.constructor.nextButtonSvg,o.part.add("button-next"),t.el.appendChild(o)),r&&"string"!=typeof r||(r=document.createElement("div"),r.classList.add("swiper-button-prev"),r.innerHTML=t.hostEl.constructor.prevButtonSvg,r.part.add("button-prev"),t.el.appendChild(r))),o&&(c.navigation.nextEl=o),r&&(c.navigation.prevEl=r),u.init(),u.update()),n.includes("allowSlideNext")&&(t.allowSlideNext=l.allowSlideNext),n.includes("allowSlidePrev")&&(t.allowSlidePrev=l.allowSlidePrev),n.includes("direction")&&t.changeDirection(l.direction,!1),(E||C)&&t.loopDestroy(),(m||C)&&t.loopCreate(),t.update()}export{needsPagination as a,needsScrollbar as b,attrToProp as c,uniqueClasses as d,extend as e,isObject as i,needsNavigation as n,paramsList as p,updateSwiper as u,wrapperClass as w}; +//# sourceMappingURL=update-swiper.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-swiper.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-swiper.min.mjs.map new file mode 100644 index 0000000..01b8986 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-swiper.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"update-swiper.mjs.mjs","names":["paramsList","isObject","o","constructor","Object","prototype","toString","call","slice","__swiper__","extend","target","src","noExtend","keys","filter","key","indexOf","forEach","length","needsNavigation","params","navigation","nextEl","prevEl","needsPagination","pagination","el","needsScrollbar","scrollbar","uniqueClasses","classNames","classes","split","map","c","trim","unique","push","join","attrToProp","attrName","replace","l","toUpperCase","wrapperClass","className","includes","updateSwiper","_ref","swiper","slides","passedParams","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","virtual","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","controller","control","destroyModule","mod","destroy","isElement","remove","undefined","loop","assign","enabled","newValue","update","init","document","createElement","classList","add","part","appendChild","render","updateSize","setTranslate","innerHTML","hostEl","nextButtonSvg","prevButtonSvg","allowSlideNext","allowSlidePrev","changeDirection","direction","loopDestroy","loopCreate"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-swiper.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-swiper.mjs new file mode 100644 index 0000000..851604f --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/update-swiper.mjs @@ -0,0 +1,236 @@ +/* underscore in name -> watch for changes */ +const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', +// modules +'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; +} +function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); +} +function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; +} +function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; +} +function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; +} +function uniqueClasses(classNames) { + if (classNames === void 0) { + classNames = ''; + } + const classes = classNames.split(' ').map(c => c.trim()).filter(c => !!c); + const unique = []; + classes.forEach(c => { + if (unique.indexOf(c) < 0) unique.push(c); + }); + return unique.join(' '); +} +function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); +} +function wrapperClass(className) { + if (className === void 0) { + className = ''; + } + if (!className) return 'swiper-wrapper'; + if (!className.includes('swiper-wrapper')) return `swiper-wrapper ${className}`; + return className; +} + +function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); +} + +export { needsPagination as a, needsScrollbar as b, attrToProp as c, uniqueClasses as d, extend as e, isObject as i, needsNavigation as n, paramsList as p, updateSwiper as u, wrapperClass as w }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/utils.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/utils.min.mjs new file mode 100644 index 0000000..ac22df9 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/utils.min.mjs @@ -0,0 +1,2 @@ +import{a as getWindow,g as getDocument}from"./ssr-window.esm.min.mjs";function classesToTokens(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function deleteProps(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}function nextTick(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function now(){return Date.now()}function getComputedStyle(e){const t=getWindow();let n;return t.getComputedStyle&&(n=t.getComputedStyle(e,null)),!n&&e.currentStyle&&(n=e.currentStyle),n||(n=e.style),n}function getTranslate(e,t){void 0===t&&(t="x");const n=getWindow();let r,o,s;const l=getComputedStyle(e);return n.WebKitCSSMatrix?(o=l.transform||l.webkitTransform,o.split(",").length>6&&(o=o.split(", ").map((e=>e.replace(",","."))).join(", ")),s=new n.WebKitCSSMatrix("none"===o?"":o)):(s=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),r=s.toString().split(",")),"x"===t&&(o=n.WebKitCSSMatrix?s.m41:16===r.length?parseFloat(r[12]):parseFloat(r[4])),"y"===t&&(o=n.WebKitCSSMatrix?s.m42:16===r.length?parseFloat(r[13]):parseFloat(r[5])),o||0}function isObject(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function isNode(e){return"undefined"!=typeof window&&void 0!==window.HTMLElement?e instanceof HTMLElement:e&&(1===e.nodeType||11===e.nodeType)}function extend(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let n=1;nt.indexOf(e)<0));for(let t=0,o=n.length;ts?"next":"prev",m=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===i&&(i=l);const e=Math.max(Math.min((l-i)/a,1),0),c=.5-Math.cos(e*Math.PI)/2;let d=s+c*(n-s);if(m(d,n)&&(d=n),t.wrapperEl.scrollTo({[r]:d}),m(d,n))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[r]:d})})),void o.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=o.requestAnimationFrame(u)};u()}function getSlideTransformEl(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function elementChildren(e,t){void 0===t&&(t="");const n=[...e.children];return e instanceof HTMLSlotElement&&n.push(...e.assignedElements()),t?n.filter((e=>e.matches(t))):n}function elementIsChildOf(e,t){const n=t.contains(e);if(!n&&t instanceof HTMLSlotElement){return[...element.assignedElements()].includes(e)}return n}function showWarning(e){try{return void console.warn(e)}catch(e){}}function createElement(e,t){void 0===t&&(t=[]);const n=document.createElement(e);return n.classList.add(...Array.isArray(t)?t:classesToTokens(t)),n}function elementOffset(e){const t=getWindow(),n=getDocument(),r=e.getBoundingClientRect(),o=n.body,s=e.clientTop||o.clientTop||0,l=e.clientLeft||o.clientLeft||0,i=e===t?t.scrollY:e.scrollTop,a=e===t?t.scrollX:e.scrollLeft;return{top:r.top+i-s,left:r.left+a-l}}function elementPrevAll(e,t){const n=[];for(;e.previousElementSibling;){const r=e.previousElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function elementNextAll(e,t){const n=[];for(;e.nextElementSibling;){const r=e.nextElementSibling;t?r.matches(t)&&n.push(r):n.push(r),e=r}return n}function elementStyle(e,t){return getWindow().getComputedStyle(e,null).getPropertyValue(t)}function elementIndex(e){let t,n=e;if(n){for(t=0;null!==(n=n.previousSibling);)1===n.nodeType&&(t+=1);return t}}function elementParents(e,t){const n=[];let r=e.parentElement;for(;r;)t?r.matches(t)&&n.push(r):n.push(r),r=r.parentElement;return n}function elementTransitionEnd(e,t){t&&e.addEventListener("transitionend",(function n(r){r.target===e&&(t.call(e,r),e.removeEventListener("transitionend",n))}))}function elementOuterSize(e,t,n){const r=getWindow();return n?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(r.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function makeElementsArray(e){return(Array.isArray(e)?e:[e]).filter((e=>!!e))}function getRotateFix(e){return t=>Math.abs(t)>0&&e.browser&&e.browser.need3dFix&&Math.abs(t)%90==0?t+.001:t}export{elementParents as a,elementOffset as b,createElement as c,now as d,elementChildren as e,elementOuterSize as f,getSlideTransformEl as g,elementIndex as h,classesToTokens as i,getTranslate as j,elementTransitionEnd as k,isObject as l,makeElementsArray as m,nextTick as n,getRotateFix as o,elementStyle as p,elementNextAll as q,elementPrevAll as r,setCSSProperty as s,animateCSSModeScroll as t,showWarning as u,elementIsChildOf as v,extend as w,deleteProps as x}; +//# sourceMappingURL=utils.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/utils.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/utils.min.mjs.map new file mode 100644 index 0000000..ee0f99a --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/utils.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"utils.mjs.mjs","names":["getWindow","getDocument","classesToTokens","classes","trim","split","filter","c","deleteProps","obj","object","Object","keys","forEach","key","e","nextTick","callback","delay","setTimeout","now","Date","getComputedStyle","el","window","style","currentStyle","getTranslate","axis","matrix","curTransform","transformMatrix","curStyle","WebKitCSSMatrix","transform","webkitTransform","length","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","getPropertyValue","toString","m41","parseFloat","m42","isObject","o","constructor","prototype","call","slice","isNode","node","HTMLElement","nodeType","extend","to","arguments","undefined","noExtend","i","nextSource","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cancelAnimationFrame","cssModeFrameID","dir","isOutOfBound","current","target","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","requestAnimationFrame","getSlideTransformEl","slideEl","querySelector","shadowRoot","elementChildren","element","selector","children","HTMLSlotElement","push","assignedElements","matches","elementIsChildOf","parent","isChild","contains","includes","showWarning","text","console","warn","err","createElement","tag","document","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","body","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementPrevAll","prevEls","previousElementSibling","prev","elementNextAll","nextEls","nextElementSibling","next","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parentElement","elementTransitionEnd","addEventListener","fireCallBack","removeEventListener","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/utils.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/utils.mjs new file mode 100644 index 0000000..32d8772 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/shared/utils.mjs @@ -0,0 +1,315 @@ +import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs'; + +function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); +} + +function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); +} +function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); +} +function now() { + return Date.now(); +} +function getComputedStyle(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; +} +function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; +} +function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; +} +function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); +} +function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; +} +function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); +} +function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); +} +function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; +} +function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + const children = [...element.children]; + if (element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); +} +function elementIsChildOf(el, parent) { + const isChild = parent.contains(el); + if (!isChild && parent instanceof HTMLSlotElement) { + const children = [...element.assignedElements()]; + return children.includes(el); + } + return isChild; +} +function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } +} +function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; +} +function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; +} +function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; +} +function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; +} +function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); +} +function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; +} +function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; +} +function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } +} +function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; +} +function makeElementsArray(el) { + return (Array.isArray(el) ? el : [el]).filter(e => !!e); +} +function getRotateFix(swiper) { + return v => { + if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { + return v + 0.001; + } + return v; + }; +} + +export { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, getSlideTransformEl as g, elementIndex as h, classesToTokens as i, getTranslate as j, elementTransitionEnd as k, isObject as l, makeElementsArray as m, nextTick as n, getRotateFix as o, elementStyle as p, elementNextAll as q, elementPrevAll as r, setCSSProperty as s, animateCSSModeScroll as t, showWarning as u, elementIsChildOf as v, extend as w, deleteProps as x }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.css new file mode 100644 index 0000000..d0d00d8 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.css @@ -0,0 +1,735 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ +:root { + --swiper-theme-color: #007aff; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; +} +.swiper-3d .swiper-slide, +.swiper-3d .swiper-cube-shadow { + transform-style: preserve-3d; +} +/* CSS Mode */ +.swiper-css-mode > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; + /* For Firefox */ + -ms-overflow-style: none; + /* For Internet Explorer and Edge */ +} +.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { + display: none; +} +.swiper-css-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; +} +.swiper-css-mode.swiper-horizontal > .swiper-wrapper { + scroll-snap-type: x mandatory; +} +.swiper-css-mode.swiper-vertical > .swiper-wrapper { + scroll-snap-type: y mandatory; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper { + scroll-snap-type: none; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); +} +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom, +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} +.swiper-3d .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); +} +.swiper-3d .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader, +.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ +.swiper-virtual .swiper-slide { + -webkit-backface-visibility: hidden; + transform: translateZ(0); +} +.swiper-virtual.swiper-css-mode .swiper-wrapper::after { + content: ''; + position: absolute; + left: 0; + top: 0; + pointer-events: none; +} +.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after { + height: 1px; + width: var(--swiper-virtual-size); +} +.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after { + width: 1px; + height: var(--swiper-virtual-size); +} +:root { + --swiper-navigation-size: 44px; + /* + --swiper-navigation-top-offset: 50%; + --swiper-navigation-sides-offset: 10px; + --swiper-navigation-color: var(--swiper-theme-color); + */ +} +.swiper-button-prev, +.swiper-button-next { + position: absolute; + top: var(--swiper-navigation-top-offset, 50%); + width: calc(var(--swiper-navigation-size) / 44 * 27); + height: var(--swiper-navigation-size); + margin-top: calc(0px - (var(--swiper-navigation-size) / 2)); + z-index: 10; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + color: var(--swiper-navigation-color, var(--swiper-theme-color)); +} +.swiper-button-prev.swiper-button-disabled, +.swiper-button-next.swiper-button-disabled { + opacity: 0.35; + cursor: auto; + pointer-events: none; +} +.swiper-button-prev.swiper-button-hidden, +.swiper-button-next.swiper-button-hidden { + opacity: 0; + cursor: auto; + pointer-events: none; +} +.swiper-navigation-disabled .swiper-button-prev, +.swiper-navigation-disabled .swiper-button-next { + display: none !important; +} +.swiper-button-prev svg, +.swiper-button-next svg { + width: 100%; + height: 100%; + object-fit: contain; + transform-origin: center; +} +.swiper-rtl .swiper-button-prev svg, +.swiper-rtl .swiper-button-next svg { + transform: rotate(180deg); +} +.swiper-button-prev, +.swiper-rtl .swiper-button-next { + left: var(--swiper-navigation-sides-offset, 10px); + right: auto; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-lock { + display: none; +} +/* Navigation font start */ +.swiper-button-prev:after, +.swiper-button-next:after { + font-family: swiper-icons; + font-size: var(--swiper-navigation-size); + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1; +} +.swiper-button-prev:after, +.swiper-rtl .swiper-button-next:after { + content: 'prev'; +} +.swiper-button-next, +.swiper-rtl .swiper-button-prev { + right: var(--swiper-navigation-sides-offset, 10px); + left: auto; +} +.swiper-button-next:after, +.swiper-rtl .swiper-button-prev:after { + content: 'next'; +} +/* Navigation font end */ +:root { + /* + --swiper-pagination-color: var(--swiper-theme-color); + --swiper-pagination-left: auto; + --swiper-pagination-right: 8px; + --swiper-pagination-bottom: 8px; + --swiper-pagination-top: auto; + --swiper-pagination-fraction-color: inherit; + --swiper-pagination-progressbar-bg-color: rgba(0,0,0,0.25); + --swiper-pagination-progressbar-size: 4px; + --swiper-pagination-bullet-size: 8px; + --swiper-pagination-bullet-width: 8px; + --swiper-pagination-bullet-height: 8px; + --swiper-pagination-bullet-border-radius: 50%; + --swiper-pagination-bullet-inactive-color: #000; + --swiper-pagination-bullet-inactive-opacity: 0.2; + --swiper-pagination-bullet-opacity: 1; + --swiper-pagination-bullet-horizontal-gap: 4px; + --swiper-pagination-bullet-vertical-gap: 6px; + */ +} +.swiper-pagination { + position: absolute; + text-align: center; + transition: 300ms opacity; + transform: translate3d(0, 0, 0); + z-index: 10; +} +.swiper-pagination.swiper-pagination-hidden { + opacity: 0; +} +.swiper-pagination-disabled > .swiper-pagination, +.swiper-pagination.swiper-pagination-disabled { + display: none !important; +} +/* Common Styles */ +.swiper-pagination-fraction, +.swiper-pagination-custom, +.swiper-horizontal > .swiper-pagination-bullets, +.swiper-pagination-bullets.swiper-pagination-horizontal { + bottom: var(--swiper-pagination-bottom, 8px); + top: var(--swiper-pagination-top, auto); + left: 0; + width: 100%; +} +/* Bullets */ +.swiper-pagination-bullets-dynamic { + overflow: hidden; + font-size: 0; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transform: scale(0.33); + position: relative; +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main { + transform: scale(1); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev { + transform: scale(0.33); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next { + transform: scale(0.66); +} +.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next { + transform: scale(0.33); +} +.swiper-pagination-bullet { + width: var(--swiper-pagination-bullet-width, var(--swiper-pagination-bullet-size, 8px)); + height: var(--swiper-pagination-bullet-height, var(--swiper-pagination-bullet-size, 8px)); + display: inline-block; + border-radius: var(--swiper-pagination-bullet-border-radius, 50%); + background: var(--swiper-pagination-bullet-inactive-color, #000); + opacity: var(--swiper-pagination-bullet-inactive-opacity, 0.2); +} +button.swiper-pagination-bullet { + border: none; + margin: 0; + padding: 0; + box-shadow: none; + -webkit-appearance: none; + appearance: none; +} +.swiper-pagination-clickable .swiper-pagination-bullet { + cursor: pointer; +} +.swiper-pagination-bullet:only-child { + display: none !important; +} +.swiper-pagination-bullet-active { + opacity: var(--swiper-pagination-bullet-opacity, 1); + background: var(--swiper-pagination-color, var(--swiper-theme-color)); +} +.swiper-vertical > .swiper-pagination-bullets, +.swiper-pagination-vertical.swiper-pagination-bullets { + right: var(--swiper-pagination-right, 8px); + left: var(--swiper-pagination-left, auto); + top: 50%; + transform: translate3d(0px, -50%, 0); +} +.swiper-vertical > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet { + margin: var(--swiper-pagination-bullet-vertical-gap, 6px) 0; + display: block; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + top: 50%; + transform: translateY(-50%); + width: 8px; +} +.swiper-vertical > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + display: inline-block; + transition: 200ms transform, + 200ms top; +} +.swiper-horizontal > .swiper-pagination-bullets .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet { + margin: 0 var(--swiper-pagination-bullet-horizontal-gap, 4px); +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic { + left: 50%; + transform: translateX(-50%); + white-space: nowrap; +} +.swiper-horizontal > .swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet, +.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms left; +} +.swiper-horizontal.swiper-rtl > .swiper-pagination-bullets-dynamic .swiper-pagination-bullet { + transition: 200ms transform, + 200ms right; +} +/* Fraction */ +.swiper-pagination-fraction { + color: var(--swiper-pagination-fraction-color, inherit); +} +/* Progress */ +.swiper-pagination-progressbar { + background: var(--swiper-pagination-progressbar-bg-color, rgba(0, 0, 0, 0.25)); + position: absolute; +} +.swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + background: var(--swiper-pagination-color, var(--swiper-theme-color)); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + transform: scale(0); + transform-origin: left top; +} +.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill { + transform-origin: right top; +} +.swiper-horizontal > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-horizontal, +.swiper-vertical > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite { + width: 100%; + height: var(--swiper-pagination-progressbar-size, 4px); + left: 0; + top: 0; +} +.swiper-vertical > .swiper-pagination-progressbar, +.swiper-pagination-progressbar.swiper-pagination-vertical, +.swiper-horizontal > .swiper-pagination-progressbar.swiper-pagination-progressbar-opposite, +.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite { + width: var(--swiper-pagination-progressbar-size, 4px); + height: 100%; + left: 0; + top: 0; +} +.swiper-pagination-lock { + display: none; +} +:root { + /* + --swiper-scrollbar-border-radius: 10px; + --swiper-scrollbar-top: auto; + --swiper-scrollbar-bottom: 4px; + --swiper-scrollbar-left: auto; + --swiper-scrollbar-right: 4px; + --swiper-scrollbar-sides-offset: 1%; + --swiper-scrollbar-bg-color: rgba(0, 0, 0, 0.1); + --swiper-scrollbar-drag-bg-color: rgba(0, 0, 0, 0.5); + --swiper-scrollbar-size: 4px; + */ +} +.swiper-scrollbar { + border-radius: var(--swiper-scrollbar-border-radius, 10px); + position: relative; + touch-action: none; + background: var(--swiper-scrollbar-bg-color, rgba(0, 0, 0, 0.1)); +} +.swiper-scrollbar-disabled > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-disabled { + display: none !important; +} +.swiper-horizontal > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-horizontal { + position: absolute; + left: var(--swiper-scrollbar-sides-offset, 1%); + bottom: var(--swiper-scrollbar-bottom, 4px); + top: var(--swiper-scrollbar-top, auto); + z-index: 50; + height: var(--swiper-scrollbar-size, 4px); + width: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-vertical > .swiper-scrollbar, +.swiper-scrollbar.swiper-scrollbar-vertical { + position: absolute; + left: var(--swiper-scrollbar-left, auto); + right: var(--swiper-scrollbar-right, 4px); + top: var(--swiper-scrollbar-sides-offset, 1%); + z-index: 50; + width: var(--swiper-scrollbar-size, 4px); + height: calc(100% - 2 * var(--swiper-scrollbar-sides-offset, 1%)); +} +.swiper-scrollbar-drag { + height: 100%; + width: 100%; + position: relative; + background: var(--swiper-scrollbar-drag-bg-color, rgba(0, 0, 0, 0.5)); + border-radius: var(--swiper-scrollbar-border-radius, 10px); + left: 0; + top: 0; +} +.swiper-scrollbar-cursor-drag { + cursor: move; +} +.swiper-scrollbar-lock { + display: none; +} +/* Zoom container styles start */ +.swiper-zoom-container { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + text-align: center; +} +.swiper-zoom-container > img, +.swiper-zoom-container > svg, +.swiper-zoom-container > canvas { + max-width: 100%; + max-height: 100%; + object-fit: contain; +} +/* Zoom container styles end */ +.swiper-slide-zoomed { + cursor: move; + touch-action: none; +} +/* a11y */ +.swiper .swiper-notification { + position: absolute; + left: 0; + top: 0; + pointer-events: none; + opacity: 0; + z-index: -1000; +} +.swiper-free-mode > .swiper-wrapper { + transition-timing-function: ease-out; + margin: 0 auto; +} +.swiper-grid > .swiper-wrapper { + flex-wrap: wrap; +} +.swiper-grid-column > .swiper-wrapper { + flex-wrap: wrap; + flex-direction: column; +} +.swiper-fade.swiper-free-mode .swiper-slide { + transition-timing-function: ease-out; +} +.swiper-fade .swiper-slide { + pointer-events: none; + transition-property: opacity; +} +.swiper-fade .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-fade .swiper-slide-active { + pointer-events: auto; +} +.swiper-fade .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube { + overflow: visible; +} +.swiper-cube .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; + visibility: hidden; + transform-origin: 0 0; + width: 100%; + height: 100%; +} +.swiper-cube .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-cube.swiper-rtl .swiper-slide { + transform-origin: 100% 0; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +.swiper-cube .swiper-slide-active, +.swiper-cube .swiper-slide-next, +.swiper-cube .swiper-slide-prev { + pointer-events: auto; + visibility: visible; +} +.swiper-cube .swiper-cube-shadow { + position: absolute; + left: 0; + bottom: 0px; + width: 100%; + height: 100%; + opacity: 0.6; + z-index: 0; +} +.swiper-cube .swiper-cube-shadow:before { + content: ''; + background: #000; + position: absolute; + left: 0; + top: 0; + bottom: 0; + right: 0; + filter: blur(50px); +} +.swiper-cube .swiper-slide-next + .swiper-slide { + pointer-events: auto; + visibility: visible; +} +/* Cube slide shadows start */ +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left, +.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Cube slide shadows end */ +.swiper-flip { + overflow: visible; +} +.swiper-flip .swiper-slide { + pointer-events: none; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 1; +} +.swiper-flip .swiper-slide .swiper-slide { + pointer-events: none; +} +.swiper-flip .swiper-slide-active, +.swiper-flip .swiper-slide-active .swiper-slide-active { + pointer-events: auto; +} +/* Flip slide shadows start */ +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left, +.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right { + z-index: 0; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* Flip slide shadows end */ +.swiper-creative .swiper-slide { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; + transition-property: transform, opacity, height; +} +.swiper-cards { + overflow: visible; +} +.swiper-cards .swiper-slide { + transform-origin: center bottom; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + overflow: hidden; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.js b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.js new file mode 100644 index 0000000..3f6122d --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.js @@ -0,0 +1,9663 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +var Swiper = (function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$1(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + const children = [...element.children]; + if (element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOf(el, parent) { + const isChild = parent.contains(el); + if (!isChild && parent instanceof HTMLSlotElement) { + const children = [...element.assignedElements()]; + return children.includes(el); + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + function makeElementsArray(el) { + return (Array.isArray(el) ? el : [el]).filter(e => !!e); + } + function getRotateFix(swiper) { + return v => { + if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { + return v + 0.001; + } + return v; + }; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); + if (allSlidesSize + offsetSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + function Virtual(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + const document = getDocument(); + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + const tempDOM = document.createElement('div'); + function renderSlide(slide, index) { + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + // eslint-disable-next-line + let slideEl; + if (params.renderSlide) { + slideEl = params.renderSlide.call(swiper, slide, index); + if (typeof slideEl === 'string') { + tempDOM.innerHTML = slideEl; + slideEl = tempDOM.children[0]; + } + } else if (swiper.isElement) { + slideEl = createElement('swiper-slide'); + } else { + slideEl = createElement('div', swiper.params.slideClass); + } + slideEl.setAttribute('data-swiper-slide-index', index); + if (!params.renderSlide) { + slideEl.innerHTML = slide; + } + if (params.cache) { + swiper.virtual.cache[index] = slideEl; + } + return slideEl; + } + function update(force, beforeInit) { + const { + slidesPerView, + slidesPerGroup, + centeredSlides, + loop: isLoop, + initialSlide + } = swiper.params; + if (beforeInit && !isLoop && initialSlide > 0) { + return; + } + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(false, true); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); + } + + /* eslint-disable consistent-return */ + function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); + } + + /* eslint-disable consistent-return */ + function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); + } + + function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; + } + + function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } else if (res && res.length === 1) { + res = res[0]; + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); + if (swiper.isElement && !targetIsButton) { + const path = e.path || e.composedPath && e.composedPath(); + if (path) { + targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); + } + } + if (swiper.params.navigation.hideOnClick && !targetIsButton) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); + } + + function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; + } + + function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); + } + + function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('changeDirection', () => { + if (!swiper.scrollbar || !swiper.scrollbar.el) return; + const params = swiper.params.scrollbar; + let { + el + } = swiper.scrollbar; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock changeDirection', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); + } + + function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); + } + + function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + limitToOriginalSize: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getMaxRatio() { + const params = swiper.params.zoom; + const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { + const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; + return Math.min(imageMaxRatio, maxRatio); + } + return maxRatio; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = getMaxRatio(); + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + let allowTouchMoveTimeout; + function allowTouchMove() { + swiper.touchEventsData.preventTouchMoveFromPointerMove = false; + } + function preventTouchMove() { + clearTimeout(allowTouchMoveTimeout); + swiper.touchEventsData.preventTouchMoveFromPointerMove = true; + allowTouchMoveTimeout = setTimeout(() => { + allowTouchMove(); + }); + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { + return; + } + const zoom = swiper.zoom; + if (!gesture.imageEl) { + return; + } + if (!image.isTouched || !gesture.slideEl) { + return; + } + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + allowTouchMove(); + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + allowTouchMove(); + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + preventTouchMove(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + const maxRatio = getMaxRatio(); + zoom.scale = forceZoomRatio || maxRatio; + currentScale = forceZoomRatio || maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); + } + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; + controlElements.forEach(controlElement => { + if (!swiper.controller.control) swiper.controller.control = []; + if (controlElement && controlElement.swiper) { + swiper.controller.control.push(controlElement.swiper); + } else if (controlElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onControllerSwiper = e => { + swiper.controller.control.push(e.detail[0]); + swiper.update(); + controlElement.removeEventListener(eventName, onControllerSwiper); + }; + controlElement.addEventListener(eventName, onControllerSwiper); + } + }); + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); + } + + function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null, + scrollOnFocus: true + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + let preventFocusHandler; + let focusTargetSlideEl; + let visibilityChangedTimestamp = new Date().getTime(); + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { + const prevEls = makeElementsArray(swiper.navigation.prevEl); + const nextEls = makeElementsArray(swiper.navigation.nextEl); + if (nextEls.includes(targetEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (prevEls.includes(targetEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = e => { + if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { + preventFocusHandler = true; + } + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + preventFocusHandler = false; + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const onVisibilityChange = e => { + visibilityChangedTimestamp = new Date().getTime(); + }; + const handleFocus = e => { + if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; + if (new Date().getTime() - visibilityChangedTimestamp < 100) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + focusTargetSlideEl = slideEl; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + requestAnimationFrame(() => { + if (preventFocusHandler) return; + if (swiper.params.loop) { + swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0); + } else { + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + } + preventFocusHandler = false; + }); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + // Tab focus + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); + } + + function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + } + + function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); + } + + /* eslint no-underscore-dangle: "off" */ + /* eslint no-use-before-define: "off" */ + function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + } + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); + } + + function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener(eventName, onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener(eventName, onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); + } + + function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); + } + + function Grid(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + let wasMultiRow; + const getSpaceBetween = () => { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; + } + + function appendSlide(slides) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + const appendElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + } + + function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); + } + + function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); + } + + function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); + } + + function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; + } + + function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } + } + + function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const r = getRotateFix(swiper); + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); + } + + function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; + } + + function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + const rotateFix = getRotateFix(swiper); + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + const r = getRotateFix(swiper); + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); + } + + function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + const rotateFix = getRotateFix(swiper); + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + /** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + + + // Swiper Class + const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; + Swiper.use(modules); + + return Swiper; + +})(); diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.min.css new file mode 100644 index 0000000..7af1429 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.min.js b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.min.js new file mode 100644 index 0000000..95aff9b --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,a){void 0===s&&(s={}),void 0===a&&(a={}),Object.keys(a).forEach((i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}function n(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function l(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function d(e,t){void 0===t&&(t="x");const s=r();let a,i,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(i=l.transform||l.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function c(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function p(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let a=1;at.indexOf(e)<0));for(let t=0,a=s.length;tn?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[a]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:c})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(u)};u()}function h(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function f(e,t){void 0===t&&(t="");const s=[...e.children];return e instanceof HTMLSlotElement&&s.push(...e.assignedElements()),t?s.filter((e=>e.matches(t))):s}function g(e){try{return void console.warn(e)}catch(e){}}function v(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:n(t)),s}function w(e){const t=r(),s=a(),i=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,c=e===t?t.scrollX:e.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}function b(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function y(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function E(e,t){const s=[];let a=e.parentElement;for(;a;)t?a.matches(t)&&s.push(a):s.push(a),a=a.parentElement;return s}function x(e,t){t&&e.addEventListener("transitionend",(function s(a){a.target===e&&(t.call(e,a),e.removeEventListener("transitionend",s))}))}function S(e,t,s){const a=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function T(e){return(Array.isArray(e)?e:[e]).filter((e=>!!e))}function M(e){return t=>Math.abs(t)>0&&e.browser&&e.browser.need3dFix&&Math.abs(t)%90==0?t+.001:t}let C,P,L;function I(){return C||(C=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),C}function A(e){return void 0===e&&(e={}),P||(P=function(e){let{userAgent:t}=void 0===e?{}:e;const s=I(),a=r(),i=a.navigator.platform,n=t||a.navigator.userAgent,l={ios:!1,android:!1},o=a.screen.width,d=a.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===i;let f="MacIntel"===i;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!h&&(l.os="android",l.android=!0),(p||m||u)&&(l.os="ios",l.ios=!0),l}(e)),P}function z(){return L||(L=function(){const e=r(),t=A();let s=!1;function a(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(a()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,a]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&a<2}}const i=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=a();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||i&&t.ios,isWebView:i}}()),L}var $={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};const k=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const O=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const D=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},G=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},H=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const a="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),i=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=i,r=[s-t];return r.push(...Array.from({length:t}).map(((e,t)=>s+a+t))),void e.slides.forEach(((t,s)=>{r.includes(t.column)&&G(e,s)}))}const r=i+a-1;if(e.params.rewind||e.params.loop)for(let a=i-t;a<=r+t;a+=1){const t=(a%s+s)%s;(tr)&&G(e,t)}else for(let a=Math.max(i-t,0);a<=Math.min(r+t,s-1);a+=1)a!==i&&(a>r||a=0?x=parseFloat(x.replace("%",""))/100*r:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(u(a,"--swiper-centered-offset-before",""),u(a,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const I="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let a=0;a1&&m.push(e.virtualSize-r)}if(o&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const a=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),i=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e-r;m=m.map((e=>e<=0?-v:e>t?t+w:e))}if(s.centerInsufficientSlides){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{m[t]=e-s})),h.forEach(((e,t)=>{h[t]=e+s}))}}if(Object.assign(e,{slides:c,snapGrid:m,slidesGrid:h,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){u(a,"--swiper-centered-offset-before",-m[0]+"px"),u(a,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),m.length!==y&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==E&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,a=e.el.classList.contains(t);p<=s.maxBackfaceHiddenSlides?a||e.el.classList.add(t):a&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(i=0;it.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;ir?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let a=0;a=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],f=u>=0&&u1&&m<=t.size||u<=0&&m>=t.size;f&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e)),k(o,f,s.slideVisibleClass),k(o,h,s.slideFullyVisibleClass),o.progress=i?-c:c,o.originalProgress=i?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===a)i=0,r=!0,n=!0;else{i=(e-t.minTranslate())/a;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||i<=0,n=l||i>=1,s&&(i=0),l&&(i=1)}if(s.loop){const s=t.getSlideIndexByData(0),a=t.getSlideIndexByData(t.slides.length-1),i=t.slidesGrid[s],r=t.slidesGrid[a],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=i?(o-i)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:i,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:a,activeIndex:i}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>f(a,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(r)if(s.loop){let t=i-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${i}"]`);else n?(o=t.filter((e=>e.column===i))[0],c=t.filter((e=>e.column===i+1))[0],d=t.filter((e=>e.column===i-1))[0]):o=t[i];o&&(n||(c=function(e,t){const s=[];for(;e.nextElementSibling;){const a=e.nextElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const a=e.previousElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{O(e,e===o,s.slideActiveClass),O(e,e===c,s.slideNextClass),O(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:a,params:i,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,a=e.rtlTranslate?e.translate:-e.translate;let i;for(let e=0;e=t[e]&&a=t[e]&&a=t[e]&&(i=e);return s.normalizeSlideIndex&&(i<0||void 0===i)&&(i=0),i}(t)),a.indexOf(s)>=0)o=a.indexOf(s);else{const e=Math.min(i.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/i.slidesPerGroup)}if(o>=a.length&&(o=a.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&i.grid&&i.grid.rows>1;let u;if(t.virtual&&i.virtual.enabled&&i.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/i.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&H(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,a=s.params;let i=e.closest(`.${a.slideClass}, swiper-slide`);!i&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!i&&e.matches&&e.matches(`.${a.slideClass}, swiper-slide`)&&(i=e)}));let r,n=!1;if(i)for(let e=0;eo?o:a&&en?"next":r=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&(u?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(p||0)!==n)return!1}let b;if(n!==(c||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>p?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}))}else{if(!r.support.smoothScroll)return m({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,a){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const i=this;if(i.destroyed)return;void 0===t&&(t=i.params.speed);const r=i.grid&&i.params.grid&&i.params.grid.rows>1;let n=e;if(i.params.loop)if(i.virtual&&i.params.virtual.enabled)n+=i.virtual.slidesBefore;else{let e;if(r){const t=n*i.params.grid.rows;e=i.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=i.getSlideIndexByData(n);const t=r?Math.ceil(i.slides.length/i.params.grid.rows):i.slides.length,{centeredSlides:s}=i.params;let l=i.params.slidesPerView;"auto"===l?l=i.slidesPerViewDynamic():(l=Math.ceil(parseFloat(i.params.slidesPerView,10)),s&&l%2==0&&(l+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else n=i.getSlideIndexByData(n)}return requestAnimationFrame((()=>{i.slideTo(n,t,s,a)})),i},slideNext:function(e,t,s){void 0===t&&(t=!0);const a=this,{enabled:i,params:r,animating:n}=a;if(!i||a.destroyed)return a;void 0===e&&(e=a.params.speed);let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndex{a.slideTo(a.activeIndex+o,e,t,s)})),!0}return r.rewind&&a.isEnd?a.slideTo(0,e,t,s):a.slideTo(a.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===t&&(t=!0);const a=this,{params:i,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=a;if(!o||a.destroyed)return a;void 0===e&&(e=a.params.speed);const c=a.virtual&&i.virtual.enabled;if(i.loop){if(d&&!c&&i.loopPreventsSliding)return!1;a.loopFix({direction:"prev"}),a._clientLeft=a.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?a.translate:-a.translate),m=r.map((e=>p(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&i.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(f=f-a.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return i.loop&&0===a.activeIndex&&i.cssMode?(requestAnimationFrame((()=>{a.slideTo(f,e,t,s)})),!0):a.slideTo(f,e,t,s)},slideReset:function(e,t,s){void 0===t&&(t=!0);const a=this;if(!a.destroyed)return void 0===e&&(e=a.params.speed),a.slideTo(a.activeIndex,e,t,s)},slideToClosest:function(e,t,s,a){void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;if(i.destroyed)return;void 0===e&&(e=i.params.speed);let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;const n=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;i=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${i}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${i}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var R={loopCreate:function(e){const t=this,{params:s,slidesEl:a}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const i=()=>{f(a,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},r=t.grid&&s.grid&&s.grid.rows>1,n=s.slidesPerGroup*(r?s.grid.rows:1),l=t.slides.length%n!=0,o=r&&t.slides.length%s.grid.rows!=0,d=e=>{for(let a=0;a1;d.lengthe.classList.contains(m.slideActiveClass)))[0]):x=r;const S="next"===a||!a,T="prev"===a||!a;let M=0,C=0;const P=b?Math.ceil(d.length/m.grid.rows):d.length,L=(b?d[r].column:r)+(h&&void 0===i?-f/2+.5:0);if(L=0;t-=1)d[t].column===e&&y.push(t)}else y.push(P-t-1)}}else if(L+f>P-w){C=Math.max(L-(P-2*w),v);for(let e=0;e{e.column===t&&E.push(s)})):E.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),T&&y.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),S&&E.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView?o.updateSlides():b&&(y.length>0&&T||E.length>0&&S)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(y.length>0&&T){if(void 0===t){const e=o.slidesGrid[x],t=o.slidesGrid[x+M]-e;l?o.setTranslate(o.translate-t):(o.slideTo(x+Math.ceil(M),0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(i){const e=b?y.length/m.grid.rows:y.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(E.length>0&&S)if(void 0===t){const e=o.slidesGrid[x],t=o.slidesGrid[x-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(x-C,0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=b?E.length/m.grid.rows:E.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,direction:a,setTranslate:i,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===m.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&s})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const a=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;a[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),a.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function F(e,t,s){const a=r(),{params:i}=e,n=i.edgeSwipeDetection,l=i.edgeSwipeThreshold;return!n||!(s<=l||s>=a.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function q(e){const t=this,s=a();let i=e;i.originalEvent&&(i=i.originalEvent);const n=t.touchEventsData;if("pointerdown"===i.type){if(null!==n.pointerId&&n.pointerId!==i.pointerId)return;n.pointerId=i.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(n.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void F(t,i,i.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===i.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=i.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=t.contains(e);if(!s&&t instanceof HTMLSlotElement)return[...element.assignedElements()].includes(e);return s}(p,t.wrapperEl))return;if("which"in i&&3===i.which)return;if("button"in i&&i.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,m=i.composedPath?i.composedPath():i.path;u&&i.target&&i.target.shadowRoot&&m&&(p=m[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!i.target||!i.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(h,p):p.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=i.pageX,d.currentY=i.pageY;const g=d.currentX,v=d.currentY;if(!F(t,i,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1);let w=!0;p.matches(n.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||p.isContentEditable||i.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",i)}function V(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==i.touchId)return;if(p.pointerId!==i.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===i.touchId))[0],!c||c.identifier!==i.touchId)return}else c=p;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,m=c.pageY;if(p.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return p.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),i.touchStartTime=o()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(un.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",p),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",p),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling||"touchmove"===p.type&&i.preventTouchMoveFromPointerMove)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&p.cancelable&&p.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&p.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),v=Math.abs(v)*(l?1:-1)),n.diff=g,g*=r.touchRatio,l&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),i.isMoved&&i.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",p),i.isMoved=!0,i.currentTranslate=g+i.startTranslate;let E=!0,x=r.resistanceRatio;if(r.touchReleaseOnEdges&&(x=0),g>0?(b&&y&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(E=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+g)**x))):g<0&&(b&&y&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function _(e){const t=this,s=t.touchEventsData;let a,i=e;i.originalEvent&&(i=i.originalEvent);if("touchend"===i.type||"touchcancel"===i.type){if(a=[...i.changedTouches].filter((e=>e.identifier===s.touchId))[0],!a||a.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(i.pointerId!==s.pointerId)return;a=i}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(i.type)){if(!(["pointercancel","contextmenu"].includes(i.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:r,touches:n,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!r.simulateTouch&&"mouse"===i.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",i),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),m=u-s.touchStartTime;if(t.allowClick){const e=i.path||i.composedPath&&i.composedPath();t.updateClickedSlide(e&&e[0]||i.target,e),t.emit("tap click",i),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",i)}if(s.lastClickTime=o(),l((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&h=c[e])&&(g=e,v=c[c.length-1]-c[c.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-c[g])/v,E=gr.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+E):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+E):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(i.target===t.navigation.nextEl||i.target===t.navigation.prevEl)?i.target===t.navigation.nextEl?t.slideTo(g+E):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+E),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g))}}function W(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function j(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function U(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function K(e){const t=this;D(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function Z(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const Q=(e,t)=>{const s=a(),{params:i,el:r,wrapperEl:n,device:l}=e,o=!!i.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;r&&"string"!=typeof r&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[d]("click",e.onClick,!0),i.cssMode&&n[d]("scroll",e.onScroll),i.updateOnWindowResize?e[c](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",W,!0):e[c]("observerUpdate",W,!0),r[d]("load",e.onLoad,{capture:!0}))};const J=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var ee={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function te(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(!0===e[a]&&(e[a]={enabled:!0}),"navigation"===a&&e[a]&&e[a].enabled&&!e[a].prevEl&&!e[a].nextEl&&(e[a].auto=!0),["pagination","scrollbar"].indexOf(a)>=0&&e[a]&&e[a].enabled&&!e[a].el&&(e[a].auto=!0),a in e&&"enabled"in i?("object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),p(t,s)):p(t,s)):p(t,s)}}const se={eventsEmitter:$,update:N,translate:X,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),B({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),B({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:Y,loop:R,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=q.bind(e),e.onTouchMove=V.bind(e),e.onTouchEnd=_.bind(e),e.onDocumentTouchStart=Z.bind(e),t.cssMode&&(e.onScroll=U.bind(e)),e.onClick=j.bind(e),e.onLoad=K.bind(e),Q(e,"on")},detachEvents:function(){Q(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:a,el:i}=e,r=a.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=J(e,a),d=J(e,l),c=e.params.grabCursor,u=l.grabCursor,m=a.enabled;o&&!d?(i.classList.remove(`${a.containerModifierClass}grid`,`${a.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(i.classList.add(`${a.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===a.grid.fill)&&i.classList.add(`${a.containerModifierClass}grid-column`),e.emitContainerClasses()),c&&!u?e.unsetGrabCursor():!c&&u&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=a[t]&&a[t].enabled,i=l[t]&&l[t].enabled;s&&!i&&e[t].disable(),!s&&i&&e[t].enable()}));const h=l.direction&&l.direction!==a.direction,f=a.loop&&(l.slidesPerView!==a.slidesPerView||h),g=a.loop;h&&s&&e.changeDirection(),p(e.params,l);const v=e.params.enabled,w=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),m&&!v?e.disable():!m&&v&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),s&&(f?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!g&&w?(e.loopCreate(t),e.updateSlides()):g&&!w&&e.loopDestroy()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,el:i,device:r}=e,n=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),i.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},ae={};class ie{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const a=p({},t,{el:s});e.push(new ie(a))})),e}const l=this;l.__swiper__=!0,l.support=I(),l.device=A({userAgent:t.userAgent}),l.browser=z(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:te(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=p({},ee,o);return l.params=p({},d,ae,t),l.originalParams=p({},l.params),l.passedParams=p({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,a=y(f(t,`.${s.slideClass}, swiper-slide`)[0]);return y(e)-a}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=a[l]?Math.ceil(a[l].swiperSlideSize):0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){i[l]-i[e]{t.complete&&D(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)a(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;i=e.slideTo(t.length-1,0,!1,!0)}else i=e.slideTo(e.activeIndex,0,!1,!0);i||a()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${a}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const a=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let i=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(a())}return f(s,a())[0]})();return!i&&t.params.createElements&&(i=v("div",t.params.wrapperClass),s.append(i),f(s,`.${t.params.slideClass}`).forEach((e=>{i.append(e)}))),Object.assign(t,{el:s,wrapperEl:i,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:i,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction")),wrongRTL:"-webkit-box"===b(i,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?D(t,e):e.addEventListener("load",(e=>{D(t,e.target)}))})),H(t),t.initialized=!0,H(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,el:i,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i&&"string"!=typeof i&&i.removeAttribute("style"),r&&r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(a.slideVisibleClass,a.slideFullyVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){p(ae,e)}static get extendedDefaults(){return ae}static get defaults(){return ee}static installModule(e){ie.prototype.__modules__||(ie.prototype.__modules__=[]);const t=ie.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>ie.installModule(e))),ie):(ie.installModule(e),ie)}}function re(e,t,s,a){return e.params.createElements&&Object.keys(a).forEach((i=>{if(!s[i]&&!0===s.auto){let r=f(e.el,`.${a[i]}`)[0];r||(r=v("div",a[i]),r.className=a[i],e.el.append(r)),s[i]=r,t[i]=r}})),s}function ne(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function le(e){const t=this,{params:s,slidesEl:a}=t;s.loop&&t.loopDestroy();const i=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.append(t.children[0]),t.innerHTML=""}else a.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.prepend(t.children[0]),t.innerHTML=""}else i.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function me(e,t){const s=h(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function he(e){let{swiper:t,duration:s,transformElements:a,allSlides:i}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a:a.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{x(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function fe(e,t,s){const a=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,i=h(t);let r=i.querySelector(`.${a.split(" ").join(".")}`);return r||(r=v("div",a.split(" ")),i.append(r)),r}Object.keys(se).forEach((e=>{Object.keys(se[e]).forEach((t=>{ie.prototype[t]=se[e][t]}))})),ie.use([function(e){let{swiper:t,on:s,emit:a}=e;const i=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||o()}))})),n.observe(t.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&i.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const a=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void i("observerUpdate",e[0]);const s=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));a.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),n.push(a)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=E(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const ge=[function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;i({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=a();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];let i;return a.renderSlide?(i=a.renderSlide.call(s,e,t),"string"==typeof i&&(o.innerHTML=i,i=o.children[0])):i=s.isElement?v("swiper-slide"):v("div",s.params.slideClass),i.setAttribute("data-swiper-slide-index",t),a.renderSlide||(i.innerHTML=e),a.cache&&(s.virtual.cache[t]=i),i}function c(e,t){const{slidesPerView:a,slidesPerGroup:i,centeredSlides:r,loop:l,initialSlide:o}=s.params;if(t&&!l&&o>0)return;const{addSlidesBefore:c,addSlidesAfter:p}=s.params.virtual,{from:u,to:m,slides:h,slidesGrid:g,offset:v}=s.virtual;s.params.cssMode||s.updateActiveIndex();const w=s.activeIndex||0;let b,y,E;b=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",r?(y=Math.floor(a/2)+i+p,E=Math.floor(a/2)+i+c):(y=a+(i-1)+p,E=(l?a:i)+c);let x=w-E,S=w+y;l||(x=Math.max(x,0),S=Math.min(S,h.length-1));let T=(s.slidesGrid[x]||0)-(s.slidesGrid[0]||0);function M(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(l&&w>=E?(x-=E,r||(T+=s.slidesGrid[0])):l&&w{e.style[b]=T-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:T,from:x,to:S,slides:function(){const e=[];for(let t=x;t<=S;t+=1)e.push(h[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?M():n("virtualUpdate"));const C=[],P=[],L=e=>{let t=e;return e<0?t=h.length+e:t>=h.length&&(t-=h.length),t};if(e)s.slides.filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=u;e<=m;e+=1)if(eS){const t=L(e);s.slides.filter((e=>e.matches(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`))).forEach((e=>{e.remove()}))}const I=l?-h.length:0,A=l?2*h.length:h.length;for(let t=I;t=x&&t<=S){const s=L(t);void 0===m||e?P.push(s):(t>m&&P.push(s),t{s.slidesEl.append(d(h[e],e))})),l)for(let e=C.length-1;e>=0;e-=1){const t=C[e];s.slidesEl.prepend(d(h[t],t))}else C.sort(((e,t)=>t-e)),C.forEach((e=>{s.slidesEl.prepend(d(h[e],e))}));f(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[b]=T-Math.abs(s.cssOverflowAdjustment())+"px"})),M()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,c(!1,!0)})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{c()}),100)):c())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&u(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const a=e[s],r=a.getAttribute("data-swiper-slide-index");r&&a.setAttribute("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}c(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.params.virtual.cache&&(delete s.virtual.cache[e[a]],Object.keys(s.virtual.cache).forEach((t=>{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e[a],1),e[a]{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e,1),e0&&0===E(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,i=a.clientWidth,r=a.clientHeight,n=o.innerWidth,l=o.innerHeight,d=w(a);s&&(d.left-=a.scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||m||h)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",i)}}function c(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function p(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&c()})),i("destroy",(()=>{t.keyboard.enabled&&p()})),Object.assign(t.keyboard,{enable:c,disable:p})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let c,p=o();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&o()-p<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),p=(new n.Date).getTime(),!1)))}function g(e){let s=e,a=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.el;"container"!==t.params.mousewheel.eventsTarget&&(n=document.querySelector(t.params.mousewheel.eventsTarget));const p=n&&n.contains(s.target);if(!t.mouseEntered&&!p&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),a=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:o(),delta:Math.abs(m),direction:Math.sign(m)},a=c&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!p&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,a=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;c=e,u.splice(0),d=l((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=l((()=>{c=e,u.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),r.releaseOnEdges&&(n===t.minTranslate()||n===t.maxTranslate()))return!0}}else{const s={time:o(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const a=u.length?u[u.length-1]:void 0;if(u.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&f(s):f(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),a("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;function r(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s&&s.length>1&&1===t.el.querySelectorAll(e).length?s=t.el.querySelector(e):s&&1===s.length&&(s=s[0])),e&&!s?e:s)}function n(e,s){const a=t.params.navigation;(e=T(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...a.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](a.lockClass))}))}function l(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return n(s,!1),void n(e,!1);n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),i("navigationPrev"))}function d(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),i("navigationNext"))}function c(){const e=t.params.navigation;if(t.params.navigation=re(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=r(e.nextEl),a=r(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:a}),s=T(s),a=T(a);const i=(s,a)=>{s&&s.addEventListener("click","next"===a?d:o),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>i(e,"next"))),a.forEach((e=>i(e,"prev")))}function p(){let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s);const a=(e,s)=>{e.removeEventListener("click","next"===s?d:o),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>a(e,"next"))),s.forEach((e=>a(e,"prev")))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null},a("init",(()=>{!1===t.params.navigation.enabled?u():(c(),l())})),a("toEdge fromEdge lock unlock",(()=>{l()})),a("destroy",(()=>{p()})),a("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s),t.enabled?l():[...e,...s].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),a("click",((e,s)=>{let{nextEl:a,prevEl:r}=t.navigation;a=T(a),r=T(r);const n=s.target;let l=r.includes(n)||a.includes(n);if(t.isElement&&!l){const e=s.path||s.composedPath&&s.composedPath();e&&(l=e.find((e=>a.includes(e)||r.includes(e))))}if(t.params.navigation.hideOnClick&&!l){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;a.length?e=a[0].classList.contains(t.params.navigation.hiddenClass):r.length&&(e=r[0].classList.contains(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),[...a,...r].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const u=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),p()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),c(),l()},disable:u,update:l,init:c,destroy:p})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function d(e,s){const{bulletActiveClass:a}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${a}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${a}-${s}-${s}`))}function c(e){const s=e.target.closest(ne(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const a=y(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===a)return;t.slideToLoop(a)}else t.slideTo(a)}function p(){const e=t.rtl,s=t.params.pagination;if(o())return;let a,r,c=t.pagination.el;c=T(c);const p=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,u=t.params.loop?Math.ceil(p/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,a=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(a=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,a=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const i=t.pagination.bullets;let o,p,u;if(s.dynamicBullets&&(n=S(i[0],t.isHorizontal()?"width":"height",!0),c.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=a-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(a-l,0),p=o+(Math.min(i.length,s.dynamicMainBullets)-1),u=(p+o)/2),i.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),c.length>1)i.forEach((e=>{const i=y(e);i===a?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(i>=o&&i<=p&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),i===o&&d(e,"prev"),i===p&&d(e,"next"))}));else{const e=i[a];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&i.forEach(((e,t)=>{e.setAttribute("part",t===a?"bullet-active":"bullet")})),s.dynamicBullets){const e=i[o],t=i[p];for(let e=o;e<=p;e+=1)i[e]&&i[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));d(e,"prev"),d(t,"next")}}if(s.dynamicBullets){const a=Math.min(i.length,s.dynamicMainBullets+4),r=(n*a-n)/2-u*n,l=e?"right":"left";i.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}c.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(ne(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(a+1)})),e.querySelectorAll(ne(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(u)}))),"progressbar"===s.type){let i;i=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(a+1)/u;let n=1,l=1;"horizontal"===i?n=r:l=r,e.querySelectorAll(ne(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,a+1,u),0===r&&i("paginationRender",e)):(0===r&&i("paginationRender",e),i("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let a=t.pagination.el;a=T(a);let r="";if("bullets"===e.type){let a=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&a>s&&(a=s);for(let s=0;s`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``),t.pagination.bullets=[],a.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(ne(e.bulletClass)))})),"custom"!==e.type&&i("paginationRender",a[0])}function m(){t.params.pagination=re(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>E(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=T(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",c),t.enabled||s.classList.add(e.lockClass)})))}function h(){const e=t.params.pagination;if(o())return;let s=t.pagination.el;s&&(s=T(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",c))}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}a("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),a("init",(()=>{!1===t.params.pagination.enabled?f():(m(),u(),p())})),a("activeIndexChange",(()=>{void 0===t.snapIndex&&p()})),a("snapIndexChange",(()=>{p()})),a("snapGridLengthChange",(()=>{u(),p()})),a("destroy",(()=>{h()})),a("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),a("lock unlock",(()=>{p()})),a("click",((e,s)=>{const a=s.target,r=T(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!a.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const f=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),h()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),m(),u(),p()},disable:f,render:u,update:p,init:m,destroy:h})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const o=a();let d,c,p,u,m=!1,h=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:a,el:i}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=c,o=(p-c)*n;s?(o=-o,o>0?(l=c-o,o=0):-o+c>p&&(l=p+o)):o<0?(l=c+o,o=0):o+c>p&&(l=p-o),t.isHorizontal()?(a.style.transform=`translate3d(${o}px, 0, 0)`,a.style.width=`${l}px`):(a.style.transform=`translate3d(0px, ${o}px, 0)`,a.style.height=`${l}px`),r.hide&&(clearTimeout(h),i.style.opacity=1,h=setTimeout((()=>{i.style.opacity=0,i.style.transitionDuration="400ms"}),1e3))}function b(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:a}=e;s.style.width="",s.style.height="",p=t.isHorizontal()?a.offsetWidth:a.offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),c="auto"===t.params.scrollbar.dragSize?p*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${c}px`:s.style.height=`${c}px`,a.style.display=u>=1?"none":"",t.params.scrollbar.hide&&(a.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function y(e){return t.isHorizontal()?e.clientX:e.clientY}function E(e){const{scrollbar:s,rtlTranslate:a}=t,{el:i}=s;let r;r=(y(e)-w(i)[t.isHorizontal()?"left":"top"]-(null!==d?d:c/2))/(p-c),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function x(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n,dragEl:l}=a;m=!0,d=e.target===l?y(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.style.transitionDuration="100ms",l.style.transitionDuration="100ms",E(e),clearTimeout(f),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function S(e){const{scrollbar:s,wrapperEl:a}=t,{el:i,dragEl:n}=s;m&&(e.preventDefault&&e.cancelable?e.preventDefault():e.returnValue=!1,E(e),a.style.transitionDuration="0ms",i.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function M(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n}=a;m&&(m=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",i.style.transitionDuration=""),s.hide&&(clearTimeout(f),f=l((()=>{n.style.opacity=0,n.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function C(e){const{scrollbar:s,params:a}=t,i=s.el;if(!i)return;const r=i,n=!!a.passiveListeners&&{passive:!1,capture:!1},l=!!a.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",x,n),o[d]("pointermove",S,n),o[d]("pointerup",M,l)}function P(){const{scrollbar:e,el:s}=t;t.params.scrollbar=re(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i,r;if("string"==typeof a.el&&t.isElement&&(i=t.el.querySelector(a.el)),i||"string"!=typeof a.el)i||(i=a.el);else if(i=o.querySelectorAll(a.el),!i.length)return;t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.querySelectorAll(a.el).length&&(i=s.querySelector(a.el)),i.length>0&&(i=i[0]),i.classList.add(t.isHorizontal()?a.horizontalClass:a.verticalClass),i&&(r=i.querySelector(ne(t.params.scrollbar.dragClass)),r||(r=v("div",t.params.scrollbar.dragClass),i.append(r))),Object.assign(e,{el:i,dragEl:r}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&C("on"),i&&i.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))}function L(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(...n(t.isHorizontal()?e.horizontalClass:e.verticalClass)),t.params.scrollbar.el&&t.scrollbar.el&&C("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null},i("changeDirection",(()=>{if(!t.scrollbar||!t.scrollbar.el)return;const e=t.params.scrollbar;let{el:s}=t.scrollbar;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),i("init",(()=>{!1===t.params.scrollbar.enabled?I():(P(),b(),g())})),i("update resize observerUpdate lock unlock changeDirection",(()=>{b()})),i("setTranslate",(()=>{g()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),i("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))})),i("destroy",(()=>{L()}));const I=()=>{t.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),L()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),P(),b(),g()},disable:I,updateSize:b,setTranslate:g,init:P,destroy:L})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(e,s)=>{const{rtl:a}=t,i=a?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),c=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*i+"%":n*s*i+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let p=`translate3d(${n}, ${l}, 0px)`;if(null!=o){p+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(c&&null!=c){p+=` rotate(${c*s*-1}deg)`}e.style.transform=p},n=()=>{const{el:e,slides:s,progress:a,snapGrid:n,isElement:l}=t,o=f(e,i);t.isElement&&o.push(...f(t.hostEl,i)),o.forEach((e=>{r(e,a)})),s.forEach(((e,s)=>{let l=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(l+=Math.ceil(s/2)-a*(n.length-1)),l=Math.min(Math.max(l,-1),1),e.querySelectorAll(`${i}, [data-swiper-parallax-rotate]`).forEach((e=>{r(e,l)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&n()})),a("setTranslate",(()=>{t.params.parallax.enabled&&n()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s,hostEl:a}=t,r=[...s.querySelectorAll(i)];t.isElement&&r.push(...a.querySelectorAll(i)),r.forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();s({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,c=1,p=!1;const u=[],m={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},h={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v,b=1;function y(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,a=u[1].pageY;return Math.sqrt((s-e)**2+(a-t)**2)}function x(){const e=t.params.zoom,s=m.imageWrapEl.getAttribute("data-swiper-zoom")||e.maxRatio;if(e.limitToOriginalSize&&m.imageEl&&m.imageEl.naturalWidth){const e=m.imageEl.naturalWidth/m.imageEl.offsetWidth;return Math.min(e,s)}return s}function S(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function T(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!S(e))return;const s=t.params.zoom;if(l=!1,o=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=y(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let a=m.slideEl.querySelector(`.${s.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=a,m.imageWrapEl=a?E(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=x()}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x-n.scrollX)/c,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y-n.scrollY)/c]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}p=!0}}function M(e){if(!S(e))return;const s=t.params.zoom,a=t.zoom,i=u.findIndex((t=>t.pointerId===e.pointerId));i>=0&&(u[i]=e),u.length<2||(o=!0,m.scaleMove=y(),m.imageEl&&(a.scale=m.scaleMove/m.scaleStart*c,a.scale>m.maxRatio&&(a.scale=m.maxRatio-1+(a.scale-m.maxRatio+1)**.5),a.scalet.pointerId===e.pointerId));i>=0&&u.splice(i,1),l&&o&&(l=!1,o=!1,m.imageEl&&(a.scale=Math.max(Math.min(a.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,c=a.scale,p=!1,a.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):a.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===a.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function P(){t.touchEventsData.preventTouchMoveFromPointerMove=!1}function L(e){if(!S(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.hostEl.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!m.slideEl)return;h.isMoved||(h.width=m.imageEl.offsetWidth||m.imageEl.clientWidth,h.height=m.imageEl.offsetHeight||m.imageEl.clientHeight,h.startX=d(m.imageWrapEl,"x")||0,h.startY=d(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const a=h.width*s.scale,i=h.height*s.scale;h.minX=Math.min(m.slideWidth/2-a/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-i/2,0),h.maxY=-h.minY,h.touchesCurrent.x=u.length>0?u[0].pageX:e.pageX,h.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY;if(Math.max(Math.abs(h.touchesCurrent.x-h.touchesStart.x),Math.abs(h.touchesCurrent.y-h.touchesStart.y))>5&&(t.allowClick=!1),!h.isMoved&&!p){if(t.isHorizontal()&&(Math.floor(h.minX)===Math.floor(h.startX)&&h.touchesCurrent.xh.touchesStart.x))return h.isTouched=!1,void P();if(!t.isHorizontal()&&(Math.floor(h.minY)===Math.floor(h.startY)&&h.touchesCurrent.yh.touchesStart.y))return h.isTouched=!1,void P()}e.cancelable&&e.preventDefault(),e.stopPropagation(),clearTimeout(v),t.touchEventsData.preventTouchMoveFromPointerMove=!0,v=setTimeout((()=>{P()})),h.isMoved=!0;const r=(s.scale-c)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;h.currentX=h.touchesCurrent.x-h.touchesStart.x+h.startX+r*(h.width-2*n),h.currentY=h.touchesCurrent.y-h.touchesStart.y+h.startY+r*(h.height-2*l),h.currentXh.maxX&&(h.currentX=h.maxX-1+(h.currentX-h.maxX+1)**.8),h.currentYh.maxY&&(h.currentY=h.maxY-1+(h.currentY-h.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=h.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=h.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(h.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(h.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(h.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(h.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=h.touchesCurrent.x,g.prevPositionY=h.touchesCurrent.y,g.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}function I(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,c=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function A(e){const s=t.zoom,a=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${a.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?E(m.imageEl,`.${a.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let i,r,l,o,d,p,u,g,v,b,y,S,T,M,C,P,L,I;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===h.touchesStart.x&&e?(i=e.pageX,r=e.pageY):(i=h.touchesStart.x,r=h.touchesStart.y);const A="number"==typeof e?e:null;1===c&&A&&(i=void 0,r=void 0);const z=x();s.scale=A||z,c=A||z,!e||1===c&&A?(u=0,g=0):(L=m.slideEl.offsetWidth,I=m.slideEl.offsetHeight,l=w(m.slideEl).left+n.scrollX,o=w(m.slideEl).top+n.scrollY,d=l+L/2-i,p=o+I/2-r,v=m.imageEl.offsetWidth||m.imageEl.clientWidth,b=m.imageEl.offsetHeight||m.imageEl.clientHeight,y=v*s.scale,S=b*s.scale,T=Math.min(L/2-y/2,0),M=Math.min(I/2-S/2,0),C=-T,P=-M,u=d*s.scale,g=p*s.scale,uC&&(u=C),gP&&(g=P)),A&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${g}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function z(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?E(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,c=1,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function $(e){const s=t.zoom;s.scale&&1!==s.scale?z():A(e)}function k(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function O(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:a}=k();t.wrapperEl.addEventListener("pointerdown",T,s),t.wrapperEl.addEventListener("pointermove",M,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,C,s)})),t.wrapperEl.addEventListener("pointermove",L,a)}function D(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:a}=k();t.wrapperEl.removeEventListener("pointerdown",T,s),t.wrapperEl.removeEventListener("pointermove",M,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,C,s)})),t.wrapperEl.removeEventListener("pointermove",L,a)}Object.defineProperty(t.zoom,"scale",{get:()=>b,set(e){if(b!==e){const t=m.imageEl,s=m.slideEl;i("zoomChange",e,t,s)}b=e}}),a("init",(()=>{t.params.zoom.enabled&&O()})),a("destroy",(()=>{D()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(h.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),h.isTouched=!0;const a=u.length>0?u[0]:e;h.touchesStart.x=a.pageX,h.touchesStart.y=a.pageY}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!h.isMoved)return h.isTouched=!1,void(h.isMoved=!1);h.isTouched=!1,h.isMoved=!1;let s=300,a=300;const i=g.x*s,r=h.currentX+i,n=g.y*a,l=h.currentY+n;0!==g.x&&(s=Math.abs((r-h.currentX)/g.x)),0!==g.y&&(a=Math.abs((l-h.currentY)/g.y));const o=Math.max(s,a);h.currentX=r,h.currentY=l;const d=h.width*e.scale,c=h.height*e.scale;h.minX=Math.min(m.slideWidth/2-d/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-c/2,0),h.maxY=-h.minY,h.currentX=Math.max(Math.min(h.currentX,h.maxX),h.minX),h.currentY=Math.max(Math.min(h.currentY,h.maxY),h.minY),m.imageWrapEl.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&$(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&I()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&I()})),Object.assign(t.zoom,{enable:O,disable:D,in:A,out:z,toggle:$})},function(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){("string"==typeof t.params.controller.control?[...document.querySelectorAll(t.params.controller.control)]:[t.params.controller.control]).forEach((e=>{if(t.controller.control||(t.controller.control=[]),e&&e.swiper)t.controller.control.push(e.swiper);else if(e){const s=`${t.params.eventsPrefix}init`,a=i=>{t.controller.control.push(i.detail[0]),t.update(),e.removeEventListener(s,a)};e.addEventListener(s,a)}}))}else t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid)}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e{s.updateAutoHeight()})),x(s.wrapperEl,(()=>{i&&s.transitionEnd()}))))}if(Array.isArray(i))for(r=0;r{e.setAttribute("tabIndex","0")}))}function p(e){(e=T(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function u(e,t){(e=T(e)).forEach((e=>{e.setAttribute("role",t)}))}function m(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function h(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function f(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function g(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function w(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,a=e.target;if(!t.pagination||!t.pagination.el||a!==t.pagination.el&&!t.pagination.el.contains(e.target)||e.target.matches(ne(t.params.pagination.bulletClass))){if(t.navigation&&t.navigation.prevEl&&t.navigation.nextEl){const e=T(t.navigation.prevEl);T(t.navigation.nextEl).includes(a)&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?d(s.lastSlideMessage):d(s.nextSlideMessage)),e.includes(a)&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?d(s.firstSlideMessage):d(s.prevSlideMessage))}t.pagination&&a.matches(ne(t.params.pagination.bulletClass))&&a.click()}}function b(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function E(){return b()&&t.params.pagination.clickable}const x=(e,t,s)=>{c(e),"BUTTON"!==e.tagName&&(u(e,"button"),e.addEventListener("keydown",w)),h(e,s),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},S=e=>{n&&n!==e.target&&!n.contains(e.target)&&(r=!0),t.a11y.clicked=!0},M=()=>{r=!1,requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},C=e=>{o=(new Date).getTime()},P=e=>{if(t.a11y.clicked||!t.params.a11y.scrollOnFocus)return;if((new Date).getTime()-o<100)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);if(!s||!t.slides.includes(s))return;n=s;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,requestAnimationFrame((()=>{r||(t.params.loop?t.slideToLoop(parseInt(s.getAttribute("data-swiper-slide-index")),0):t.slideTo(t.slides.indexOf(s),0),r=!1)})))},L=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&m(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&u(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((a,i)=>{const r=t.params.loop?parseInt(a.getAttribute("data-swiper-slide-index"),10):i;h(a,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))},I=()=>{const e=t.params.a11y;t.el.append(l);const s=t.el;e.containerRoleDescriptionMessage&&m(s,e.containerRoleDescriptionMessage),e.containerMessage&&h(s,e.containerMessage);const i=t.wrapperEl,r=e.id||i.getAttribute("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const o=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var d;d=r,T(i).forEach((e=>{e.setAttribute("id",d)})),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(i,o),L();let{nextEl:c,prevEl:p}=t.navigation?t.navigation:{};if(c=T(c),p=T(p),c&&c.forEach((t=>x(t,r,e.nextSlideMessage))),p&&p.forEach((t=>x(t,r,e.prevSlideMessage))),E()){T(t.pagination.el).forEach((e=>{e.addEventListener("keydown",w)}))}a().addEventListener("visibilitychange",C),t.el.addEventListener("focus",P,!0),t.el.addEventListener("focus",P,!0),t.el.addEventListener("pointerdown",S,!0),t.el.addEventListener("pointerup",M,!0)};i("beforeInit",(()=>{l=v("span",t.params.a11y.notificationClass),l.setAttribute("aria-live","assertive"),l.setAttribute("aria-atomic","true")})),i("afterInit",(()=>{t.params.a11y.enabled&&I()})),i("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&L()})),i("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{nextEl:e,prevEl:s}=t.navigation;s&&(t.isBeginning?(f(s),p(s)):(g(s),c(s))),e&&(t.isEnd?(f(e),p(e)):(g(e),c(e)))}()})),i("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;b()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(c(s),t.params.pagination.renderBullet||(u(s,"button"),h(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,y(s)+1)))),s.matches(ne(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),i("destroy",(()=>{t.params.a11y.enabled&&function(){l&&l.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=T(e),s=T(s),e&&e.forEach((e=>e.removeEventListener("keydown",w))),s&&s.forEach((e=>e.removeEventListener("keydown",w))),E()&&T(t.pagination.el).forEach((e=>{e.removeEventListener("keydown",w)}));a().removeEventListener("visibilitychange",C),t.el&&"string"!=typeof t.el&&(t.el.removeEventListener("focus",P,!0),t.el.removeEventListener("pointerdown",S,!0),t.el.removeEventListener("pointerup",M,!0))}()}))},function(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},d=(e,s)=>{const a=r();if(!i||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):a.location;const o=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${s}"]`):t.slides[s];let d=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${e}/`:""}${d}`);t.params.history.keepQuery&&(d+=n.search);const c=a.history.state;c&&c.value===d||(t.params.history.replaceState?a.history.replaceState({value:d},null,d):a.history.pushState({value:d},null,d))},c=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i{n=o(t.params.url),c(t.params.speed,n.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,n=o(t.params.url),n.key||n.value?(c(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",p)):t.params.history.replaceState||e.addEventListener("popstate",p)}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",p)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&d(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:i,on:n}=e,l=!1;const o=a(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return t.getSlideIndex(f(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const c=()=>{i("hashChange");const e=o.location.hash.replace("#",""),s=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},p=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),i("hashSet")):(o.location.hash=s||"",i("hashSet"))};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0,a=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(a||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",c)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",c)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&p()})),n("slideChange",(()=>{l&&t.params.cssMode&&p()}))},function(e){let t,s,{swiper:i,extendParams:r,on:n,emit:l,params:o}=e;i.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,c,p,u,m,h,f,g,v=o&&o.autoplay?o.autoplay.delay:3e3,w=o&&o.autoplay?o.autoplay.delay:3e3,b=(new Date).getTime();function y(e){i&&!i.destroyed&&i.wrapperEl&&e.target===i.wrapperEl&&(i.wrapperEl.removeEventListener("transitionend",y),g||e.detail&&e.detail.bySwiperTouchMove||C())}const E=()=>{if(i.destroyed||!i.autoplay.running)return;i.autoplay.paused?c=!0:c&&(w=d,c=!1);const e=i.autoplay.paused?d:b+w-(new Date).getTime();i.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/v),s=requestAnimationFrame((()=>{E()}))},x=e=>{if(i.destroyed||!i.autoplay.running)return;cancelAnimationFrame(s),E();let a=void 0===e?i.params.autoplay.delay:e;v=i.params.autoplay.delay,w=i.params.autoplay.delay;const r=(()=>{let e;if(e=i.virtual&&i.params.virtual.enabled?i.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:i.slides[i.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(a=r,v=r,w=r),d=a;const n=i.params.speed,o=()=>{i&&!i.destroyed&&(i.params.autoplay.reverseDirection?!i.isBeginning||i.params.loop||i.params.rewind?(i.slidePrev(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(i.slides.length-1,n,!0,!0),l("autoplay")):!i.isEnd||i.params.loop||i.params.rewind?(i.slideNext(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(0,n,!0,!0),l("autoplay")),i.params.cssMode&&(b=(new Date).getTime(),requestAnimationFrame((()=>{x()}))))};return a>0?(clearTimeout(t),t=setTimeout((()=>{o()}),a)):requestAnimationFrame((()=>{o()})),a},S=()=>{b=(new Date).getTime(),i.autoplay.running=!0,x(),l("autoplayStart")},T=()=>{i.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},M=(e,s)=>{if(i.destroyed||!i.autoplay.running)return;clearTimeout(t),e||(f=!0);const a=()=>{l("autoplayPause"),i.params.autoplay.waitForTransition?i.wrapperEl.addEventListener("transitionend",y):C()};if(i.autoplay.paused=!0,s)return h&&(d=i.params.autoplay.delay),h=!1,void a();const r=d||i.params.autoplay.delay;d=r-((new Date).getTime()-b),i.isEnd&&d<0&&!i.params.loop||(d<0&&(d=0),a())},C=()=>{i.isEnd&&d<0&&!i.params.loop||i.destroyed||!i.autoplay.running||(b=(new Date).getTime(),f?(f=!1,x(d)):x(),i.autoplay.paused=!1,l("autoplayResume"))},P=()=>{if(i.destroyed||!i.autoplay.running)return;const e=a();"hidden"===e.visibilityState&&(f=!0,M(!0)),"visible"===e.visibilityState&&C()},L=e=>{"mouse"===e.pointerType&&(f=!0,g=!0,i.animating||i.autoplay.paused||M(!0))},I=e=>{"mouse"===e.pointerType&&(g=!1,i.autoplay.paused&&C())};n("init",(()=>{i.params.autoplay.enabled&&(i.params.autoplay.pauseOnMouseEnter&&(i.el.addEventListener("pointerenter",L),i.el.addEventListener("pointerleave",I)),a().addEventListener("visibilitychange",P),S())})),n("destroy",(()=>{i.el&&"string"!=typeof i.el&&(i.el.removeEventListener("pointerenter",L),i.el.removeEventListener("pointerleave",I)),a().removeEventListener("visibilitychange",P),i.autoplay.running&&T()})),n("_freeModeStaticRelease",(()=>{(u||f)&&C()})),n("_freeModeNoMomentumRelease",(()=>{i.params.autoplay.disableOnInteraction?T():M(!0,!0)})),n("beforeTransitionStart",((e,t,s)=>{!i.destroyed&&i.autoplay.running&&(s||!i.params.autoplay.disableOnInteraction?M(!0,!0):T())})),n("sliderFirstMove",(()=>{!i.destroyed&&i.autoplay.running&&(i.params.autoplay.disableOnInteraction?T():(p=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,M(!0)}),200)))})),n("touchEnd",(()=>{if(!i.destroyed&&i.autoplay.running&&p){if(clearTimeout(m),clearTimeout(t),i.params.autoplay.disableOnInteraction)return u=!1,void(p=!1);u&&i.params.cssMode&&C(),u=!1,p=!1}})),n("slideChange",(()=>{!i.destroyed&&i.autoplay.running&&(h=!0)})),Object.assign(i.autoplay,{start:S,stop:T,pause:M,resume:C})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&a.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;i=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(i):t.slideTo(i)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(c(e.swiper)){const a=Object.assign({},e.swiper);Object.assign(a,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(a),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function d(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const a="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let i=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(i=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e{e.classList.add(r)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>i?r-Math.floor(a/2)+1:r+Math.floor(a/2)-1:r>i&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},i("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=a(),i=()=>{const a="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(a&&a.swiper)e.swiper=a.swiper,o(),d(!0);else if(a){const s=`${t.params.eventsPrefix}init`,i=r=>{e.swiper=r.detail[0],a.removeEventListener(s,i),o(),d(!0),e.swiper.update(),t.update()};a.addEventListener(s,i)}return a},r=()=>{if(t.destroyed)return;i()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),d(!0)})),i("slideChange update resize observerUpdate",(()=>{d()})),i("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),i("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:d})},function(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:o()})},onTouchEnd:function(e){let{currentPos:s}=e;if(t.params.cssMode)return;const{params:r,wrapperEl:n,rtlTranslate:l,snapGrid:d,touchEventsData:c}=t,p=o()-c.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=c.velocities.pop(),s=c.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)150||o()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,c.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let p=t.translate+s;l&&(p=-p);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(pt.minTranslate())r.freeMode.momentumBounce?(p-t.minTranslate()>h&&(p=t.minTranslate()+h),u=t.minTranslate(),m=!0,c.allowMomentumBounce=!0):p=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-p){e=t;break}p=Math.abs(d[e]-p){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-p-t.translate)/t.velocity):Math.abs((p-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-p:p)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&c.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),x(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(p),t.setTransition(e),t.setTranslate(p),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,x(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(p),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||p>=r.longSwipesMs)&&(a("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,i,{swiper:r,extendParams:n,on:l}=e;n({grid:{rows:1,fill:"column"}});const o=()=>{let e=r.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*r.size:"string"==typeof e&&(e=parseFloat(e)),e};l("init",(()=>{i=r.params.grid&&r.params.grid.rows>1})),l("update",(()=>{const{params:e,el:t}=r,s=e.grid&&e.grid.rows>1;i&&!s?(t.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,r.emitContainerClasses()):!i&&s&&(t.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&t.classList.add(`${e.containerModifierClass}grid-column`),r.emitContainerClasses()),i=s})),r.grid={initSlides:e=>{const{slidesPerView:i}=r.params,{rows:n,fill:l}=r.params.grid,o=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:e.length;a=Math.floor(o/n),t=Math.floor(o/n)===o/n?o:Math.ceil(o/n)*n,"auto"!==i&&"row"===l&&(t=Math.max(t,i*n)),s=t/n},unsetSlides:()=>{r.slides&&r.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[r.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,i,n)=>{const{slidesPerGroup:l}=r.params,d=o(),{rows:c,fill:p}=r.params.grid,u=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:n.length;let m,h,f;if("row"===p&&l>1){const s=Math.floor(e/(l*c)),a=e-c*l*s,r=0===s?l:Math.min(Math.ceil((u-s*c*l)/c),l);f=Math.floor(a/r),h=a-f*r+s*l,m=h+f*t/c,i.style.order=m}else"column"===p?(h=Math.floor(e/c),f=e-h*c,(h>a||h===a&&f===c-1)&&(f+=1,f>=c&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);i.row=f,i.column=h,i.style.height=`calc((100% - ${(c-1)*d}px) / ${c})`,i.style[r.getDirectionLabel("margin-top")]=0!==f?d&&`${d}px`:"",i.swiperSlideGridSet=!0},updateWrapperSize:(e,s)=>{const{centeredSlides:a,roundLengths:i}=r.params,n=o(),{rows:l}=r.params.grid;if(r.virtualSize=(e+n)*t,r.virtualSize=Math.ceil(r.virtualSize/l)-n,r.params.cssMode||(r.wrapperEl.style[r.getDirectionLabel("width")]=`${r.virtualSize+n}px`),a){const e=[];for(let t=0;t{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),he({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),i||(i=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(i)),a&&(a.style.opacity=Math.max(-t,0)),i&&(i.style.opacity=Math.max(t,0))};ue({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,c=M(t),p=t.params.cubeEffect,u=t.isHorizontal(),m=t.virtual&&t.params.virtual.enabled;let h,f=0;p.shadow&&(u?(h=t.wrapperEl.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),t.wrapperEl.append(h)),h.style.height=`${r}px`):(h=e.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),e.append(h))));for(let e=0;e-1&&(f=90*s+90*d,l&&(f=90*-s-90*d)),t.style.transform=w,p.slideShadows&&i(t,d,u)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,p.shadow)if(u)h.style.transform=`translate3d(0px, ${r/2+p.shadowOffset}px, ${-r/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${p.shadowScale})`;else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,a=p.shadowScale/t,i=p.shadowOffset;h.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-89.99deg)`}const g=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${g}px) rotateX(${c(t.isHorizontal()?0:f)}deg) rotateY(${c(t.isHorizontal()?-f:0)}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const i=(e,s)=>{let a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=fe("flip",e,t.isHorizontal()?"left":"top")),i||(i=fe("flip",e,t.isHorizontal()?"right":"bottom")),a&&(a.style.opacity=Math.max(-s,0)),i&&(i.style.opacity=Math.max(s,0))};ue({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect,r=M(t);for(let n=0;n{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),i(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),ue({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth,p=M(t);for(let e=0,t=a.length;e0?u:0),s&&(s.style.opacity=-u>0?-u:0)}}},setTransition:e=>{t.slides.map((e=>h(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;ue({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides,o=M(t);if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(g=r.prev,f=!0),m.forEach(((e,t)=>{m[t]=`calc(${e}px + (${i(g.translate[t])} * ${Math.abs(c*n)}))`})),h.forEach(((e,t)=>{let s=g.rotate[t]*Math.abs(c*n);h[t]=s})),a.style.zIndex=-Math.abs(Math.round(d))+e.length;const v=m.join(", "),w=`rotateX(${o(h[0])}deg) rotateY(${o(h[1])}deg) rotateZ(${o(h[2])}deg)`,b=p<0?`scale(${1+(1-g.scale)*p*n})`:`scale(${1-(1-g.scale)*p*n})`,y=p<0?1+(1-g.opacity)*p*n:1-(1-g.opacity)*p*n,E=`translate3d(${v}) ${w} ${b}`;if(f&&g.shadow||!f){let e=a.querySelector(".swiper-slide-shadow");if(!e&&g.shadow&&(e=fe("creative",a)),e){const t=r.shadowPerProgress?c*(1/r.limitProgress):c;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const x=me(0,a);x.style.transform=E,x.style.opacity=y,g.origin&&(x.style.transformOrigin=g.origin)}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),ue({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s,rtlTranslate:a}=t,i=t.params.cardsEffect,{startTranslate:r,isTouched:n}=t.touchEventsData,l=a?-t.translate:t.translate;for(let o=0;o0&&p<1&&(n||t.params.cssMode)&&l-1&&(n||t.params.cssMode)&&l>r;if(y||E){const e=(1-Math.abs((Math.abs(p)-.5)/.5))**.5;v+=-28*p*e,g+=-.5*e,w+=96*e,h=-25*e*Math.abs(p)+"%"}if(m=p<0?`calc(${m}px ${a?"-":"+"} (${w*Math.abs(p)}%))`:p>0?`calc(${m}px ${a?"-":"+"} (-${w*Math.abs(p)}%))`:`${m}px`,!t.isHorizontal()){const e=h;h=m,m=e}const x=p<0?""+(1+(1-g)*p):""+(1-(1-g)*p),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${i.rotate?a?-v:v:0}deg)\n scale(${x})\n `;if(i.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=fe("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(p)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(c))+e.length;me(0,d).style.transform=S}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return ie.use(ge),ie}(); +//# sourceMappingURL=swiper-bundle.min.js.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.min.js.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.min.js.map new file mode 100644 index 0000000..2d2fa90 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.js.js","names":["Swiper","isObject$1","obj","constructor","Object","extend$1","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","filter","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","extend","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix","support","deviceCached","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","beforeInit","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","targetIsButton","find","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","total","firstIndex","midIndex","classesToRemove","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","naturalWidth","imageMaxRatio","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","r","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateFix","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.min.mjs new file mode 100644 index 0000000..f49fcbd --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import{S as Swiper}from"./shared/swiper-core.min.mjs";import Virtual from"./modules/virtual.min.mjs";import Keyboard from"./modules/keyboard.min.mjs";import Mousewheel from"./modules/mousewheel.min.mjs";import Navigation from"./modules/navigation.min.mjs";import Pagination from"./modules/pagination.min.mjs";import Scrollbar from"./modules/scrollbar.min.mjs";import Parallax from"./modules/parallax.min.mjs";import Zoom from"./modules/zoom.min.mjs";import Controller from"./modules/controller.min.mjs";import A11y from"./modules/a11y.min.mjs";import History from"./modules/history.min.mjs";import HashNavigation from"./modules/hash-navigation.min.mjs";import Autoplay from"./modules/autoplay.min.mjs";import Thumb from"./modules/thumbs.min.mjs";import freeMode from"./modules/free-mode.min.mjs";import Grid from"./modules/grid.min.mjs";import Manipulation from"./modules/manipulation.min.mjs";import EffectFade from"./modules/effect-fade.min.mjs";import EffectCube from"./modules/effect-cube.min.mjs";import EffectFlip from"./modules/effect-flip.min.mjs";import EffectCoverflow from"./modules/effect-coverflow.min.mjs";import EffectCreative from"./modules/effect-creative.min.mjs";import EffectCards from"./modules/effect-cards.min.mjs";const modules=[Virtual,Keyboard,Mousewheel,Navigation,Pagination,Scrollbar,Parallax,Zoom,Controller,A11y,History,HashNavigation,Autoplay,Thumb,freeMode,Grid,Manipulation,EffectFade,EffectCube,EffectFlip,EffectCoverflow,EffectCreative,EffectCards];Swiper.use(modules);export{Swiper,Swiper as default}; +//# sourceMappingURL=swiper-bundle.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.min.mjs.map new file mode 100644 index 0000000..00ccec7 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.mjs.mjs","names":["Swiper","Virtual","Keyboard","Mousewheel","Navigation","Pagination","Scrollbar","Parallax","Zoom","Controller","A11y","History","HashNavigation","Autoplay","Thumb","freeMode","Grid","Manipulation","EffectFade","EffectCube","EffectFlip","EffectCoverflow","EffectCreative","EffectCards","modules","use"],"sources":["0"],"mappings":";;;;;;;;;;;;YAYcA,WAAc,sCACrBC,YAAa,mCACbC,aAAc,oCACdC,eAAgB,sCAChBC,eAAgB,sCAChBC,eAAgB,sCAChBC,cAAe,qCACfC,aAAc,oCACdC,SAAU,gCACVC,eAAgB,sCAChBC,SAAU,gCACVC,YAAa,mCACbC,mBAAoB,2CACpBC,aAAc,oCACdC,UAAW,kCACXC,aAAc,qCACdC,SAAU,gCACVC,iBAAkB,wCAClBC,eAAgB,uCAChBC,eAAgB,uCAChBC,eAAgB,uCAChBC,oBAAqB,4CACrBC,mBAAoB,2CACpBC,gBAAiB,iCAGxB,MAAMC,QAAU,CAACvB,QAASC,SAAUC,WAAYC,WAAYC,WAAYC,UAAWC,SAAUC,KAAMC,WAAYC,KAAMC,QAASC,eAAgBC,SAAUC,MAAOC,SAAUC,KAAMC,aAAcC,WAAYC,WAAYC,WAAYC,gBAAiBC,eAAgBC,aAClQvB,OAAOyB,IAAID,gBAEFxB,OAAQA"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.mjs new file mode 100644 index 0000000..e7cb018 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-bundle.mjs @@ -0,0 +1,42 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import { S as Swiper } from './shared/swiper-core.mjs'; +import Virtual from './modules/virtual.mjs'; +import Keyboard from './modules/keyboard.mjs'; +import Mousewheel from './modules/mousewheel.mjs'; +import Navigation from './modules/navigation.mjs'; +import Pagination from './modules/pagination.mjs'; +import Scrollbar from './modules/scrollbar.mjs'; +import Parallax from './modules/parallax.mjs'; +import Zoom from './modules/zoom.mjs'; +import Controller from './modules/controller.mjs'; +import A11y from './modules/a11y.mjs'; +import History from './modules/history.mjs'; +import HashNavigation from './modules/hash-navigation.mjs'; +import Autoplay from './modules/autoplay.mjs'; +import Thumb from './modules/thumbs.mjs'; +import freeMode from './modules/free-mode.mjs'; +import Grid from './modules/grid.mjs'; +import Manipulation from './modules/manipulation.mjs'; +import EffectFade from './modules/effect-fade.mjs'; +import EffectCube from './modules/effect-cube.mjs'; +import EffectFlip from './modules/effect-flip.mjs'; +import EffectCoverflow from './modules/effect-coverflow.mjs'; +import EffectCreative from './modules/effect-creative.mjs'; +import EffectCards from './modules/effect-cards.mjs'; + +// Swiper Class +const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; +Swiper.use(modules); + +export { Swiper, Swiper as default }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-effect-utils.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-effect-utils.d.ts new file mode 100644 index 0000000..aaee39d --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-effect-utils.d.ts @@ -0,0 +1,28 @@ +import { Swiper, SwiperOptions } from './types/index.d.ts'; + +declare const createShadow: (suffix?: string, slideEl: HTMLElement, side?: string) => HTMLElement; + +declare const effectInit: (params: { + effect: string; + swiper: Swiper; + on: () => void; + setTranslate: () => void; + setTransition: (duration: number) => void; + overwriteParams?: () => SwiperOptions; + perspective?: () => boolean; + recreateShadows?: () => void; + getEffectParams?: () => { slideShadows?: boolean }; +}) => void; + +declare const effectTarget: (effectParams: any, slideEl: HTMLElement) => void; + +declare const effectVirtualTransitionEnd: (params: { + swiper: Swiper; + duration: number; + transformElements: HTMLElement[]; + allSlides?: boolean; +}) => void; + +declare const getSlideTransformEl: (slideEl: HTMLElement) => void; + +export { createShadow, effectInit, effectTarget, effectVirtualTransitionEnd, getSlideTransformEl }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-effect-utils.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-effect-utils.min.mjs new file mode 100644 index 0000000..3876027 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-effect-utils.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +export{c as createShadow}from"./shared/create-shadow.min.mjs";export{e as effectInit}from"./shared/effect-init.min.mjs";export{e as effectTarget}from"./shared/effect-target.min.mjs";export{e as effectVirtualTransitionEnd}from"./shared/effect-virtual-transition-end.min.mjs";export{g as getSlideTransformEl}from"./shared/utils.min.mjs"; +//# sourceMappingURL=swiper-effect-utils.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-effect-utils.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-effect-utils.min.mjs.map new file mode 100644 index 0000000..538571b --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-effect-utils.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-effect-utils.mjs.mjs","names":["c","e","g"],"sources":["0"],"mappings":";;;;;;;;;;;;OAYSA,sBAAyB,wCACzBC,oBAAuB,sCACvBA,sBAAyB,wCACzBA,oCAAuC,wDACvCC,6BAAgC"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-effect-utils.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-effect-utils.mjs new file mode 100644 index 0000000..617a784 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-effect-utils.mjs @@ -0,0 +1,17 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +export { c as createShadow } from './shared/create-shadow.mjs'; +export { e as effectInit } from './shared/effect-init.mjs'; +export { e as effectTarget } from './shared/effect-target.mjs'; +export { e as effectVirtualTransitionEnd } from './shared/effect-virtual-transition-end.mjs'; +export { g as getSlideTransformEl } from './shared/utils.mjs'; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.js b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.js new file mode 100644 index 0000000..4f53ddb --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.js @@ -0,0 +1,10262 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +(function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$2(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$2(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) { + extend$2(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$2(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$2(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject$1(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend$1() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function getSlideTransformEl(slideEl) { + return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl; + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + const children = [...element.children]; + if (element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOf(el, parent) { + const isChild = parent.contains(el); + if (!isChild && parent instanceof HTMLSlotElement) { + const children = [...element.assignedElements()]; + return children.includes(el); + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementOffset(el) { + const window = getWindow(); + const document = getDocument(); + const box = el.getBoundingClientRect(); + const body = document.body; + const clientTop = el.clientTop || body.clientTop || 0; + const clientLeft = el.clientLeft || body.clientLeft || 0; + const scrollTop = el === window ? window.scrollY : el.scrollTop; + const scrollLeft = el === window ? window.scrollX : el.scrollLeft; + return { + top: box.top + scrollTop - clientTop, + left: box.left + scrollLeft - clientLeft + }; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementTransitionEnd(el, callback) { + function fireCallBack(e) { + if (e.target !== el) return; + callback.call(el, e); + el.removeEventListener('transitionend', fireCallBack); + } + if (callback) { + el.addEventListener('transitionend', fireCallBack); + } + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + function makeElementsArray(el) { + return (Array.isArray(el) ? el : [el]).filter(e => !!e); + } + function getRotateFix(swiper) { + return v => { + if (Math.abs(v) > 0 && swiper.browser && swiper.browser.need3dFix && Math.abs(v) % 90 === 0) { + return v + 0.001; + } + return v; + }; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); + if (allSlidesSize + offsetSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend$1(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend$1(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend$1(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend$1(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend$1({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend$1({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend$1({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend$1({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend$1({}, swiper.params); + swiper.passedParams = extend$1({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend$1(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + function Virtual(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + virtual: { + enabled: false, + slides: [], + cache: true, + renderSlide: null, + renderExternal: null, + renderExternalUpdate: true, + addSlidesBefore: 0, + addSlidesAfter: 0 + } + }); + let cssModeTimeout; + const document = getDocument(); + swiper.virtual = { + cache: {}, + from: undefined, + to: undefined, + slides: [], + offset: 0, + slidesGrid: [] + }; + const tempDOM = document.createElement('div'); + function renderSlide(slide, index) { + const params = swiper.params.virtual; + if (params.cache && swiper.virtual.cache[index]) { + return swiper.virtual.cache[index]; + } + // eslint-disable-next-line + let slideEl; + if (params.renderSlide) { + slideEl = params.renderSlide.call(swiper, slide, index); + if (typeof slideEl === 'string') { + tempDOM.innerHTML = slideEl; + slideEl = tempDOM.children[0]; + } + } else if (swiper.isElement) { + slideEl = createElement('swiper-slide'); + } else { + slideEl = createElement('div', swiper.params.slideClass); + } + slideEl.setAttribute('data-swiper-slide-index', index); + if (!params.renderSlide) { + slideEl.innerHTML = slide; + } + if (params.cache) { + swiper.virtual.cache[index] = slideEl; + } + return slideEl; + } + function update(force, beforeInit) { + const { + slidesPerView, + slidesPerGroup, + centeredSlides, + loop: isLoop, + initialSlide + } = swiper.params; + if (beforeInit && !isLoop && initialSlide > 0) { + return; + } + const { + addSlidesBefore, + addSlidesAfter + } = swiper.params.virtual; + const { + from: previousFrom, + to: previousTo, + slides, + slidesGrid: previousSlidesGrid, + offset: previousOffset + } = swiper.virtual; + if (!swiper.params.cssMode) { + swiper.updateActiveIndex(); + } + const activeIndex = swiper.activeIndex || 0; + let offsetProp; + if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top'; + let slidesAfter; + let slidesBefore; + if (centeredSlides) { + slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter; + slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore; + } else { + slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter; + slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore; + } + let from = activeIndex - slidesBefore; + let to = activeIndex + slidesAfter; + if (!isLoop) { + from = Math.max(from, 0); + to = Math.min(to, slides.length - 1); + } + let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0); + if (isLoop && activeIndex >= slidesBefore) { + from -= slidesBefore; + if (!centeredSlides) offset += swiper.slidesGrid[0]; + } else if (isLoop && activeIndex < slidesBefore) { + from = -slidesBefore; + if (centeredSlides) offset += swiper.slidesGrid[0]; + } + Object.assign(swiper.virtual, { + from, + to, + offset, + slidesGrid: swiper.slidesGrid, + slidesBefore, + slidesAfter + }); + function onRendered() { + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + emit('virtualUpdate'); + } + if (previousFrom === from && previousTo === to && !force) { + if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) { + swiper.slides.forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + } + swiper.updateProgress(); + emit('virtualUpdate'); + return; + } + if (swiper.params.virtual.renderExternal) { + swiper.params.virtual.renderExternal.call(swiper, { + offset, + from, + to, + slides: function getSlides() { + const slidesToRender = []; + for (let i = from; i <= to; i += 1) { + slidesToRender.push(slides[i]); + } + return slidesToRender; + }() + }); + if (swiper.params.virtual.renderExternalUpdate) { + onRendered(); + } else { + emit('virtualUpdate'); + } + return; + } + const prependIndexes = []; + const appendIndexes = []; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + if (force) { + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)).forEach(slideEl => { + slideEl.remove(); + }); + } else { + for (let i = previousFrom; i <= previousTo; i += 1) { + if (i < from || i > to) { + const slideIndex = getSlideIndex(i); + swiper.slides.filter(el => el.matches(`.${swiper.params.slideClass}[data-swiper-slide-index="${slideIndex}"], swiper-slide[data-swiper-slide-index="${slideIndex}"]`)).forEach(slideEl => { + slideEl.remove(); + }); + } + } + } + const loopFrom = isLoop ? -slides.length : 0; + const loopTo = isLoop ? slides.length * 2 : slides.length; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + const slideIndex = getSlideIndex(i); + if (typeof previousTo === 'undefined' || force) { + appendIndexes.push(slideIndex); + } else { + if (i > previousTo) appendIndexes.push(slideIndex); + if (i < previousFrom) prependIndexes.push(slideIndex); + } + } + } + appendIndexes.forEach(index => { + swiper.slidesEl.append(renderSlide(slides[index], index)); + }); + if (isLoop) { + for (let i = prependIndexes.length - 1; i >= 0; i -= 1) { + const index = prependIndexes[i]; + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + } + } else { + prependIndexes.sort((a, b) => b - a); + prependIndexes.forEach(index => { + swiper.slidesEl.prepend(renderSlide(slides[index], index)); + }); + } + elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => { + slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`; + }); + onRendered(); + } + function appendSlide(slides) { + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.push(slides[i]); + } + } else { + swiper.virtual.slides.push(slides); + } + update(true); + } + function prependSlide(slides) { + const activeIndex = swiper.activeIndex; + let newActiveIndex = activeIndex + 1; + let numberOfNewSlides = 1; + if (Array.isArray(slides)) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) swiper.virtual.slides.unshift(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + numberOfNewSlides = slides.length; + } else { + swiper.virtual.slides.unshift(slides); + } + if (swiper.params.virtual.cache) { + const cache = swiper.virtual.cache; + const newCache = {}; + Object.keys(cache).forEach(cachedIndex => { + const cachedEl = cache[cachedIndex]; + const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index'); + if (cachedElIndex) { + cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides); + } + newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl; + }); + swiper.virtual.cache = newCache; + } + update(true); + swiper.slideTo(newActiveIndex, 0); + } + function removeSlide(slidesIndexes) { + if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return; + let activeIndex = swiper.activeIndex; + if (Array.isArray(slidesIndexes)) { + for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes[i]]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes[i], 1); + if (slidesIndexes[i] < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + } else { + if (swiper.params.virtual.cache) { + delete swiper.virtual.cache[slidesIndexes]; + // shift cache indexes + Object.keys(swiper.virtual.cache).forEach(key => { + if (key > slidesIndexes) { + swiper.virtual.cache[key - 1] = swiper.virtual.cache[key]; + swiper.virtual.cache[key - 1].setAttribute('data-swiper-slide-index', key - 1); + delete swiper.virtual.cache[key]; + } + }); + } + swiper.virtual.slides.splice(slidesIndexes, 1); + if (slidesIndexes < activeIndex) activeIndex -= 1; + activeIndex = Math.max(activeIndex, 0); + } + update(true); + swiper.slideTo(activeIndex, 0); + } + function removeAllSlides() { + swiper.virtual.slides = []; + if (swiper.params.virtual.cache) { + swiper.virtual.cache = {}; + } + update(true); + swiper.slideTo(0, 0); + } + on('beforeInit', () => { + if (!swiper.params.virtual.enabled) return; + let domSlidesAssigned; + if (typeof swiper.passedParams.virtual.slides === 'undefined') { + const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`)); + if (slides && slides.length) { + swiper.virtual.slides = [...slides]; + domSlidesAssigned = true; + slides.forEach((slideEl, slideIndex) => { + slideEl.setAttribute('data-swiper-slide-index', slideIndex); + swiper.virtual.cache[slideIndex] = slideEl; + slideEl.remove(); + }); + } + } + if (!domSlidesAssigned) { + swiper.virtual.slides = swiper.params.virtual.slides; + } + swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`); + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + update(false, true); + }); + on('setTranslate', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode && !swiper._immediateVirtual) { + clearTimeout(cssModeTimeout); + cssModeTimeout = setTimeout(() => { + update(); + }, 100); + } else { + update(); + } + }); + on('init update resize', () => { + if (!swiper.params.virtual.enabled) return; + if (swiper.params.cssMode) { + setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`); + } + }); + Object.assign(swiper.virtual, { + appendSlide, + prependSlide, + removeSlide, + removeAllSlides, + update + }); + } + + /* eslint-disable consistent-return */ + function Keyboard(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + const window = getWindow(); + swiper.keyboard = { + enabled: false + }; + extendParams({ + keyboard: { + enabled: false, + onlyInViewport: true, + pageUpDown: true + } + }); + function handle(event) { + if (!swiper.enabled) return; + const { + rtlTranslate: rtl + } = swiper; + let e = event; + if (e.originalEvent) e = e.originalEvent; // jquery fix + const kc = e.keyCode || e.charCode; + const pageUpDown = swiper.params.keyboard.pageUpDown; + const isPageUp = pageUpDown && kc === 33; + const isPageDown = pageUpDown && kc === 34; + const isArrowLeft = kc === 37; + const isArrowRight = kc === 39; + const isArrowUp = kc === 38; + const isArrowDown = kc === 40; + // Directions locks + if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) { + return false; + } + if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) { + return false; + } + if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) { + return undefined; + } + if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) { + return undefined; + } + if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) { + let inView = false; + // Check that swiper should be inside of visible area of window + if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) { + return undefined; + } + const el = swiper.el; + const swiperWidth = el.clientWidth; + const swiperHeight = el.clientHeight; + const windowWidth = window.innerWidth; + const windowHeight = window.innerHeight; + const swiperOffset = elementOffset(el); + if (rtl) swiperOffset.left -= el.scrollLeft; + const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]]; + for (let i = 0; i < swiperCoord.length; i += 1) { + const point = swiperCoord[i]; + if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) { + if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line + inView = true; + } + } + if (!inView) return undefined; + } + if (swiper.isHorizontal()) { + if (isPageUp || isPageDown || isArrowLeft || isArrowRight) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext(); + if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev(); + } else { + if (isPageUp || isPageDown || isArrowUp || isArrowDown) { + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + } + if (isPageDown || isArrowDown) swiper.slideNext(); + if (isPageUp || isArrowUp) swiper.slidePrev(); + } + emit('keyPress', kc); + return undefined; + } + function enable() { + if (swiper.keyboard.enabled) return; + document.addEventListener('keydown', handle); + swiper.keyboard.enabled = true; + } + function disable() { + if (!swiper.keyboard.enabled) return; + document.removeEventListener('keydown', handle); + swiper.keyboard.enabled = false; + } + on('init', () => { + if (swiper.params.keyboard.enabled) { + enable(); + } + }); + on('destroy', () => { + if (swiper.keyboard.enabled) { + disable(); + } + }); + Object.assign(swiper.keyboard, { + enable, + disable + }); + } + + /* eslint-disable consistent-return */ + function Mousewheel(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + mousewheel: { + enabled: false, + releaseOnEdges: false, + invert: false, + forceToAxis: false, + sensitivity: 1, + eventsTarget: 'container', + thresholdDelta: null, + thresholdTime: null, + noMousewheelClass: 'swiper-no-mousewheel' + } + }); + swiper.mousewheel = { + enabled: false + }; + let timeout; + let lastScrollTime = now(); + let lastEventBeforeSnap; + const recentWheelEvents = []; + function normalize(e) { + // Reasonable defaults + const PIXEL_STEP = 10; + const LINE_HEIGHT = 40; + const PAGE_HEIGHT = 800; + let sX = 0; + let sY = 0; // spinX, spinY + let pX = 0; + let pY = 0; // pixelX, pixelY + + // Legacy + if ('detail' in e) { + sY = e.detail; + } + if ('wheelDelta' in e) { + sY = -e.wheelDelta / 120; + } + if ('wheelDeltaY' in e) { + sY = -e.wheelDeltaY / 120; + } + if ('wheelDeltaX' in e) { + sX = -e.wheelDeltaX / 120; + } + + // side scrolling on FF with DOMMouseScroll + if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) { + sX = sY; + sY = 0; + } + pX = sX * PIXEL_STEP; + pY = sY * PIXEL_STEP; + if ('deltaY' in e) { + pY = e.deltaY; + } + if ('deltaX' in e) { + pX = e.deltaX; + } + if (e.shiftKey && !pX) { + // if user scrolls with shift he wants horizontal scroll + pX = pY; + pY = 0; + } + if ((pX || pY) && e.deltaMode) { + if (e.deltaMode === 1) { + // delta in LINE units + pX *= LINE_HEIGHT; + pY *= LINE_HEIGHT; + } else { + // delta in PAGE units + pX *= PAGE_HEIGHT; + pY *= PAGE_HEIGHT; + } + } + + // Fall-back if spin cannot be determined + if (pX && !sX) { + sX = pX < 1 ? -1 : 1; + } + if (pY && !sY) { + sY = pY < 1 ? -1 : 1; + } + return { + spinX: sX, + spinY: sY, + pixelX: pX, + pixelY: pY + }; + } + function handleMouseEnter() { + if (!swiper.enabled) return; + swiper.mouseEntered = true; + } + function handleMouseLeave() { + if (!swiper.enabled) return; + swiper.mouseEntered = false; + } + function animateSlider(newEvent) { + if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) { + // Prevent if delta of wheel scroll delta is below configured threshold + return false; + } + if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) { + // Prevent if time between scrolls is below configured threshold + return false; + } + + // If the movement is NOT big enough and + // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider): + // Don't go any further (avoid insignificant scroll movement). + if (newEvent.delta >= 6 && now() - lastScrollTime < 60) { + // Return false as a default + return true; + } + // If user is scrolling towards the end: + // If the slider hasn't hit the latest slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to next slide and + // emit a scroll event. + // Else (the user is scrolling towards the beginning) and + // if the slider hasn't hit the first slide or + // if the slider is a loop and + // if the slider isn't moving right now: + // Go to prev slide and + // emit a scroll event. + if (newEvent.direction < 0) { + if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) { + swiper.slideNext(); + emit('scroll', newEvent.raw); + } + } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) { + swiper.slidePrev(); + emit('scroll', newEvent.raw); + } + // If you got here is because an animation has been triggered so store the current time + lastScrollTime = new window.Date().getTime(); + // Return false as a default + return false; + } + function releaseScroll(newEvent) { + const params = swiper.params.mousewheel; + if (newEvent.direction < 0) { + if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) { + // Return true to animate scroll on edges + return true; + } + return false; + } + function handle(event) { + let e = event; + let disableParentSwiper = true; + if (!swiper.enabled) return; + + // Ignore event if the target or its parents have the swiper-no-mousewheel class + if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return; + const params = swiper.params.mousewheel; + if (swiper.params.cssMode) { + e.preventDefault(); + } + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + const targetElContainsTarget = targetEl && targetEl.contains(e.target); + if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true; + if (e.originalEvent) e = e.originalEvent; // jquery fix + let delta = 0; + const rtlFactor = swiper.rtlTranslate ? -1 : 1; + const data = normalize(e); + if (params.forceToAxis) { + if (swiper.isHorizontal()) { + if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true; + } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true; + } else { + delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY; + } + if (delta === 0) return true; + if (params.invert) delta = -delta; + + // Get the scroll positions + let positions = swiper.getTranslate() + delta * params.sensitivity; + if (positions >= swiper.minTranslate()) positions = swiper.minTranslate(); + if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate(); + + // When loop is true: + // the disableParentSwiper will be true. + // When loop is false: + // if the scroll positions is not on edge, + // then the disableParentSwiper will be true. + // if the scroll on edge positions, + // then the disableParentSwiper will be false. + disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate()); + if (disableParentSwiper && swiper.params.nested) e.stopPropagation(); + if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) { + // Register the new event in a variable which stores the relevant data + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta), + raw: event + }; + + // Keep the most recent events + if (recentWheelEvents.length >= 2) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + recentWheelEvents.push(newEvent); + + // If there is at least one previous recorded event: + // If direction has changed or + // if the scroll is quicker than the previous one: + // Animate the slider. + // Else (this is the first time the wheel is moved): + // Animate the slider. + if (prevEvent) { + if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) { + animateSlider(newEvent); + } + } else { + animateSlider(newEvent); + } + + // If it's time to release the scroll: + // Return now so you don't hit the preventDefault. + if (releaseScroll(newEvent)) { + return true; + } + } else { + // Freemode or scrollContainer: + + // If we recently snapped after a momentum scroll, then ignore wheel events + // to give time for the deceleration to finish. Stop ignoring after 500 msecs + // or if it's a new scroll (larger delta or inverse sign as last event before + // an end-of-momentum snap). + const newEvent = { + time: now(), + delta: Math.abs(delta), + direction: Math.sign(delta) + }; + const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction; + if (!ignoreWheelEvents) { + lastEventBeforeSnap = undefined; + let position = swiper.getTranslate() + delta * params.sensitivity; + const wasBeginning = swiper.isBeginning; + const wasEnd = swiper.isEnd; + if (position >= swiper.minTranslate()) position = swiper.minTranslate(); + if (position <= swiper.maxTranslate()) position = swiper.maxTranslate(); + swiper.setTransition(0); + swiper.setTranslate(position); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) { + swiper.updateSlidesClasses(); + } + if (swiper.params.loop) { + swiper.loopFix({ + direction: newEvent.direction < 0 ? 'next' : 'prev', + byMousewheel: true + }); + } + if (swiper.params.freeMode.sticky) { + // When wheel scrolling starts with sticky (aka snap) enabled, then detect + // the end of a momentum scroll by storing recent (N=15?) wheel events. + // 1. do all N events have decreasing or same (absolute value) delta? + // 2. did all N events arrive in the last M (M=500?) msecs? + // 3. does the earliest event have an (absolute value) delta that's + // at least P (P=1?) larger than the most recent event's delta? + // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels? + // If 1-4 are "yes" then we're near the end of a momentum scroll deceleration. + // Snap immediately and ignore remaining wheel events in this scroll. + // See comment above for "remaining wheel events in this scroll" determination. + // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event. + clearTimeout(timeout); + timeout = undefined; + if (recentWheelEvents.length >= 15) { + recentWheelEvents.shift(); // only store the last N events + } + + const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined; + const firstEvent = recentWheelEvents[0]; + recentWheelEvents.push(newEvent); + if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) { + // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log. + recentWheelEvents.splice(0); + } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) { + // We're at the end of the deceleration of a momentum scroll, so there's no need + // to wait for more events. Snap ASAP on the next tick. + // Also, because there's some remaining momentum we'll bias the snap in the + // direction of the ongoing scroll because it's better UX for the scroll to snap + // in the same direction as the scroll instead of reversing to snap. Therefore, + // if it's already scrolled more than 20% in the current direction, keep going. + const snapToThreshold = delta > 0 ? 0.8 : 0.2; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + timeout = nextTick(() => { + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 0); // no delay; move on next tick + } + + if (!timeout) { + // if we get here, then we haven't detected the end of a momentum scroll, so + // we'll consider a scroll "complete" when there haven't been any wheel events + // for 500ms. + timeout = nextTick(() => { + const snapToThreshold = 0.5; + lastEventBeforeSnap = newEvent; + recentWheelEvents.splice(0); + swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold); + }, 500); + } + } + + // Emit event + if (!ignoreWheelEvents) emit('scroll', e); + + // Stop autoplay + if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop(); + // Return page scroll on edge positions + if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) { + return true; + } + } + } + if (e.preventDefault) e.preventDefault();else e.returnValue = false; + return false; + } + function events(method) { + let targetEl = swiper.el; + if (swiper.params.mousewheel.eventsTarget !== 'container') { + targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget); + } + targetEl[method]('mouseenter', handleMouseEnter); + targetEl[method]('mouseleave', handleMouseLeave); + targetEl[method]('wheel', handle); + } + function enable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.removeEventListener('wheel', handle); + return true; + } + if (swiper.mousewheel.enabled) return false; + events('addEventListener'); + swiper.mousewheel.enabled = true; + return true; + } + function disable() { + if (swiper.params.cssMode) { + swiper.wrapperEl.addEventListener(event, handle); + return true; + } + if (!swiper.mousewheel.enabled) return false; + events('removeEventListener'); + swiper.mousewheel.enabled = false; + return true; + } + on('init', () => { + if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) { + disable(); + } + if (swiper.params.mousewheel.enabled) enable(); + }); + on('destroy', () => { + if (swiper.params.cssMode) { + enable(); + } + if (swiper.mousewheel.enabled) disable(); + }); + Object.assign(swiper.mousewheel, { + enable, + disable + }); + } + + function createElementIfNotDefined(swiper, originalParams, params, checkProps) { + if (swiper.params.createElements) { + Object.keys(checkProps).forEach(key => { + if (!params[key] && params.auto === true) { + let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0]; + if (!element) { + element = createElement('div', checkProps[key]); + element.className = checkProps[key]; + swiper.el.append(element); + } + params[key] = element; + originalParams[key] = element; + } + }); + } + return params; + } + + function Navigation(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + extendParams({ + navigation: { + nextEl: null, + prevEl: null, + hideOnClick: false, + disabledClass: 'swiper-button-disabled', + hiddenClass: 'swiper-button-hidden', + lockClass: 'swiper-button-lock', + navigationDisabledClass: 'swiper-navigation-disabled' + } + }); + swiper.navigation = { + nextEl: null, + prevEl: null + }; + function getEl(el) { + let res; + if (el && typeof el === 'string' && swiper.isElement) { + res = swiper.el.querySelector(el); + if (res) return res; + } + if (el) { + if (typeof el === 'string') res = [...document.querySelectorAll(el)]; + if (swiper.params.uniqueNavElements && typeof el === 'string' && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) { + res = swiper.el.querySelector(el); + } else if (res && res.length === 1) { + res = res[0]; + } + } + if (el && !res) return el; + // if (Array.isArray(res) && res.length === 1) res = res[0]; + return res; + } + function toggleEl(el, disabled) { + const params = swiper.params.navigation; + el = makeElementsArray(el); + el.forEach(subEl => { + if (subEl) { + subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' ')); + if (subEl.tagName === 'BUTTON') subEl.disabled = disabled; + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + } + }); + } + function update() { + // Update Navigation Buttons + const { + nextEl, + prevEl + } = swiper.navigation; + if (swiper.params.loop) { + toggleEl(prevEl, false); + toggleEl(nextEl, false); + return; + } + toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind); + toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind); + } + function onPrevClick(e) { + e.preventDefault(); + if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slidePrev(); + emit('navigationPrev'); + } + function onNextClick(e) { + e.preventDefault(); + if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return; + swiper.slideNext(); + emit('navigationNext'); + } + function init() { + const params = swiper.params.navigation; + swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, { + nextEl: 'swiper-button-next', + prevEl: 'swiper-button-prev' + }); + if (!(params.nextEl || params.prevEl)) return; + let nextEl = getEl(params.nextEl); + let prevEl = getEl(params.prevEl); + Object.assign(swiper.navigation, { + nextEl, + prevEl + }); + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const initButton = (el, dir) => { + if (el) { + el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + } + if (!swiper.enabled && el) { + el.classList.add(...params.lockClass.split(' ')); + } + }; + nextEl.forEach(el => initButton(el, 'next')); + prevEl.forEach(el => initButton(el, 'prev')); + } + function destroy() { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const destroyButton = (el, dir) => { + el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick); + el.classList.remove(...swiper.params.navigation.disabledClass.split(' ')); + }; + nextEl.forEach(el => destroyButton(el, 'next')); + prevEl.forEach(el => destroyButton(el, 'prev')); + } + on('init', () => { + if (swiper.params.navigation.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + update(); + } + }); + on('toEdge fromEdge lock unlock', () => { + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (swiper.enabled) { + update(); + return; + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.add(swiper.params.navigation.lockClass)); + }); + on('click', (_s, e) => { + let { + nextEl, + prevEl + } = swiper.navigation; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + const targetEl = e.target; + let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl); + if (swiper.isElement && !targetIsButton) { + const path = e.path || e.composedPath && e.composedPath(); + if (path) { + targetIsButton = path.find(pathEl => nextEl.includes(pathEl) || prevEl.includes(pathEl)); + } + } + if (swiper.params.navigation.hideOnClick && !targetIsButton) { + if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return; + let isHidden; + if (nextEl.length) { + isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } else if (prevEl.length) { + isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass); + } + if (isHidden === true) { + emit('navigationShow'); + } else { + emit('navigationHide'); + } + [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' ')); + init(); + update(); + }; + const disable = () => { + swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' ')); + destroy(); + }; + Object.assign(swiper.navigation, { + enable, + disable, + update, + init, + destroy + }); + } + + function classesToSelector(classes) { + if (classes === void 0) { + classes = ''; + } + return `.${classes.trim().replace(/([\.:!+\/])/g, '\\$1') // eslint-disable-line + .replace(/ /g, '.')}`; + } + + function Pagination(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const pfx = 'swiper-pagination'; + extendParams({ + pagination: { + el: null, + bulletElement: 'span', + clickable: false, + hideOnClick: false, + renderBullet: null, + renderProgressbar: null, + renderFraction: null, + renderCustom: null, + progressbarOpposite: false, + type: 'bullets', + // 'bullets' or 'progressbar' or 'fraction' or 'custom' + dynamicBullets: false, + dynamicMainBullets: 1, + formatFractionCurrent: number => number, + formatFractionTotal: number => number, + bulletClass: `${pfx}-bullet`, + bulletActiveClass: `${pfx}-bullet-active`, + modifierClass: `${pfx}-`, + currentClass: `${pfx}-current`, + totalClass: `${pfx}-total`, + hiddenClass: `${pfx}-hidden`, + progressbarFillClass: `${pfx}-progressbar-fill`, + progressbarOppositeClass: `${pfx}-progressbar-opposite`, + clickableClass: `${pfx}-clickable`, + lockClass: `${pfx}-lock`, + horizontalClass: `${pfx}-horizontal`, + verticalClass: `${pfx}-vertical`, + paginationDisabledClass: `${pfx}-disabled` + } + }); + swiper.pagination = { + el: null, + bullets: [] + }; + let bulletSize; + let dynamicBulletIndex = 0; + function isPaginationDisabled() { + return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0; + } + function setSideBullets(bulletEl, position) { + const { + bulletActiveClass + } = swiper.params.pagination; + if (!bulletEl) return; + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}`); + bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`]; + if (bulletEl) { + bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`); + } + } + } + function onBulletClick(e) { + const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass)); + if (!bulletEl) { + return; + } + e.preventDefault(); + const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup; + if (swiper.params.loop) { + if (swiper.realIndex === index) return; + swiper.slideToLoop(index); + } else { + swiper.slideTo(index); + } + } + function update() { + // Render || Update Pagination bullets/items + const rtl = swiper.rtl; + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + el = makeElementsArray(el); + // Current/Total + let current; + let previousIndex; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length; + const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.loop) { + previousIndex = swiper.previousRealIndex || 0; + current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex; + } else if (typeof swiper.snapIndex !== 'undefined') { + current = swiper.snapIndex; + previousIndex = swiper.previousSnapIndex; + } else { + previousIndex = swiper.previousIndex || 0; + current = swiper.activeIndex || 0; + } + // Types + if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) { + const bullets = swiper.pagination.bullets; + let firstIndex; + let lastIndex; + let midIndex; + if (params.dynamicBullets) { + bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true); + el.forEach(subEl => { + subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`; + }); + if (params.dynamicMainBullets > 1 && previousIndex !== undefined) { + dynamicBulletIndex += current - (previousIndex || 0); + if (dynamicBulletIndex > params.dynamicMainBullets - 1) { + dynamicBulletIndex = params.dynamicMainBullets - 1; + } else if (dynamicBulletIndex < 0) { + dynamicBulletIndex = 0; + } + } + firstIndex = Math.max(current - dynamicBulletIndex, 0); + lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1); + midIndex = (lastIndex + firstIndex) / 2; + } + bullets.forEach(bulletEl => { + const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat(); + bulletEl.classList.remove(...classesToRemove); + }); + if (el.length > 1) { + bullets.forEach(bullet => { + const bulletIndex = elementIndex(bullet); + if (bulletIndex === current) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } else if (swiper.isElement) { + bullet.setAttribute('part', 'bullet'); + } + if (params.dynamicBullets) { + if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) { + bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + if (bulletIndex === firstIndex) { + setSideBullets(bullet, 'prev'); + } + if (bulletIndex === lastIndex) { + setSideBullets(bullet, 'next'); + } + } + }); + } else { + const bullet = bullets[current]; + if (bullet) { + bullet.classList.add(...params.bulletActiveClass.split(' ')); + } + if (swiper.isElement) { + bullets.forEach((bulletEl, bulletIndex) => { + bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet'); + }); + } + if (params.dynamicBullets) { + const firstDisplayedBullet = bullets[firstIndex]; + const lastDisplayedBullet = bullets[lastIndex]; + for (let i = firstIndex; i <= lastIndex; i += 1) { + if (bullets[i]) { + bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' ')); + } + } + setSideBullets(firstDisplayedBullet, 'prev'); + setSideBullets(lastDisplayedBullet, 'next'); + } + } + if (params.dynamicBullets) { + const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4); + const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize; + const offsetProp = rtl ? 'right' : 'left'; + bullets.forEach(bullet => { + bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`; + }); + } + } + el.forEach((subEl, subElIndex) => { + if (params.type === 'fraction') { + subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => { + fractionEl.textContent = params.formatFractionCurrent(current + 1); + }); + subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => { + totalEl.textContent = params.formatFractionTotal(total); + }); + } + if (params.type === 'progressbar') { + let progressbarDirection; + if (params.progressbarOpposite) { + progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal'; + } else { + progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical'; + } + const scale = (current + 1) / total; + let scaleX = 1; + let scaleY = 1; + if (progressbarDirection === 'horizontal') { + scaleX = scale; + } else { + scaleY = scale; + } + subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => { + progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`; + progressEl.style.transitionDuration = `${swiper.params.speed}ms`; + }); + } + if (params.type === 'custom' && params.renderCustom) { + subEl.innerHTML = params.renderCustom(swiper, current + 1, total); + if (subElIndex === 0) emit('paginationRender', subEl); + } else { + if (subElIndex === 0) emit('paginationRender', subEl); + emit('paginationUpdate', subEl); + } + if (swiper.params.watchOverflow && swiper.enabled) { + subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass); + } + }); + } + function render() { + // Render Container + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.grid && swiper.params.grid.rows > 1 ? swiper.slides.length / Math.ceil(swiper.params.grid.rows) : swiper.slides.length; + let el = swiper.pagination.el; + el = makeElementsArray(el); + let paginationHTML = ''; + if (params.type === 'bullets') { + let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length; + if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) { + numberOfBullets = slidesLength; + } + for (let i = 0; i < numberOfBullets; i += 1) { + if (params.renderBullet) { + paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass); + } else { + // prettier-ignore + paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part="bullet"' : ''} class="${params.bulletClass}">`; + } + } + } + if (params.type === 'fraction') { + if (params.renderFraction) { + paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass); + } else { + paginationHTML = `` + ' / ' + ``; + } + } + if (params.type === 'progressbar') { + if (params.renderProgressbar) { + paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass); + } else { + paginationHTML = ``; + } + } + swiper.pagination.bullets = []; + el.forEach(subEl => { + if (params.type !== 'custom') { + subEl.innerHTML = paginationHTML || ''; + } + if (params.type === 'bullets') { + swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass))); + } + }); + if (params.type !== 'custom') { + emit('paginationRender', el[0]); + } + } + function init() { + swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, { + el: 'swiper-pagination' + }); + const params = swiper.params.pagination; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = [...document.querySelectorAll(params.el)]; + } + if (!el) { + el = params.el; + } + if (!el || el.length === 0) return; + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) { + el = [...swiper.el.querySelectorAll(params.el)]; + // check if it belongs to another nested Swiper + if (el.length > 1) { + el = el.filter(subEl => { + if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false; + return true; + })[0]; + } + } + if (Array.isArray(el) && el.length === 1) el = el[0]; + Object.assign(swiper.pagination, { + el + }); + el = makeElementsArray(el); + el.forEach(subEl => { + if (params.type === 'bullets' && params.clickable) { + subEl.classList.add(...(params.clickableClass || '').split(' ')); + } + subEl.classList.add(params.modifierClass + params.type); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.type === 'bullets' && params.dynamicBullets) { + subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`); + dynamicBulletIndex = 0; + if (params.dynamicMainBullets < 1) { + params.dynamicMainBullets = 1; + } + } + if (params.type === 'progressbar' && params.progressbarOpposite) { + subEl.classList.add(params.progressbarOppositeClass); + } + if (params.clickable) { + subEl.addEventListener('click', onBulletClick); + } + if (!swiper.enabled) { + subEl.classList.add(params.lockClass); + } + }); + } + function destroy() { + const params = swiper.params.pagination; + if (isPaginationDisabled()) return; + let el = swiper.pagination.el; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.hiddenClass); + subEl.classList.remove(params.modifierClass + params.type); + subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + if (params.clickable) { + subEl.classList.remove(...(params.clickableClass || '').split(' ')); + subEl.removeEventListener('click', onBulletClick); + } + }); + } + if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' '))); + } + on('changeDirection', () => { + if (!swiper.pagination || !swiper.pagination.el) return; + const params = swiper.params.pagination; + let { + el + } = swiper.pagination; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.pagination.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + render(); + update(); + } + }); + on('activeIndexChange', () => { + if (typeof swiper.snapIndex === 'undefined') { + update(); + } + }); + on('snapIndexChange', () => { + update(); + }); + on('snapGridLengthChange', () => { + render(); + update(); + }); + on('destroy', () => { + destroy(); + }); + on('enable disable', () => { + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass)); + } + }); + on('lock unlock', () => { + update(); + }); + on('click', (_s, e) => { + const targetEl = e.target; + const el = makeElementsArray(swiper.pagination.el); + if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) { + if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return; + const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass); + if (isHidden === true) { + emit('paginationShow'); + } else { + emit('paginationHide'); + } + el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass)); + } + }); + const enable = () => { + swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass)); + } + init(); + render(); + update(); + }; + const disable = () => { + swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass); + let { + el + } = swiper.pagination; + if (el) { + el = makeElementsArray(el); + el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.pagination, { + enable, + disable, + render, + update, + init, + destroy + }); + } + + function Scrollbar(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const document = getDocument(); + let isTouched = false; + let timeout = null; + let dragTimeout = null; + let dragStartPos; + let dragSize; + let trackSize; + let divider; + extendParams({ + scrollbar: { + el: null, + dragSize: 'auto', + hide: false, + draggable: false, + snapOnRelease: true, + lockClass: 'swiper-scrollbar-lock', + dragClass: 'swiper-scrollbar-drag', + scrollbarDisabledClass: 'swiper-scrollbar-disabled', + horizontalClass: `swiper-scrollbar-horizontal`, + verticalClass: `swiper-scrollbar-vertical` + } + }); + swiper.scrollbar = { + el: null, + dragEl: null + }; + function setTranslate() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + dragEl, + el + } = scrollbar; + const params = swiper.params.scrollbar; + const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress; + let newSize = dragSize; + let newPos = (trackSize - dragSize) * progress; + if (rtl) { + newPos = -newPos; + if (newPos > 0) { + newSize = dragSize - newPos; + newPos = 0; + } else if (-newPos + dragSize > trackSize) { + newSize = trackSize + newPos; + } + } else if (newPos < 0) { + newSize = dragSize + newPos; + newPos = 0; + } else if (newPos + dragSize > trackSize) { + newSize = trackSize - newPos; + } + if (swiper.isHorizontal()) { + dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`; + dragEl.style.width = `${newSize}px`; + } else { + dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`; + dragEl.style.height = `${newSize}px`; + } + if (params.hide) { + clearTimeout(timeout); + el.style.opacity = 1; + timeout = setTimeout(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + } + function setTransition(duration) { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`; + } + function updateSize() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + const { + scrollbar + } = swiper; + const { + dragEl, + el + } = scrollbar; + dragEl.style.width = ''; + dragEl.style.height = ''; + trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight; + divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0)); + if (swiper.params.scrollbar.dragSize === 'auto') { + dragSize = trackSize * divider; + } else { + dragSize = parseInt(swiper.params.scrollbar.dragSize, 10); + } + if (swiper.isHorizontal()) { + dragEl.style.width = `${dragSize}px`; + } else { + dragEl.style.height = `${dragSize}px`; + } + if (divider >= 1) { + el.style.display = 'none'; + } else { + el.style.display = ''; + } + if (swiper.params.scrollbar.hide) { + el.style.opacity = 0; + } + if (swiper.params.watchOverflow && swiper.enabled) { + scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass); + } + } + function getPointerPosition(e) { + return swiper.isHorizontal() ? e.clientX : e.clientY; + } + function setDragPosition(e) { + const { + scrollbar, + rtlTranslate: rtl + } = swiper; + const { + el + } = scrollbar; + let positionRatio; + positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize); + positionRatio = Math.max(Math.min(positionRatio, 1), 0); + if (rtl) { + positionRatio = 1 - positionRatio; + } + const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio; + swiper.updateProgress(position); + swiper.setTranslate(position); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + function onDragStart(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + isTouched = true; + dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null; + e.preventDefault(); + e.stopPropagation(); + wrapperEl.style.transitionDuration = '100ms'; + dragEl.style.transitionDuration = '100ms'; + setDragPosition(e); + clearTimeout(dragTimeout); + el.style.transitionDuration = '0ms'; + if (params.hide) { + el.style.opacity = 1; + } + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = 'none'; + } + emit('scrollbarDragStart', e); + } + function onDragMove(e) { + const { + scrollbar, + wrapperEl + } = swiper; + const { + el, + dragEl + } = scrollbar; + if (!isTouched) return; + if (e.preventDefault && e.cancelable) e.preventDefault();else e.returnValue = false; + setDragPosition(e); + wrapperEl.style.transitionDuration = '0ms'; + el.style.transitionDuration = '0ms'; + dragEl.style.transitionDuration = '0ms'; + emit('scrollbarDragMove', e); + } + function onDragEnd(e) { + const params = swiper.params.scrollbar; + const { + scrollbar, + wrapperEl + } = swiper; + const { + el + } = scrollbar; + if (!isTouched) return; + isTouched = false; + if (swiper.params.cssMode) { + swiper.wrapperEl.style['scroll-snap-type'] = ''; + wrapperEl.style.transitionDuration = ''; + } + if (params.hide) { + clearTimeout(dragTimeout); + dragTimeout = nextTick(() => { + el.style.opacity = 0; + el.style.transitionDuration = '400ms'; + }, 1000); + } + emit('scrollbarDragEnd', e); + if (params.snapOnRelease) { + swiper.slideToClosest(); + } + } + function events(method) { + const { + scrollbar, + params + } = swiper; + const el = scrollbar.el; + if (!el) return; + const target = el; + const activeListener = params.passiveListeners ? { + passive: false, + capture: false + } : false; + const passiveListener = params.passiveListeners ? { + passive: true, + capture: false + } : false; + if (!target) return; + const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + target[eventMethod]('pointerdown', onDragStart, activeListener); + document[eventMethod]('pointermove', onDragMove, activeListener); + document[eventMethod]('pointerup', onDragEnd, passiveListener); + } + function enableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('on'); + } + function disableDraggable() { + if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return; + events('off'); + } + function init() { + const { + scrollbar, + el: swiperEl + } = swiper; + swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, { + el: 'swiper-scrollbar' + }); + const params = swiper.params.scrollbar; + if (!params.el) return; + let el; + if (typeof params.el === 'string' && swiper.isElement) { + el = swiper.el.querySelector(params.el); + } + if (!el && typeof params.el === 'string') { + el = document.querySelectorAll(params.el); + if (!el.length) return; + } else if (!el) { + el = params.el; + } + if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) { + el = swiperEl.querySelector(params.el); + } + if (el.length > 0) el = el[0]; + el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + let dragEl; + if (el) { + dragEl = el.querySelector(classesToSelector(swiper.params.scrollbar.dragClass)); + if (!dragEl) { + dragEl = createElement('div', swiper.params.scrollbar.dragClass); + el.append(dragEl); + } + } + Object.assign(scrollbar, { + el, + dragEl + }); + if (params.draggable) { + enableDraggable(); + } + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + } + function destroy() { + const params = swiper.params.scrollbar; + const el = swiper.scrollbar.el; + if (el) { + el.classList.remove(...classesToTokens(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass)); + } + disableDraggable(); + } + on('changeDirection', () => { + if (!swiper.scrollbar || !swiper.scrollbar.el) return; + const params = swiper.params.scrollbar; + let { + el + } = swiper.scrollbar; + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.classList.remove(params.horizontalClass, params.verticalClass); + subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass); + }); + }); + on('init', () => { + if (swiper.params.scrollbar.enabled === false) { + // eslint-disable-next-line + disable(); + } else { + init(); + updateSize(); + setTranslate(); + } + }); + on('update resize observerUpdate lock unlock changeDirection', () => { + updateSize(); + }); + on('setTranslate', () => { + setTranslate(); + }); + on('setTransition', (_s, duration) => { + setTransition(duration); + }); + on('enable disable', () => { + const { + el + } = swiper.scrollbar; + if (el) { + el.classList[swiper.enabled ? 'remove' : 'add'](...classesToTokens(swiper.params.scrollbar.lockClass)); + } + }); + on('destroy', () => { + destroy(); + }); + const enable = () => { + swiper.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.remove(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + init(); + updateSize(); + setTranslate(); + }; + const disable = () => { + swiper.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + if (swiper.scrollbar.el) { + swiper.scrollbar.el.classList.add(...classesToTokens(swiper.params.scrollbar.scrollbarDisabledClass)); + } + destroy(); + }; + Object.assign(swiper.scrollbar, { + enable, + disable, + updateSize, + setTranslate, + init, + destroy + }); + } + + function Parallax(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + parallax: { + enabled: false + } + }); + const elementsSelector = '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]'; + const setTransform = (el, progress) => { + const { + rtl + } = swiper; + const rtlFactor = rtl ? -1 : 1; + const p = el.getAttribute('data-swiper-parallax') || '0'; + let x = el.getAttribute('data-swiper-parallax-x'); + let y = el.getAttribute('data-swiper-parallax-y'); + const scale = el.getAttribute('data-swiper-parallax-scale'); + const opacity = el.getAttribute('data-swiper-parallax-opacity'); + const rotate = el.getAttribute('data-swiper-parallax-rotate'); + if (x || y) { + x = x || '0'; + y = y || '0'; + } else if (swiper.isHorizontal()) { + x = p; + y = '0'; + } else { + y = p; + x = '0'; + } + if (x.indexOf('%') >= 0) { + x = `${parseInt(x, 10) * progress * rtlFactor}%`; + } else { + x = `${x * progress * rtlFactor}px`; + } + if (y.indexOf('%') >= 0) { + y = `${parseInt(y, 10) * progress}%`; + } else { + y = `${y * progress}px`; + } + if (typeof opacity !== 'undefined' && opacity !== null) { + const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress)); + el.style.opacity = currentOpacity; + } + let transform = `translate3d(${x}, ${y}, 0px)`; + if (typeof scale !== 'undefined' && scale !== null) { + const currentScale = scale - (scale - 1) * (1 - Math.abs(progress)); + transform += ` scale(${currentScale})`; + } + if (rotate && typeof rotate !== 'undefined' && rotate !== null) { + const currentRotate = rotate * progress * -1; + transform += ` rotate(${currentRotate}deg)`; + } + el.style.transform = transform; + }; + const setTranslate = () => { + const { + el, + slides, + progress, + snapGrid, + isElement + } = swiper; + const elements = elementChildren(el, elementsSelector); + if (swiper.isElement) { + elements.push(...elementChildren(swiper.hostEl, elementsSelector)); + } + elements.forEach(subEl => { + setTransform(subEl, progress); + }); + slides.forEach((slideEl, slideIndex) => { + let slideProgress = slideEl.progress; + if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') { + slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1); + } + slideProgress = Math.min(Math.max(slideProgress, -1), 1); + slideEl.querySelectorAll(`${elementsSelector}, [data-swiper-parallax-rotate]`).forEach(subEl => { + setTransform(subEl, slideProgress); + }); + }); + }; + const setTransition = function (duration) { + if (duration === void 0) { + duration = swiper.params.speed; + } + const { + el, + hostEl + } = swiper; + const elements = [...el.querySelectorAll(elementsSelector)]; + if (swiper.isElement) { + elements.push(...hostEl.querySelectorAll(elementsSelector)); + } + elements.forEach(parallaxEl => { + let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration; + if (duration === 0) parallaxDuration = 0; + parallaxEl.style.transitionDuration = `${parallaxDuration}ms`; + }); + }; + on('beforeInit', () => { + if (!swiper.params.parallax.enabled) return; + swiper.params.watchSlidesProgress = true; + swiper.originalParams.watchSlidesProgress = true; + }); + on('init', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTranslate', () => { + if (!swiper.params.parallax.enabled) return; + setTranslate(); + }); + on('setTransition', (_swiper, duration) => { + if (!swiper.params.parallax.enabled) return; + setTransition(duration); + }); + } + + function Zoom(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const window = getWindow(); + extendParams({ + zoom: { + enabled: false, + limitToOriginalSize: false, + maxRatio: 3, + minRatio: 1, + toggle: true, + containerClass: 'swiper-zoom-container', + zoomedSlideClass: 'swiper-slide-zoomed' + } + }); + swiper.zoom = { + enabled: false + }; + let currentScale = 1; + let isScaling = false; + let fakeGestureTouched; + let fakeGestureMoved; + const evCache = []; + const gesture = { + originX: 0, + originY: 0, + slideEl: undefined, + slideWidth: undefined, + slideHeight: undefined, + imageEl: undefined, + imageWrapEl: undefined, + maxRatio: 3 + }; + const image = { + isTouched: undefined, + isMoved: undefined, + currentX: undefined, + currentY: undefined, + minX: undefined, + minY: undefined, + maxX: undefined, + maxY: undefined, + width: undefined, + height: undefined, + startX: undefined, + startY: undefined, + touchesStart: {}, + touchesCurrent: {} + }; + const velocity = { + x: undefined, + y: undefined, + prevPositionX: undefined, + prevPositionY: undefined, + prevTime: undefined + }; + let scale = 1; + Object.defineProperty(swiper.zoom, 'scale', { + get() { + return scale; + }, + set(value) { + if (scale !== value) { + const imageEl = gesture.imageEl; + const slideEl = gesture.slideEl; + emit('zoomChange', value, imageEl, slideEl); + } + scale = value; + } + }); + function getDistanceBetweenTouches() { + if (evCache.length < 2) return 1; + const x1 = evCache[0].pageX; + const y1 = evCache[0].pageY; + const x2 = evCache[1].pageX; + const y2 = evCache[1].pageY; + const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2); + return distance; + } + function getMaxRatio() { + const params = swiper.params.zoom; + const maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio; + if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) { + const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth; + return Math.min(imageMaxRatio, maxRatio); + } + return maxRatio; + } + function getScaleOrigin() { + if (evCache.length < 2) return { + x: null, + y: null + }; + const box = gesture.imageEl.getBoundingClientRect(); + return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window.scrollY) / currentScale]; + } + function getSlideSelector() { + return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + } + function eventWithinSlide(e) { + const slideSelector = getSlideSelector(); + if (e.target.matches(slideSelector)) return true; + if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true; + return false; + } + function eventWithinZoomContainer(e) { + const selector = `.${swiper.params.zoom.containerClass}`; + if (e.target.matches(selector)) return true; + if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true; + return false; + } + + // Events + function onGestureStart(e) { + if (e.pointerType === 'mouse') { + evCache.splice(0, evCache.length); + } + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + fakeGestureTouched = false; + fakeGestureMoved = false; + evCache.push(e); + if (evCache.length < 2) { + return; + } + fakeGestureTouched = true; + gesture.scaleStart = getDistanceBetweenTouches(); + if (!gesture.slideEl) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex]; + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + if (!gesture.imageWrapEl) { + gesture.imageEl = undefined; + return; + } + gesture.maxRatio = getMaxRatio(); + } + if (gesture.imageEl) { + const [originX, originY] = getScaleOrigin(); + gesture.originX = originX; + gesture.originY = originY; + gesture.imageEl.style.transitionDuration = '0ms'; + } + isScaling = true; + } + function onGestureChange(e) { + if (!eventWithinSlide(e)) return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache[pointerIndex] = e; + if (evCache.length < 2) { + return; + } + fakeGestureMoved = true; + gesture.scaleMove = getDistanceBetweenTouches(); + if (!gesture.imageEl) { + return; + } + zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale; + if (zoom.scale > gesture.maxRatio) { + zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5; + } + if (zoom.scale < params.minRatio) { + zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5; + } + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function onGestureEnd(e) { + if (!eventWithinSlide(e)) return; + if (e.pointerType === 'mouse' && e.type === 'pointerout') return; + const params = swiper.params.zoom; + const zoom = swiper.zoom; + const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId); + if (pointerIndex >= 0) evCache.splice(pointerIndex, 1); + if (!fakeGestureTouched || !fakeGestureMoved) { + return; + } + fakeGestureTouched = false; + fakeGestureMoved = false; + if (!gesture.imageEl) return; + zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio); + gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + currentScale = zoom.scale; + isScaling = false; + if (zoom.scale > 1 && gesture.slideEl) { + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + } else if (zoom.scale <= 1 && gesture.slideEl) { + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + } + if (zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + gesture.slideEl = undefined; + } + } + let allowTouchMoveTimeout; + function allowTouchMove() { + swiper.touchEventsData.preventTouchMoveFromPointerMove = false; + } + function preventTouchMove() { + clearTimeout(allowTouchMoveTimeout); + swiper.touchEventsData.preventTouchMoveFromPointerMove = true; + allowTouchMoveTimeout = setTimeout(() => { + allowTouchMove(); + }); + } + function onTouchStart(e) { + const device = swiper.device; + if (!gesture.imageEl) return; + if (image.isTouched) return; + if (device.android && e.cancelable) e.preventDefault(); + image.isTouched = true; + const event = evCache.length > 0 ? evCache[0] : e; + image.touchesStart.x = event.pageX; + image.touchesStart.y = event.pageY; + } + function onTouchMove(e) { + if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) { + return; + } + const zoom = swiper.zoom; + if (!gesture.imageEl) { + return; + } + if (!image.isTouched || !gesture.slideEl) { + return; + } + if (!image.isMoved) { + image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0; + image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0; + gesture.slideWidth = gesture.slideEl.offsetWidth; + gesture.slideHeight = gesture.slideEl.offsetHeight; + gesture.imageWrapEl.style.transitionDuration = '0ms'; + } + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX; + image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY; + const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y)); + if (touchesDiff > 5) { + swiper.allowClick = false; + } + if (!image.isMoved && !isScaling) { + if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) { + image.isTouched = false; + allowTouchMove(); + return; + } + if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) { + image.isTouched = false; + allowTouchMove(); + return; + } + } + if (e.cancelable) { + e.preventDefault(); + } + e.stopPropagation(); + preventTouchMove(); + image.isMoved = true; + const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio); + const { + originX, + originY + } = gesture; + image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2); + image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2); + if (image.currentX < image.minX) { + image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8; + } + if (image.currentX > image.maxX) { + image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8; + } + if (image.currentY < image.minY) { + image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8; + } + if (image.currentY > image.maxY) { + image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8; + } + + // Velocity + if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x; + if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y; + if (!velocity.prevTime) velocity.prevTime = Date.now(); + velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2; + velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2; + if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0; + if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0; + velocity.prevPositionX = image.touchesCurrent.x; + velocity.prevPositionY = image.touchesCurrent.y; + velocity.prevTime = Date.now(); + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTouchEnd() { + const zoom = swiper.zoom; + if (!gesture.imageEl) return; + if (!image.isTouched || !image.isMoved) { + image.isTouched = false; + image.isMoved = false; + return; + } + image.isTouched = false; + image.isMoved = false; + let momentumDurationX = 300; + let momentumDurationY = 300; + const momentumDistanceX = velocity.x * momentumDurationX; + const newPositionX = image.currentX + momentumDistanceX; + const momentumDistanceY = velocity.y * momentumDurationY; + const newPositionY = image.currentY + momentumDistanceY; + + // Fix duration + if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x); + if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y); + const momentumDuration = Math.max(momentumDurationX, momentumDurationY); + image.currentX = newPositionX; + image.currentY = newPositionY; + // Define if we need image drag + const scaledWidth = image.width * zoom.scale; + const scaledHeight = image.height * zoom.scale; + image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0); + image.maxX = -image.minX; + image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0); + image.maxY = -image.minY; + image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX); + image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY); + gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`; + gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`; + } + function onTransitionEnd() { + const zoom = swiper.zoom; + if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) { + if (gesture.imageEl) { + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + } + if (gesture.imageWrapEl) { + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + } + gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`); + zoom.scale = 1; + currentScale = 1; + gesture.slideEl = undefined; + gesture.imageEl = undefined; + gesture.imageWrapEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + } + function zoomIn(e) { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (e && e.target) { + gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + } + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.touchAction = 'none'; + } + gesture.slideEl.classList.add(`${params.zoomedSlideClass}`); + let touchX; + let touchY; + let offsetX; + let offsetY; + let diffX; + let diffY; + let translateX; + let translateY; + let imageWidth; + let imageHeight; + let scaledWidth; + let scaledHeight; + let translateMinX; + let translateMinY; + let translateMaxX; + let translateMaxY; + let slideWidth; + let slideHeight; + if (typeof image.touchesStart.x === 'undefined' && e) { + touchX = e.pageX; + touchY = e.pageY; + } else { + touchX = image.touchesStart.x; + touchY = image.touchesStart.y; + } + const forceZoomRatio = typeof e === 'number' ? e : null; + if (currentScale === 1 && forceZoomRatio) { + touchX = undefined; + touchY = undefined; + } + const maxRatio = getMaxRatio(); + zoom.scale = forceZoomRatio || maxRatio; + currentScale = forceZoomRatio || maxRatio; + if (e && !(currentScale === 1 && forceZoomRatio)) { + slideWidth = gesture.slideEl.offsetWidth; + slideHeight = gesture.slideEl.offsetHeight; + offsetX = elementOffset(gesture.slideEl).left + window.scrollX; + offsetY = elementOffset(gesture.slideEl).top + window.scrollY; + diffX = offsetX + slideWidth / 2 - touchX; + diffY = offsetY + slideHeight / 2 - touchY; + imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth; + imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight; + scaledWidth = imageWidth * zoom.scale; + scaledHeight = imageHeight * zoom.scale; + translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0); + translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0); + translateMaxX = -translateMinX; + translateMaxY = -translateMinY; + translateX = diffX * zoom.scale; + translateY = diffY * zoom.scale; + if (translateX < translateMinX) { + translateX = translateMinX; + } + if (translateX > translateMaxX) { + translateX = translateMaxX; + } + if (translateY < translateMinY) { + translateY = translateMinY; + } + if (translateY > translateMaxY) { + translateY = translateMaxY; + } + } else { + translateX = 0; + translateY = 0; + } + if (forceZoomRatio && zoom.scale === 1) { + gesture.originX = 0; + gesture.originY = 0; + } + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`; + } + function zoomOut() { + const zoom = swiper.zoom; + const params = swiper.params.zoom; + if (!gesture.slideEl) { + if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) { + gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0]; + } else { + gesture.slideEl = swiper.slides[swiper.activeIndex]; + } + let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`); + if (imageEl) { + imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0]; + } + gesture.imageEl = imageEl; + if (imageEl) { + gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0]; + } else { + gesture.imageWrapEl = undefined; + } + } + if (!gesture.imageEl || !gesture.imageWrapEl) return; + if (swiper.params.cssMode) { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.style.touchAction = ''; + } + zoom.scale = 1; + currentScale = 1; + gesture.imageWrapEl.style.transitionDuration = '300ms'; + gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)'; + gesture.imageEl.style.transitionDuration = '300ms'; + gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)'; + gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`); + gesture.slideEl = undefined; + gesture.originX = 0; + gesture.originY = 0; + } + + // Toggle Zoom + function zoomToggle(e) { + const zoom = swiper.zoom; + if (zoom.scale && zoom.scale !== 1) { + // Zoom Out + zoomOut(); + } else { + // Zoom In + zoomIn(e); + } + } + function getListeners() { + const passiveListener = swiper.params.passiveListeners ? { + passive: true, + capture: false + } : false; + const activeListenerWithCapture = swiper.params.passiveListeners ? { + passive: false, + capture: true + } : true; + return { + passiveListener, + activeListenerWithCapture + }; + } + + // Attach/Detach Events + function enable() { + const zoom = swiper.zoom; + if (zoom.enabled) return; + zoom.enabled = true; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + function disable() { + const zoom = swiper.zoom; + if (!zoom.enabled) return; + zoom.enabled = false; + const { + passiveListener, + activeListenerWithCapture + } = getListeners(); + + // Scale image + swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener); + swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture); + ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => { + swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener); + }); + + // Move image + swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture); + } + on('init', () => { + if (swiper.params.zoom.enabled) { + enable(); + } + }); + on('destroy', () => { + disable(); + }); + on('touchStart', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchStart(e); + }); + on('touchEnd', (_s, e) => { + if (!swiper.zoom.enabled) return; + onTouchEnd(); + }); + on('doubleTap', (_s, e) => { + if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) { + zoomToggle(e); + } + }); + on('transitionEnd', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled) { + onTransitionEnd(); + } + }); + on('slideChange', () => { + if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) { + onTransitionEnd(); + } + }); + Object.assign(swiper.zoom, { + enable, + disable, + in: zoomIn, + out: zoomOut, + toggle: zoomToggle + }); + } + + /* eslint no-bitwise: ["error", { "allow": [">>"] }] */ + function Controller(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + controller: { + control: undefined, + inverse: false, + by: 'slide' // or 'container' + } + }); + + swiper.controller = { + control: undefined + }; + function LinearSpline(x, y) { + const binarySearch = function search() { + let maxIndex; + let minIndex; + let guess; + return (array, val) => { + minIndex = -1; + maxIndex = array.length; + while (maxIndex - minIndex > 1) { + guess = maxIndex + minIndex >> 1; + if (array[guess] <= val) { + minIndex = guess; + } else { + maxIndex = guess; + } + } + return maxIndex; + }; + }(); + this.x = x; + this.y = y; + this.lastIndex = x.length - 1; + // Given an x value (x2), return the expected y2 value: + // (x1,y1) is the known point before given value, + // (x3,y3) is the known point after given value. + let i1; + let i3; + this.interpolate = function interpolate(x2) { + if (!x2) return 0; + + // Get the indexes of x1 and x3 (the array indexes before and after given x2): + i3 = binarySearch(this.x, x2); + i1 = i3 - 1; + + // We have our indexes i1 & i3, so we can calculate already: + // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1 + return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1]; + }; + return this; + } + function getInterpolateFunction(c) { + swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid); + } + function setTranslate(_t, byController) { + const controlled = swiper.controller.control; + let multiplier; + let controlledTranslate; + const Swiper = swiper.constructor; + function setControlledTranslate(c) { + if (c.destroyed) return; + + // this will create an Interpolate function based on the snapGrids + // x is the Grid of the scrolled scroller and y will be the controlled scroller + // it makes sense to create this only once and recall it for the interpolation + // the function does a lot of value caching for performance + const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate; + if (swiper.params.controller.by === 'slide') { + getInterpolateFunction(c); + // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid + // but it did not work out + controlledTranslate = -swiper.controller.spline.interpolate(-translate); + } + if (!controlledTranslate || swiper.params.controller.by === 'container') { + multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate()); + if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) { + multiplier = 1; + } + controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate(); + } + if (swiper.params.controller.inverse) { + controlledTranslate = c.maxTranslate() - controlledTranslate; + } + c.updateProgress(controlledTranslate); + c.setTranslate(controlledTranslate, swiper); + c.updateActiveIndex(); + c.updateSlidesClasses(); + } + if (Array.isArray(controlled)) { + for (let i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTranslate(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTranslate(controlled); + } + } + function setTransition(duration, byController) { + const Swiper = swiper.constructor; + const controlled = swiper.controller.control; + let i; + function setControlledTransition(c) { + if (c.destroyed) return; + c.setTransition(duration, swiper); + if (duration !== 0) { + c.transitionStart(); + if (c.params.autoHeight) { + nextTick(() => { + c.updateAutoHeight(); + }); + } + elementTransitionEnd(c.wrapperEl, () => { + if (!controlled) return; + c.transitionEnd(); + }); + } + } + if (Array.isArray(controlled)) { + for (i = 0; i < controlled.length; i += 1) { + if (controlled[i] !== byController && controlled[i] instanceof Swiper) { + setControlledTransition(controlled[i]); + } + } + } else if (controlled instanceof Swiper && byController !== controlled) { + setControlledTransition(controlled); + } + } + function removeSpline() { + if (!swiper.controller.control) return; + if (swiper.controller.spline) { + swiper.controller.spline = undefined; + delete swiper.controller.spline; + } + } + on('beforeInit', () => { + if (typeof window !== 'undefined' && ( + // eslint-disable-line + typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) { + const controlElements = typeof swiper.params.controller.control === 'string' ? [...document.querySelectorAll(swiper.params.controller.control)] : [swiper.params.controller.control]; + controlElements.forEach(controlElement => { + if (!swiper.controller.control) swiper.controller.control = []; + if (controlElement && controlElement.swiper) { + swiper.controller.control.push(controlElement.swiper); + } else if (controlElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onControllerSwiper = e => { + swiper.controller.control.push(e.detail[0]); + swiper.update(); + controlElement.removeEventListener(eventName, onControllerSwiper); + }; + controlElement.addEventListener(eventName, onControllerSwiper); + } + }); + return; + } + swiper.controller.control = swiper.params.controller.control; + }); + on('update', () => { + removeSpline(); + }); + on('resize', () => { + removeSpline(); + }); + on('observerUpdate', () => { + removeSpline(); + }); + on('setTranslate', (_s, translate, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTranslate(translate, byController); + }); + on('setTransition', (_s, duration, byController) => { + if (!swiper.controller.control || swiper.controller.control.destroyed) return; + swiper.controller.setTransition(duration, byController); + }); + Object.assign(swiper.controller, { + setTranslate, + setTransition + }); + } + + function A11y(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + a11y: { + enabled: true, + notificationClass: 'swiper-notification', + prevSlideMessage: 'Previous slide', + nextSlideMessage: 'Next slide', + firstSlideMessage: 'This is the first slide', + lastSlideMessage: 'This is the last slide', + paginationBulletMessage: 'Go to slide {{index}}', + slideLabelMessage: '{{index}} / {{slidesLength}}', + containerMessage: null, + containerRoleDescriptionMessage: null, + itemRoleDescriptionMessage: null, + slideRole: 'group', + id: null, + scrollOnFocus: true + } + }); + swiper.a11y = { + clicked: false + }; + let liveRegion = null; + let preventFocusHandler; + let focusTargetSlideEl; + let visibilityChangedTimestamp = new Date().getTime(); + function notify(message) { + const notification = liveRegion; + if (notification.length === 0) return; + notification.innerHTML = ''; + notification.innerHTML = message; + } + function getRandomNumber(size) { + if (size === void 0) { + size = 16; + } + const randomChar = () => Math.round(16 * Math.random()).toString(16); + return 'x'.repeat(size).replace(/x/g, randomChar); + } + function makeElFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '0'); + }); + } + function makeElNotFocusable(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('tabIndex', '-1'); + }); + } + function addElRole(el, role) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('role', role); + }); + } + function addElRoleDescription(el, description) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-roledescription', description); + }); + } + function addElControls(el, controls) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-controls', controls); + }); + } + function addElLabel(el, label) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-label', label); + }); + } + function addElId(el, id) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('id', id); + }); + } + function addElLive(el, live) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-live', live); + }); + } + function disableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', true); + }); + } + function enableEl(el) { + el = makeElementsArray(el); + el.forEach(subEl => { + subEl.setAttribute('aria-disabled', false); + }); + } + function onEnterOrSpaceKey(e) { + if (e.keyCode !== 13 && e.keyCode !== 32) return; + const params = swiper.params.a11y; + const targetEl = e.target; + if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) { + if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return; + } + if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) { + const prevEls = makeElementsArray(swiper.navigation.prevEl); + const nextEls = makeElementsArray(swiper.navigation.nextEl); + if (nextEls.includes(targetEl)) { + if (!(swiper.isEnd && !swiper.params.loop)) { + swiper.slideNext(); + } + if (swiper.isEnd) { + notify(params.lastSlideMessage); + } else { + notify(params.nextSlideMessage); + } + } + if (prevEls.includes(targetEl)) { + if (!(swiper.isBeginning && !swiper.params.loop)) { + swiper.slidePrev(); + } + if (swiper.isBeginning) { + notify(params.firstSlideMessage); + } else { + notify(params.prevSlideMessage); + } + } + } + if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) { + targetEl.click(); + } + } + function updateNavigation() { + if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return; + const { + nextEl, + prevEl + } = swiper.navigation; + if (prevEl) { + if (swiper.isBeginning) { + disableEl(prevEl); + makeElNotFocusable(prevEl); + } else { + enableEl(prevEl); + makeElFocusable(prevEl); + } + } + if (nextEl) { + if (swiper.isEnd) { + disableEl(nextEl); + makeElNotFocusable(nextEl); + } else { + enableEl(nextEl); + makeElFocusable(nextEl); + } + } + } + function hasPagination() { + return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length; + } + function hasClickablePagination() { + return hasPagination() && swiper.params.pagination.clickable; + } + function updatePagination() { + const params = swiper.params.a11y; + if (!hasPagination()) return; + swiper.pagination.bullets.forEach(bulletEl => { + if (swiper.params.pagination.clickable) { + makeElFocusable(bulletEl); + if (!swiper.params.pagination.renderBullet) { + addElRole(bulletEl, 'button'); + addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1)); + } + } + if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) { + bulletEl.setAttribute('aria-current', 'true'); + } else { + bulletEl.removeAttribute('aria-current'); + } + }); + } + const initNavEl = (el, wrapperId, message) => { + makeElFocusable(el); + if (el.tagName !== 'BUTTON') { + addElRole(el, 'button'); + el.addEventListener('keydown', onEnterOrSpaceKey); + } + addElLabel(el, message); + addElControls(el, wrapperId); + }; + const handlePointerDown = e => { + if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) { + preventFocusHandler = true; + } + swiper.a11y.clicked = true; + }; + const handlePointerUp = () => { + preventFocusHandler = false; + requestAnimationFrame(() => { + requestAnimationFrame(() => { + if (!swiper.destroyed) { + swiper.a11y.clicked = false; + } + }); + }); + }; + const onVisibilityChange = e => { + visibilityChangedTimestamp = new Date().getTime(); + }; + const handleFocus = e => { + if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return; + if (new Date().getTime() - visibilityChangedTimestamp < 100) return; + const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`); + if (!slideEl || !swiper.slides.includes(slideEl)) return; + focusTargetSlideEl = slideEl; + const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex; + const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl); + if (isActive || isVisible) return; + if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return; + if (swiper.isHorizontal()) { + swiper.el.scrollLeft = 0; + } else { + swiper.el.scrollTop = 0; + } + requestAnimationFrame(() => { + if (preventFocusHandler) return; + if (swiper.params.loop) { + swiper.slideToLoop(parseInt(slideEl.getAttribute('data-swiper-slide-index')), 0); + } else { + swiper.slideTo(swiper.slides.indexOf(slideEl), 0); + } + preventFocusHandler = false; + }); + }; + const initSlides = () => { + const params = swiper.params.a11y; + if (params.itemRoleDescriptionMessage) { + addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage); + } + if (params.slideRole) { + addElRole(swiper.slides, params.slideRole); + } + const slidesLength = swiper.slides.length; + if (params.slideLabelMessage) { + swiper.slides.forEach((slideEl, index) => { + const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index; + const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength); + addElLabel(slideEl, ariaLabelMessage); + }); + } + }; + const init = () => { + const params = swiper.params.a11y; + swiper.el.append(liveRegion); + + // Container + const containerEl = swiper.el; + if (params.containerRoleDescriptionMessage) { + addElRoleDescription(containerEl, params.containerRoleDescriptionMessage); + } + if (params.containerMessage) { + addElLabel(containerEl, params.containerMessage); + } + + // Wrapper + const wrapperEl = swiper.wrapperEl; + const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`; + const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite'; + addElId(wrapperEl, wrapperId); + addElLive(wrapperEl, live); + + // Slide + initSlides(); + + // Navigation + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage)); + } + if (prevEl) { + prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.addEventListener('keydown', onEnterOrSpaceKey); + }); + } + + // Tab focus + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('focus', handleFocus, true); + swiper.el.addEventListener('pointerdown', handlePointerDown, true); + swiper.el.addEventListener('pointerup', handlePointerUp, true); + }; + function destroy() { + if (liveRegion) liveRegion.remove(); + let { + nextEl, + prevEl + } = swiper.navigation ? swiper.navigation : {}; + nextEl = makeElementsArray(nextEl); + prevEl = makeElementsArray(prevEl); + if (nextEl) { + nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + if (prevEl) { + prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey)); + } + + // Pagination + if (hasClickablePagination()) { + const paginationEl = makeElementsArray(swiper.pagination.el); + paginationEl.forEach(el => { + el.removeEventListener('keydown', onEnterOrSpaceKey); + }); + } + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + // Tab focus + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('focus', handleFocus, true); + swiper.el.removeEventListener('pointerdown', handlePointerDown, true); + swiper.el.removeEventListener('pointerup', handlePointerUp, true); + } + } + on('beforeInit', () => { + liveRegion = createElement('span', swiper.params.a11y.notificationClass); + liveRegion.setAttribute('aria-live', 'assertive'); + liveRegion.setAttribute('aria-atomic', 'true'); + }); + on('afterInit', () => { + if (!swiper.params.a11y.enabled) return; + init(); + }); + on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => { + if (!swiper.params.a11y.enabled) return; + initSlides(); + }); + on('fromEdge toEdge afterInit lock unlock', () => { + if (!swiper.params.a11y.enabled) return; + updateNavigation(); + }); + on('paginationUpdate', () => { + if (!swiper.params.a11y.enabled) return; + updatePagination(); + }); + on('destroy', () => { + if (!swiper.params.a11y.enabled) return; + destroy(); + }); + } + + function History(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + history: { + enabled: false, + root: '', + replaceState: false, + key: 'slides', + keepQuery: false + } + }); + let initialized = false; + let paths = {}; + const slugify = text => { + return text.toString().replace(/\s+/g, '-').replace(/[^\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, ''); + }; + const getPathValues = urlOverride => { + const window = getWindow(); + let location; + if (urlOverride) { + location = new URL(urlOverride); + } else { + location = window.location; + } + const pathArray = location.pathname.slice(1).split('/').filter(part => part !== ''); + const total = pathArray.length; + const key = pathArray[total - 2]; + const value = pathArray[total - 1]; + return { + key, + value + }; + }; + const setHistory = (key, index) => { + const window = getWindow(); + if (!initialized || !swiper.params.history.enabled) return; + let location; + if (swiper.params.url) { + location = new URL(swiper.params.url); + } else { + location = window.location; + } + const slide = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${index}"]`) : swiper.slides[index]; + let value = slugify(slide.getAttribute('data-history')); + if (swiper.params.history.root.length > 0) { + let root = swiper.params.history.root; + if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1); + value = `${root}/${key ? `${key}/` : ''}${value}`; + } else if (!location.pathname.includes(key)) { + value = `${key ? `${key}/` : ''}${value}`; + } + if (swiper.params.history.keepQuery) { + value += location.search; + } + const currentState = window.history.state; + if (currentState && currentState.value === value) { + return; + } + if (swiper.params.history.replaceState) { + window.history.replaceState({ + value + }, null, value); + } else { + window.history.pushState({ + value + }, null, value); + } + }; + const scrollToSlide = (speed, value, runCallbacks) => { + if (value) { + for (let i = 0, length = swiper.slides.length; i < length; i += 1) { + const slide = swiper.slides[i]; + const slideHistory = slugify(slide.getAttribute('data-history')); + if (slideHistory === value) { + const index = swiper.getSlideIndex(slide); + swiper.slideTo(index, speed, runCallbacks); + } + } + } else { + swiper.slideTo(0, speed, runCallbacks); + } + }; + const setHistoryPopState = () => { + paths = getPathValues(swiper.params.url); + scrollToSlide(swiper.params.speed, paths.value, false); + }; + const init = () => { + const window = getWindow(); + if (!swiper.params.history) return; + if (!window.history || !window.history.pushState) { + swiper.params.history.enabled = false; + swiper.params.hashNavigation.enabled = true; + return; + } + initialized = true; + paths = getPathValues(swiper.params.url); + if (!paths.key && !paths.value) { + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + return; + } + scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit); + if (!swiper.params.history.replaceState) { + window.addEventListener('popstate', setHistoryPopState); + } + }; + const destroy = () => { + const window = getWindow(); + if (!swiper.params.history.replaceState) { + window.removeEventListener('popstate', setHistoryPopState); + } + }; + on('init', () => { + if (swiper.params.history.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.history.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHistory(swiper.params.history.key, swiper.activeIndex); + } + }); + } + + function HashNavigation(_ref) { + let { + swiper, + extendParams, + emit, + on + } = _ref; + let initialized = false; + const document = getDocument(); + const window = getWindow(); + extendParams({ + hashNavigation: { + enabled: false, + replaceState: false, + watchState: false, + getSlideIndex(_s, hash) { + if (swiper.virtual && swiper.params.virtual.enabled) { + const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0]; + if (!slideWithHash) return 0; + const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10); + return index; + } + return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]); + } + } + }); + const onHashChange = () => { + emit('hashChange'); + const newHash = document.location.hash.replace('#', ''); + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : ''; + if (newHash !== activeSlideHash) { + const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash); + if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return; + swiper.slideTo(newIndex); + } + }; + const setHash = () => { + if (!initialized || !swiper.params.hashNavigation.enabled) return; + const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex]; + const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : ''; + if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) { + window.history.replaceState(null, null, `#${activeSlideHash}` || ''); + emit('hashSet'); + } else { + document.location.hash = activeSlideHash || ''; + emit('hashSet'); + } + }; + const init = () => { + if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return; + initialized = true; + const hash = document.location.hash.replace('#', ''); + if (hash) { + const speed = 0; + const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash); + swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true); + } + if (swiper.params.hashNavigation.watchState) { + window.addEventListener('hashchange', onHashChange); + } + }; + const destroy = () => { + if (swiper.params.hashNavigation.watchState) { + window.removeEventListener('hashchange', onHashChange); + } + }; + on('init', () => { + if (swiper.params.hashNavigation.enabled) { + init(); + } + }); + on('destroy', () => { + if (swiper.params.hashNavigation.enabled) { + destroy(); + } + }); + on('transitionEnd _freeModeNoMomentumRelease', () => { + if (initialized) { + setHash(); + } + }); + on('slideChange', () => { + if (initialized && swiper.params.cssMode) { + setHash(); + } + }); + } + + /* eslint no-underscore-dangle: "off" */ + /* eslint no-use-before-define: "off" */ + function Autoplay(_ref) { + let { + swiper, + extendParams, + on, + emit, + params + } = _ref; + swiper.autoplay = { + running: false, + paused: false, + timeLeft: 0 + }; + extendParams({ + autoplay: { + enabled: false, + delay: 3000, + waitForTransition: true, + disableOnInteraction: false, + stopOnLastSlide: false, + reverseDirection: false, + pauseOnMouseEnter: false + } + }); + let timeout; + let raf; + let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000; + let autoplayTimeLeft; + let autoplayStartTime = new Date().getTime(); + let wasPaused; + let isTouched; + let pausedByTouch; + let touchStartTimeout; + let slideChanged; + let pausedByInteraction; + let pausedByPointerEnter; + function onTransitionEnd(e) { + if (!swiper || swiper.destroyed || !swiper.wrapperEl) return; + if (e.target !== swiper.wrapperEl) return; + swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd); + if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) { + return; + } + resume(); + } + const calcTimeLeft = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.autoplay.paused) { + wasPaused = true; + } else if (wasPaused) { + autoplayDelayCurrent = autoplayTimeLeft; + wasPaused = false; + } + const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime(); + swiper.autoplay.timeLeft = timeLeft; + emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal); + raf = requestAnimationFrame(() => { + calcTimeLeft(); + }); + }; + const getSlideDelay = () => { + let activeSlideEl; + if (swiper.virtual && swiper.params.virtual.enabled) { + activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0]; + } else { + activeSlideEl = swiper.slides[swiper.activeIndex]; + } + if (!activeSlideEl) return undefined; + const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10); + return currentSlideDelay; + }; + const run = delayForce => { + if (swiper.destroyed || !swiper.autoplay.running) return; + cancelAnimationFrame(raf); + calcTimeLeft(); + let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce; + autoplayDelayTotal = swiper.params.autoplay.delay; + autoplayDelayCurrent = swiper.params.autoplay.delay; + const currentSlideDelay = getSlideDelay(); + if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') { + delay = currentSlideDelay; + autoplayDelayTotal = currentSlideDelay; + autoplayDelayCurrent = currentSlideDelay; + } + autoplayTimeLeft = delay; + const speed = swiper.params.speed; + const proceed = () => { + if (!swiper || swiper.destroyed) return; + if (swiper.params.autoplay.reverseDirection) { + if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) { + swiper.slidePrev(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(swiper.slides.length - 1, speed, true, true); + emit('autoplay'); + } + } else { + if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) { + swiper.slideNext(speed, true, true); + emit('autoplay'); + } else if (!swiper.params.autoplay.stopOnLastSlide) { + swiper.slideTo(0, speed, true, true); + emit('autoplay'); + } + } + if (swiper.params.cssMode) { + autoplayStartTime = new Date().getTime(); + requestAnimationFrame(() => { + run(); + }); + } + }; + if (delay > 0) { + clearTimeout(timeout); + timeout = setTimeout(() => { + proceed(); + }, delay); + } else { + requestAnimationFrame(() => { + proceed(); + }); + } + + // eslint-disable-next-line + return delay; + }; + const start = () => { + autoplayStartTime = new Date().getTime(); + swiper.autoplay.running = true; + run(); + emit('autoplayStart'); + }; + const stop = () => { + swiper.autoplay.running = false; + clearTimeout(timeout); + cancelAnimationFrame(raf); + emit('autoplayStop'); + }; + const pause = (internal, reset) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + clearTimeout(timeout); + if (!internal) { + pausedByInteraction = true; + } + const proceed = () => { + emit('autoplayPause'); + if (swiper.params.autoplay.waitForTransition) { + swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd); + } else { + resume(); + } + }; + swiper.autoplay.paused = true; + if (reset) { + if (slideChanged) { + autoplayTimeLeft = swiper.params.autoplay.delay; + } + slideChanged = false; + proceed(); + return; + } + const delay = autoplayTimeLeft || swiper.params.autoplay.delay; + autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime); + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return; + if (autoplayTimeLeft < 0) autoplayTimeLeft = 0; + proceed(); + }; + const resume = () => { + if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return; + autoplayStartTime = new Date().getTime(); + if (pausedByInteraction) { + pausedByInteraction = false; + run(autoplayTimeLeft); + } else { + run(); + } + swiper.autoplay.paused = false; + emit('autoplayResume'); + }; + const onVisibilityChange = () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + const document = getDocument(); + if (document.visibilityState === 'hidden') { + pausedByInteraction = true; + pause(true); + } + if (document.visibilityState === 'visible') { + resume(); + } + }; + const onPointerEnter = e => { + if (e.pointerType !== 'mouse') return; + pausedByInteraction = true; + pausedByPointerEnter = true; + if (swiper.animating || swiper.autoplay.paused) return; + pause(true); + }; + const onPointerLeave = e => { + if (e.pointerType !== 'mouse') return; + pausedByPointerEnter = false; + if (swiper.autoplay.paused) { + resume(); + } + }; + const attachMouseEvents = () => { + if (swiper.params.autoplay.pauseOnMouseEnter) { + swiper.el.addEventListener('pointerenter', onPointerEnter); + swiper.el.addEventListener('pointerleave', onPointerLeave); + } + }; + const detachMouseEvents = () => { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.removeEventListener('pointerenter', onPointerEnter); + swiper.el.removeEventListener('pointerleave', onPointerLeave); + } + }; + const attachDocumentEvents = () => { + const document = getDocument(); + document.addEventListener('visibilitychange', onVisibilityChange); + }; + const detachDocumentEvents = () => { + const document = getDocument(); + document.removeEventListener('visibilitychange', onVisibilityChange); + }; + on('init', () => { + if (swiper.params.autoplay.enabled) { + attachMouseEvents(); + attachDocumentEvents(); + start(); + } + }); + on('destroy', () => { + detachMouseEvents(); + detachDocumentEvents(); + if (swiper.autoplay.running) { + stop(); + } + }); + on('_freeModeStaticRelease', () => { + if (pausedByTouch || pausedByInteraction) { + resume(); + } + }); + on('_freeModeNoMomentumRelease', () => { + if (!swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('beforeTransitionStart', (_s, speed, internal) => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (internal || !swiper.params.autoplay.disableOnInteraction) { + pause(true, true); + } else { + stop(); + } + }); + on('sliderFirstMove', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + if (swiper.params.autoplay.disableOnInteraction) { + stop(); + return; + } + isTouched = true; + pausedByTouch = false; + pausedByInteraction = false; + touchStartTimeout = setTimeout(() => { + pausedByInteraction = true; + pausedByTouch = true; + pause(true); + }, 200); + }); + on('touchEnd', () => { + if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return; + clearTimeout(touchStartTimeout); + clearTimeout(timeout); + if (swiper.params.autoplay.disableOnInteraction) { + pausedByTouch = false; + isTouched = false; + return; + } + if (pausedByTouch && swiper.params.cssMode) resume(); + pausedByTouch = false; + isTouched = false; + }); + on('slideChange', () => { + if (swiper.destroyed || !swiper.autoplay.running) return; + slideChanged = true; + }); + Object.assign(swiper.autoplay, { + start, + stop, + pause, + resume + }); + } + + function Thumb(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + thumbs: { + swiper: null, + multipleActiveThumbs: true, + autoScrollOffset: 0, + slideThumbActiveClass: 'swiper-slide-thumb-active', + thumbsContainerClass: 'swiper-thumbs' + } + }); + let initialized = false; + let swiperCreated = false; + swiper.thumbs = { + swiper: null + }; + function onThumbClick() { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const clickedIndex = thumbsSwiper.clickedIndex; + const clickedSlide = thumbsSwiper.clickedSlide; + if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return; + if (typeof clickedIndex === 'undefined' || clickedIndex === null) return; + let slideToIndex; + if (thumbsSwiper.params.loop) { + slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + } else { + slideToIndex = clickedIndex; + } + if (swiper.params.loop) { + swiper.slideToLoop(slideToIndex); + } else { + swiper.slideTo(slideToIndex); + } + } + function init() { + const { + thumbs: thumbsParams + } = swiper.params; + if (initialized) return false; + initialized = true; + const SwiperClass = swiper.constructor; + if (thumbsParams.swiper instanceof SwiperClass) { + swiper.thumbs.swiper = thumbsParams.swiper; + Object.assign(swiper.thumbs.swiper.originalParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + Object.assign(swiper.thumbs.swiper.params, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper.update(); + } else if (isObject$1(thumbsParams.swiper)) { + const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper); + Object.assign(thumbsSwiperParams, { + watchSlidesProgress: true, + slideToClickedSlide: false + }); + swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams); + swiperCreated = true; + } + swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass); + swiper.thumbs.swiper.on('tap', onThumbClick); + return true; + } + function update(initial) { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView; + + // Activate thumbs + let thumbsToActivate = 1; + const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass; + if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) { + thumbsToActivate = swiper.params.slidesPerView; + } + if (!swiper.params.thumbs.multipleActiveThumbs) { + thumbsToActivate = 1; + } + thumbsToActivate = Math.floor(thumbsToActivate); + thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass)); + if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) { + for (let i = 0; i < thumbsToActivate; i += 1) { + elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index="${swiper.realIndex + i}"]`).forEach(slideEl => { + slideEl.classList.add(thumbActiveClass); + }); + } + } else { + for (let i = 0; i < thumbsToActivate; i += 1) { + if (thumbsSwiper.slides[swiper.realIndex + i]) { + thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass); + } + } + } + const autoScrollOffset = swiper.params.thumbs.autoScrollOffset; + const useOffset = autoScrollOffset && !thumbsSwiper.params.loop; + if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) { + const currentThumbsIndex = thumbsSwiper.activeIndex; + let newThumbsIndex; + let direction; + if (thumbsSwiper.params.loop) { + const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0]; + newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide); + direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev'; + } else { + newThumbsIndex = swiper.realIndex; + direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev'; + } + if (useOffset) { + newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset; + } + if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) { + if (thumbsSwiper.params.centeredSlides) { + if (newThumbsIndex > currentThumbsIndex) { + newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1; + } else { + newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1; + } + } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ; + thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined); + } + } + } + on('beforeInit', () => { + const { + thumbs + } = swiper.params; + if (!thumbs || !thumbs.swiper) return; + if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) { + const document = getDocument(); + const getThumbsElementAndInit = () => { + const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper; + if (thumbsElement && thumbsElement.swiper) { + thumbs.swiper = thumbsElement.swiper; + init(); + update(true); + } else if (thumbsElement) { + const eventName = `${swiper.params.eventsPrefix}init`; + const onThumbsSwiper = e => { + thumbs.swiper = e.detail[0]; + thumbsElement.removeEventListener(eventName, onThumbsSwiper); + init(); + update(true); + thumbs.swiper.update(); + swiper.update(); + }; + thumbsElement.addEventListener(eventName, onThumbsSwiper); + } + return thumbsElement; + }; + const watchForThumbsToAppear = () => { + if (swiper.destroyed) return; + const thumbsElement = getThumbsElementAndInit(); + if (!thumbsElement) { + requestAnimationFrame(watchForThumbsToAppear); + } + }; + requestAnimationFrame(watchForThumbsToAppear); + } else { + init(); + update(true); + } + }); + on('slideChange update resize observerUpdate', () => { + update(); + }); + on('setTransition', (_s, duration) => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + thumbsSwiper.setTransition(duration); + }); + on('beforeDestroy', () => { + const thumbsSwiper = swiper.thumbs.swiper; + if (!thumbsSwiper || thumbsSwiper.destroyed) return; + if (swiperCreated) { + thumbsSwiper.destroy(); + } + }); + Object.assign(swiper.thumbs, { + init, + update + }); + } + + function freeMode(_ref) { + let { + swiper, + extendParams, + emit, + once + } = _ref; + extendParams({ + freeMode: { + enabled: false, + momentum: true, + momentumRatio: 1, + momentumBounce: true, + momentumBounceRatio: 1, + momentumVelocityRatio: 1, + sticky: false, + minimumVelocity: 0.02 + } + }); + function onTouchStart() { + if (swiper.params.cssMode) return; + const translate = swiper.getTranslate(); + swiper.setTranslate(translate); + swiper.setTransition(0); + swiper.touchEventsData.velocities.length = 0; + swiper.freeMode.onTouchEnd({ + currentPos: swiper.rtl ? swiper.translate : -swiper.translate + }); + } + function onTouchMove() { + if (swiper.params.cssMode) return; + const { + touchEventsData: data, + touches + } = swiper; + // Velocity + if (data.velocities.length === 0) { + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'startX' : 'startY'], + time: data.touchStartTime + }); + } + data.velocities.push({ + position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'], + time: now() + }); + } + function onTouchEnd(_ref2) { + let { + currentPos + } = _ref2; + if (swiper.params.cssMode) return; + const { + params, + wrapperEl, + rtlTranslate: rtl, + snapGrid, + touchEventsData: data + } = swiper; + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + if (currentPos < -swiper.minTranslate()) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (currentPos > -swiper.maxTranslate()) { + if (swiper.slides.length < snapGrid.length) { + swiper.slideTo(snapGrid.length - 1); + } else { + swiper.slideTo(swiper.slides.length - 1); + } + return; + } + if (params.freeMode.momentum) { + if (data.velocities.length > 1) { + const lastMoveEvent = data.velocities.pop(); + const velocityEvent = data.velocities.pop(); + const distance = lastMoveEvent.position - velocityEvent.position; + const time = lastMoveEvent.time - velocityEvent.time; + swiper.velocity = distance / time; + swiper.velocity /= 2; + if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) { + swiper.velocity = 0; + } + // this implies that the user stopped moving a finger then released. + // There would be no events with distance zero, so the last event is stale. + if (time > 150 || now() - lastMoveEvent.time > 300) { + swiper.velocity = 0; + } + } else { + swiper.velocity = 0; + } + swiper.velocity *= params.freeMode.momentumVelocityRatio; + data.velocities.length = 0; + let momentumDuration = 1000 * params.freeMode.momentumRatio; + const momentumDistance = swiper.velocity * momentumDuration; + let newPosition = swiper.translate + momentumDistance; + if (rtl) newPosition = -newPosition; + let doBounce = false; + let afterBouncePosition; + const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio; + let needsLoopFix; + if (newPosition < swiper.maxTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition + swiper.maxTranslate() < -bounceAmount) { + newPosition = swiper.maxTranslate() - bounceAmount; + } + afterBouncePosition = swiper.maxTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.maxTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (newPosition > swiper.minTranslate()) { + if (params.freeMode.momentumBounce) { + if (newPosition - swiper.minTranslate() > bounceAmount) { + newPosition = swiper.minTranslate() + bounceAmount; + } + afterBouncePosition = swiper.minTranslate(); + doBounce = true; + data.allowMomentumBounce = true; + } else { + newPosition = swiper.minTranslate(); + } + if (params.loop && params.centeredSlides) needsLoopFix = true; + } else if (params.freeMode.sticky) { + let nextSlide; + for (let j = 0; j < snapGrid.length; j += 1) { + if (snapGrid[j] > -newPosition) { + nextSlide = j; + break; + } + } + if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') { + newPosition = snapGrid[nextSlide]; + } else { + newPosition = snapGrid[nextSlide - 1]; + } + newPosition = -newPosition; + } + if (needsLoopFix) { + once('transitionEnd', () => { + swiper.loopFix(); + }); + } + // Fix duration + if (swiper.velocity !== 0) { + if (rtl) { + momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity); + } else { + momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity); + } + if (params.freeMode.sticky) { + // If freeMode.sticky is active and the user ends a swipe with a slow-velocity + // event, then durations can be 20+ seconds to slide one (or zero!) slides. + // It's easy to see this when simulating touch with mouse events. To fix this, + // limit single-slide swipes to the default slide duration. This also has the + // nice side effect of matching slide speed if the user stopped moving before + // lifting finger or mouse vs. moving slowly before lifting the finger/mouse. + // For faster swipes, also apply limits (albeit higher ones). + const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate); + const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex]; + if (moveDistance < currentSlideSize) { + momentumDuration = params.speed; + } else if (moveDistance < 2 * currentSlideSize) { + momentumDuration = params.speed * 1.5; + } else { + momentumDuration = params.speed * 2.5; + } + } + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } + if (params.freeMode.momentumBounce && doBounce) { + swiper.updateProgress(afterBouncePosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return; + emit('momentumBounce'); + swiper.setTransition(params.speed); + setTimeout(() => { + swiper.setTranslate(afterBouncePosition); + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + }, 0); + }); + } else if (swiper.velocity) { + emit('_freeModeNoMomentumRelease'); + swiper.updateProgress(newPosition); + swiper.setTransition(momentumDuration); + swiper.setTranslate(newPosition); + swiper.transitionStart(true, swiper.swipeDirection); + if (!swiper.animating) { + swiper.animating = true; + elementTransitionEnd(wrapperEl, () => { + if (!swiper || swiper.destroyed) return; + swiper.transitionEnd(); + }); + } + } else { + swiper.updateProgress(newPosition); + } + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } else if (params.freeMode.sticky) { + swiper.slideToClosest(); + return; + } else if (params.freeMode) { + emit('_freeModeNoMomentumRelease'); + } + if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) { + emit('_freeModeStaticRelease'); + swiper.updateProgress(); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + } + Object.assign(swiper, { + freeMode: { + onTouchStart, + onTouchMove, + onTouchEnd + } + }); + } + + function Grid(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + grid: { + rows: 1, + fill: 'column' + } + }); + let slidesNumberEvenToRows; + let slidesPerRow; + let numFullColumns; + let wasMultiRow; + const getSpaceBetween = () => { + let spaceBetween = swiper.params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + return spaceBetween; + }; + const initSlides = slides => { + const { + slidesPerView + } = swiper.params; + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + numFullColumns = Math.floor(slidesLength / rows); + if (Math.floor(slidesLength / rows) === slidesLength / rows) { + slidesNumberEvenToRows = slidesLength; + } else { + slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows; + } + if (slidesPerView !== 'auto' && fill === 'row') { + slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows); + } + slidesPerRow = slidesNumberEvenToRows / rows; + }; + const unsetSlides = () => { + if (swiper.slides) { + swiper.slides.forEach(slide => { + if (slide.swiperSlideGridSet) { + slide.style.height = ''; + slide.style[swiper.getDirectionLabel('margin-top')] = ''; + } + }); + } + }; + const updateSlide = (i, slide, slides) => { + const { + slidesPerGroup + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows, + fill + } = swiper.params.grid; + const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : slides.length; + // Set slides order + let newSlideOrderIndex; + let column; + let row; + if (fill === 'row' && slidesPerGroup > 1) { + const groupIndex = Math.floor(i / (slidesPerGroup * rows)); + const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex; + const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup); + row = Math.floor(slideIndexInGroup / columnsInGroup); + column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup; + newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows; + slide.style.order = newSlideOrderIndex; + } else if (fill === 'column') { + column = Math.floor(i / rows); + row = i - column * rows; + if (column > numFullColumns || column === numFullColumns && row === rows - 1) { + row += 1; + if (row >= rows) { + row = 0; + column += 1; + } + } + } else { + row = Math.floor(i / slidesPerRow); + column = i - row * slidesPerRow; + } + slide.row = row; + slide.column = column; + slide.style.height = `calc((100% - ${(rows - 1) * spaceBetween}px) / ${rows})`; + slide.style[swiper.getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : ''; + slide.swiperSlideGridSet = true; + }; + const updateWrapperSize = (slideSize, snapGrid) => { + const { + centeredSlides, + roundLengths + } = swiper.params; + const spaceBetween = getSpaceBetween(); + const { + rows + } = swiper.params.grid; + swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows; + swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem); + } + snapGrid.splice(0, snapGrid.length); + snapGrid.push(...newSlidesGrid); + } + }; + const onInit = () => { + wasMultiRow = swiper.params.grid && swiper.params.grid.rows > 1; + }; + const onUpdate = () => { + const { + params, + el + } = swiper; + const isMultiRow = params.grid && params.grid.rows > 1; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + numFullColumns = 1; + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + wasMultiRow = isMultiRow; + }; + on('init', onInit); + on('update', onUpdate); + swiper.grid = { + initSlides, + unsetSlides, + updateSlide, + updateWrapperSize + }; + } + + function appendSlide(slides) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + const appendElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.append(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.append(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) appendElement(slides[i]); + } + } else { + appendElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + } + + function prependSlide(slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + if (params.loop) { + swiper.loopDestroy(); + } + let newActiveIndex = activeIndex + 1; + const prependElement = slideEl => { + if (typeof slideEl === 'string') { + const tempDOM = document.createElement('div'); + tempDOM.innerHTML = slideEl; + slidesEl.prepend(tempDOM.children[0]); + tempDOM.innerHTML = ''; + } else { + slidesEl.prepend(slideEl); + } + }; + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) prependElement(slides[i]); + } + newActiveIndex = activeIndex + slides.length; + } else { + prependElement(slides); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + swiper.slideTo(newActiveIndex, 0, false); + } + + function addSlide(index, slides) { + const swiper = this; + const { + params, + activeIndex, + slidesEl + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + swiper.recalcSlides(); + } + const baseLength = swiper.slides.length; + if (index <= 0) { + swiper.prependSlide(slides); + return; + } + if (index >= baseLength) { + swiper.appendSlide(slides); + return; + } + let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer; + const slidesBuffer = []; + for (let i = baseLength - 1; i >= index; i -= 1) { + const currentSlide = swiper.slides[i]; + currentSlide.remove(); + slidesBuffer.unshift(currentSlide); + } + if (typeof slides === 'object' && 'length' in slides) { + for (let i = 0; i < slides.length; i += 1) { + if (slides[i]) slidesEl.append(slides[i]); + } + newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer; + } else { + slidesEl.append(slides); + } + for (let i = 0; i < slidesBuffer.length; i += 1) { + slidesEl.append(slidesBuffer[i]); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeSlide(slidesIndexes) { + const swiper = this; + const { + params, + activeIndex + } = swiper; + let activeIndexBuffer = activeIndex; + if (params.loop) { + activeIndexBuffer -= swiper.loopedSlides; + swiper.loopDestroy(); + } + let newActiveIndex = activeIndexBuffer; + let indexToRemove; + if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) { + for (let i = 0; i < slidesIndexes.length; i += 1) { + indexToRemove = slidesIndexes[i]; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + } + newActiveIndex = Math.max(newActiveIndex, 0); + } else { + indexToRemove = slidesIndexes; + if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove(); + if (indexToRemove < newActiveIndex) newActiveIndex -= 1; + newActiveIndex = Math.max(newActiveIndex, 0); + } + swiper.recalcSlides(); + if (params.loop) { + swiper.loopCreate(); + } + if (!params.observer || swiper.isElement) { + swiper.update(); + } + if (params.loop) { + swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false); + } else { + swiper.slideTo(newActiveIndex, 0, false); + } + } + + function removeAllSlides() { + const swiper = this; + const slidesIndexes = []; + for (let i = 0; i < swiper.slides.length; i += 1) { + slidesIndexes.push(i); + } + swiper.removeSlide(slidesIndexes); + } + + function Manipulation(_ref) { + let { + swiper + } = _ref; + Object.assign(swiper, { + appendSlide: appendSlide.bind(swiper), + prependSlide: prependSlide.bind(swiper), + addSlide: addSlide.bind(swiper), + removeSlide: removeSlide.bind(swiper), + removeAllSlides: removeAllSlides.bind(swiper) + }); + } + + function effectInit(params) { + const { + effect, + swiper, + on, + setTranslate, + setTransition, + overwriteParams, + perspective, + recreateShadows, + getEffectParams + } = params; + on('beforeInit', () => { + if (swiper.params.effect !== effect) return; + swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`); + if (perspective && perspective()) { + swiper.classNames.push(`${swiper.params.containerModifierClass}3d`); + } + const overwriteParamsResult = overwriteParams ? overwriteParams() : {}; + Object.assign(swiper.params, overwriteParamsResult); + Object.assign(swiper.originalParams, overwriteParamsResult); + }); + on('setTranslate', () => { + if (swiper.params.effect !== effect) return; + setTranslate(); + }); + on('setTransition', (_s, duration) => { + if (swiper.params.effect !== effect) return; + setTransition(duration); + }); + on('transitionEnd', () => { + if (swiper.params.effect !== effect) return; + if (recreateShadows) { + if (!getEffectParams || !getEffectParams().slideShadows) return; + // remove shadows + swiper.slides.forEach(slideEl => { + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove()); + }); + // create new one + recreateShadows(); + } + }); + let requireUpdateOnVirtual; + on('virtualUpdate', () => { + if (swiper.params.effect !== effect) return; + if (!swiper.slides.length) { + requireUpdateOnVirtual = true; + } + requestAnimationFrame(() => { + if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) { + setTranslate(); + requireUpdateOnVirtual = false; + } + }); + }); + } + + function effectTarget(effectParams, slideEl) { + const transformEl = getSlideTransformEl(slideEl); + if (transformEl !== slideEl) { + transformEl.style.backfaceVisibility = 'hidden'; + transformEl.style['-webkit-backface-visibility'] = 'hidden'; + } + return transformEl; + } + + function effectVirtualTransitionEnd(_ref) { + let { + swiper, + duration, + transformElements, + allSlides + } = _ref; + const { + activeIndex + } = swiper; + const getSlide = el => { + if (!el.parentElement) { + // assume shadow root + const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0]; + return slide; + } + return el.parentElement; + }; + if (swiper.params.virtualTranslate && duration !== 0) { + let eventTriggered = false; + let transitionEndTarget; + if (allSlides) { + transitionEndTarget = transformElements; + } else { + transitionEndTarget = transformElements.filter(transformEl => { + const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl; + return swiper.getSlideIndex(el) === activeIndex; + }); + } + transitionEndTarget.forEach(el => { + elementTransitionEnd(el, () => { + if (eventTriggered) return; + if (!swiper || swiper.destroyed) return; + eventTriggered = true; + swiper.animating = false; + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true + }); + swiper.wrapperEl.dispatchEvent(evt); + }); + }); + } + } + + function EffectFade(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + fadeEffect: { + crossFade: false + } + }); + const setTranslate = () => { + const { + slides + } = swiper; + const params = swiper.params.fadeEffect; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = swiper.slides[i]; + const offset = slideEl.swiperSlideOffset; + let tx = -offset; + if (!swiper.params.virtualTranslate) tx -= swiper.translate; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + } + const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0); + const targetEl = effectTarget(params, slideEl); + targetEl.style.opacity = slideOpacity; + targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'fade', + swiper, + on, + setTranslate, + setTransition, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCube(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cubeEffect: { + slideShadows: true, + shadow: true, + shadowOffset: 20, + shadowScale: 0.94 + } + }); + const createSlideShadows = (slideEl, progress, isHorizontal) => { + let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' ')); + slideEl.append(shadowBefore); + } + if (!shadowAfter) { + shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' ')); + slideEl.append(shadowAfter); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // create new ones + const isHorizontal = swiper.isHorizontal(); + swiper.slides.forEach(slideEl => { + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + createSlideShadows(slideEl, progress, isHorizontal); + }); + }; + const setTranslate = () => { + const { + el, + wrapperEl, + slides, + width: swiperWidth, + height: swiperHeight, + rtlTranslate: rtl, + size: swiperSize, + browser + } = swiper; + const r = getRotateFix(swiper); + const params = swiper.params.cubeEffect; + const isHorizontal = swiper.isHorizontal(); + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let wrapperRotate = 0; + let cubeShadowEl; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + swiper.wrapperEl.append(cubeShadowEl); + } + cubeShadowEl.style.height = `${swiperWidth}px`; + } else { + cubeShadowEl = el.querySelector('.swiper-cube-shadow'); + if (!cubeShadowEl) { + cubeShadowEl = createElement('div', 'swiper-cube-shadow'); + el.append(cubeShadowEl); + } + } + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let slideIndex = i; + if (isVirtual) { + slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10); + } + let slideAngle = slideIndex * 90; + let round = Math.floor(slideAngle / 360); + if (rtl) { + slideAngle = -slideAngle; + round = Math.floor(-slideAngle / 360); + } + const progress = Math.max(Math.min(slideEl.progress, 1), -1); + let tx = 0; + let ty = 0; + let tz = 0; + if (slideIndex % 4 === 0) { + tx = -round * 4 * swiperSize; + tz = 0; + } else if ((slideIndex - 1) % 4 === 0) { + tx = 0; + tz = -round * 4 * swiperSize; + } else if ((slideIndex - 2) % 4 === 0) { + tx = swiperSize + round * 4 * swiperSize; + tz = swiperSize; + } else if ((slideIndex - 3) % 4 === 0) { + tx = -swiperSize; + tz = 3 * swiperSize + swiperSize * 4 * round; + } + if (rtl) { + tx = -tx; + } + if (!isHorizontal) { + ty = tx; + tx = 0; + } + const transform = `rotateX(${r(isHorizontal ? 0 : -slideAngle)}deg) rotateY(${r(isHorizontal ? slideAngle : 0)}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`; + if (progress <= 1 && progress > -1) { + wrapperRotate = slideIndex * 90 + progress * 90; + if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90; + } + slideEl.style.transform = transform; + if (params.slideShadows) { + createSlideShadows(slideEl, progress, isHorizontal); + } + } + wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`; + wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`; + if (params.shadow) { + if (isHorizontal) { + cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(89.99deg) rotateZ(0deg) scale(${params.shadowScale})`; + } else { + const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90; + const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2); + const scale1 = params.shadowScale; + const scale2 = params.shadowScale / multiplier; + const offset = params.shadowOffset; + cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-89.99deg)`; + } + } + const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0; + wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${r(swiper.isHorizontal() ? 0 : wrapperRotate)}deg) rotateY(${r(swiper.isHorizontal() ? -wrapperRotate : 0)}deg)`; + wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`); + }; + const setTransition = duration => { + const { + el, + slides + } = swiper; + slides.forEach(slideEl => { + slideEl.style.transitionDuration = `${duration}ms`; + slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => { + subEl.style.transitionDuration = `${duration}ms`; + }); + }); + if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) { + const shadowEl = el.querySelector('.swiper-cube-shadow'); + if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`; + } + }; + effectInit({ + effect: 'cube', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.cubeEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + resistanceRatio: 0, + spaceBetween: 0, + centeredSlides: false, + virtualTranslate: true + }) + }); + } + + function createShadow(suffix, slideEl, side) { + const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`; + const shadowContainer = getSlideTransformEl(slideEl); + let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`); + if (!shadowEl) { + shadowEl = createElement('div', shadowClass.split(' ')); + shadowContainer.append(shadowEl); + } + return shadowEl; + } + + function EffectFlip(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + flipEffect: { + slideShadows: true, + limitRotation: true + } + }); + const createSlideShadows = (slideEl, progress) => { + let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBefore) { + shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top'); + } + if (!shadowAfter) { + shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom'); + } + if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0); + if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0); + }; + const recreateShadows = () => { + // Set shadows + swiper.params.flipEffect; + swiper.slides.forEach(slideEl => { + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + createSlideShadows(slideEl, progress); + }); + }; + const setTranslate = () => { + const { + slides, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.flipEffect; + const rotateFix = getRotateFix(swiper); + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + let progress = slideEl.progress; + if (swiper.params.flipEffect.limitRotation) { + progress = Math.max(Math.min(slideEl.progress, 1), -1); + } + const offset = slideEl.swiperSlideOffset; + const rotate = -180 * progress; + let rotateY = rotate; + let rotateX = 0; + let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let ty = 0; + if (!swiper.isHorizontal()) { + ty = tx; + tx = 0; + rotateX = -rotateY; + rotateY = 0; + } else if (rtl) { + rotateY = -rotateY; + } + slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length; + if (params.slideShadows) { + createSlideShadows(slideEl, progress); + } + const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateFix(rotateX)}deg) rotateY(${rotateFix(rotateY)}deg)`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'flip', + swiper, + on, + setTranslate, + setTransition, + recreateShadows, + getEffectParams: () => swiper.params.flipEffect, + perspective: () => true, + overwriteParams: () => ({ + slidesPerView: 1, + slidesPerGroup: 1, + watchSlidesProgress: true, + spaceBetween: 0, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCoverflow(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + coverflowEffect: { + rotate: 50, + stretch: 0, + depth: 100, + scale: 1, + modifier: 1, + slideShadows: true + } + }); + const setTranslate = () => { + const { + width: swiperWidth, + height: swiperHeight, + slides, + slidesSizesGrid + } = swiper; + const params = swiper.params.coverflowEffect; + const isHorizontal = swiper.isHorizontal(); + const transform = swiper.translate; + const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2; + const rotate = isHorizontal ? params.rotate : -params.rotate; + const translate = params.depth; + const r = getRotateFix(swiper); + // Each slide offset from center + for (let i = 0, length = slides.length; i < length; i += 1) { + const slideEl = slides[i]; + const slideSize = slidesSizesGrid[i]; + const slideOffset = slideEl.swiperSlideOffset; + const centerOffset = (center - slideOffset - slideSize / 2) / slideSize; + const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier; + let rotateY = isHorizontal ? rotate * offsetMultiplier : 0; + let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier; + // var rotateZ = 0 + let translateZ = -translate * Math.abs(offsetMultiplier); + let stretch = params.stretch; + // Allow percentage to make a relative stretch for responsive sliders + if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) { + stretch = parseFloat(params.stretch) / 100 * slideSize; + } + let translateY = isHorizontal ? 0 : stretch * offsetMultiplier; + let translateX = isHorizontal ? stretch * offsetMultiplier : 0; + let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier); + + // Fix for ultra small values + if (Math.abs(translateX) < 0.001) translateX = 0; + if (Math.abs(translateY) < 0.001) translateY = 0; + if (Math.abs(translateZ) < 0.001) translateZ = 0; + if (Math.abs(rotateY) < 0.001) rotateY = 0; + if (Math.abs(rotateX) < 0.001) rotateX = 0; + if (Math.abs(scale) < 0.001) scale = 0; + const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px) rotateX(${r(rotateX)}deg) rotateY(${r(rotateY)}deg) scale(${scale})`; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = slideTransform; + slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1; + if (params.slideShadows) { + // Set shadows + let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top'); + let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom'); + if (!shadowBeforeEl) { + shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top'); + } + if (!shadowAfterEl) { + shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom'); + } + if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0; + if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + }; + effectInit({ + effect: 'coverflow', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true + }) + }); + } + + function EffectCreative(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + creativeEffect: { + limitProgress: 1, + shadowPerProgress: false, + progressMultiplier: 1, + perspective: true, + prev: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + }, + next: { + translate: [0, 0, 0], + rotate: [0, 0, 0], + opacity: 1, + scale: 1 + } + } + }); + const getTranslateValue = value => { + if (typeof value === 'string') return value; + return `${value}px`; + }; + const setTranslate = () => { + const { + slides, + wrapperEl, + slidesSizesGrid + } = swiper; + const params = swiper.params.creativeEffect; + const { + progressMultiplier: multiplier + } = params; + const isCenteredSlides = swiper.params.centeredSlides; + const rotateFix = getRotateFix(swiper); + if (isCenteredSlides) { + const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0; + wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`; + } + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress); + let originalProgress = progress; + if (!isCenteredSlides) { + originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress); + } + const offset = slideEl.swiperSlideOffset; + const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0]; + const r = [0, 0, 0]; + let custom = false; + if (!swiper.isHorizontal()) { + t[1] = t[0]; + t[0] = 0; + } + let data = { + translate: [0, 0, 0], + rotate: [0, 0, 0], + scale: 1, + opacity: 1 + }; + if (progress < 0) { + data = params.next; + custom = true; + } else if (progress > 0) { + data = params.prev; + custom = true; + } + // set translate + t.forEach((value, index) => { + t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`; + }); + // set rotates + r.forEach((value, index) => { + let val = data.rotate[index] * Math.abs(progress * multiplier); + r[index] = val; + }); + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const translateString = t.join(', '); + const rotateString = `rotateX(${rotateFix(r[0])}deg) rotateY(${rotateFix(r[1])}deg) rotateZ(${rotateFix(r[2])}deg)`; + const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`; + const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier; + const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`; + + // Set shadows + if (custom && data.shadow || !custom) { + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl && data.shadow) { + shadowEl = createShadow('creative', slideEl); + } + if (shadowEl) { + const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress; + shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1); + } + } + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + targetEl.style.opacity = opacityString; + if (data.origin) { + targetEl.style.transformOrigin = data.origin; + } + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements, + allSlides: true + }); + }; + effectInit({ + effect: 'creative', + swiper, + on, + setTranslate, + setTransition, + perspective: () => swiper.params.creativeEffect.perspective, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + function EffectCards(_ref) { + let { + swiper, + extendParams, + on + } = _ref; + extendParams({ + cardsEffect: { + slideShadows: true, + rotate: true, + perSlideRotate: 2, + perSlideOffset: 8 + } + }); + const setTranslate = () => { + const { + slides, + activeIndex, + rtlTranslate: rtl + } = swiper; + const params = swiper.params.cardsEffect; + const { + startTranslate, + isTouched + } = swiper.touchEventsData; + const currentTranslate = rtl ? -swiper.translate : swiper.translate; + for (let i = 0; i < slides.length; i += 1) { + const slideEl = slides[i]; + const slideProgress = slideEl.progress; + const progress = Math.min(Math.max(slideProgress, -4), 4); + let offset = slideEl.swiperSlideOffset; + if (swiper.params.centeredSlides && !swiper.params.cssMode) { + swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`; + } + if (swiper.params.centeredSlides && swiper.params.cssMode) { + offset -= slides[0].swiperSlideOffset; + } + let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset; + let tY = 0; + const tZ = -100 * Math.abs(progress); + let scale = 1; + let rotate = -params.perSlideRotate * progress; + let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75; + const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i; + const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate; + const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate; + if (isSwipeToNext || isSwipeToPrev) { + const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5; + rotate += -28 * progress * subProgress; + scale += -0.5 * subProgress; + tXAdd += 96 * subProgress; + tY = `${-25 * subProgress * Math.abs(progress)}%`; + } + if (progress < 0) { + // next + tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`; + } else if (progress > 0) { + // prev + tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`; + } else { + tX = `${tX}px`; + } + if (!swiper.isHorizontal()) { + const prevY = tY; + tY = tX; + tX = prevY; + } + const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`; + + /* eslint-disable */ + const transform = ` + translate3d(${tX}, ${tY}, ${tZ}px) + rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg) + scale(${scaleString}) + `; + /* eslint-enable */ + + if (params.slideShadows) { + // Set shadows + let shadowEl = slideEl.querySelector('.swiper-slide-shadow'); + if (!shadowEl) { + shadowEl = createShadow('cards', slideEl); + } + if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1); + } + slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length; + const targetEl = effectTarget(params, slideEl); + targetEl.style.transform = transform; + } + }; + const setTransition = duration => { + const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl)); + transformElements.forEach(el => { + el.style.transitionDuration = `${duration}ms`; + el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => { + shadowEl.style.transitionDuration = `${duration}ms`; + }); + }); + effectVirtualTransitionEnd({ + swiper, + duration, + transformElements + }); + }; + effectInit({ + effect: 'cards', + swiper, + on, + setTranslate, + setTransition, + perspective: () => true, + overwriteParams: () => ({ + watchSlidesProgress: true, + virtualTranslate: !swiper.params.cssMode + }) + }); + } + + /** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + + + // Swiper Class + const modules = [Virtual, Keyboard, Mousewheel, Navigation, Pagination, Scrollbar, Parallax, Zoom, Controller, A11y, History, HashNavigation, Autoplay, Thumb, freeMode, Grid, Manipulation, EffectFade, EffectCube, EffectFlip, EffectCoverflow, EffectCreative, EffectCards]; + Swiper.use(modules); + + /* underscore in name -> watch for changes */ + const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', + // modules + 'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; + } + function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); + } + function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; + } + function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; + } + function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; + } + function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); + } + + function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); + } + + const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; + }; + const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; + function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; + } + + /** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + + + /* eslint-disable spaced-comment */ + + const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}`; + const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`; + + class DummyHTMLElement {} + const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; + const arrowSvg = ` + `; + const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } + }; + class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } + } + paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); + }); + class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } + } + + // eslint-disable-next-line + const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); + }; + if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; + } + + register(); + +})(); diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.min.js b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.min.js new file mode 100644 index 0000000..955fd29 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +!function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((a=>{void 0===s[a]?s[a]=i[a]:e(i[a])&&e(s[a])&&Object.keys(i[a]).length>0&&t(s[a],i[a])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const a={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,a),e}function n(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function l(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function d(e,t){void 0===t&&(t="x");const s=r();let i,a,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(a=l.transform||l.webkitTransform,a.split(",").length>6&&(a=a.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===a?"":a)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=n.toString().split(",")),"x"===t&&(a=s.WebKitCSSMatrix?n.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(a=s.WebKitCSSMatrix?n.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),a||0}function p(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;tn?"next":"prev",c=(e,t)=>"next"===p&&e>=t||"prev"===p&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let p=n+r*(s-n);if(c(p,s)&&(p=s),t.wrapperEl.scrollTo({[i]:p}),c(p,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:p})})),void a.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=a.requestAnimationFrame(u)};u()}function h(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function f(e,t){void 0===t&&(t="");const s=[...e.children];return e instanceof HTMLSlotElement&&s.push(...e.assignedElements()),t?s.filter((e=>e.matches(t))):s}function g(e){try{return void console.warn(e)}catch(e){}}function v(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:n(t)),s}function w(e){const t=r(),s=i(),a=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,p=e===t?t.scrollX:e.scrollLeft;return{top:a.top+d-l,left:a.left+p-o}}function b(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function y(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function x(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}function E(e,t){t&&e.addEventListener("transitionend",(function s(i){i.target===e&&(t.call(e,i),e.removeEventListener("transitionend",s))}))}function S(e,t,s){const i=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function T(e){return(Array.isArray(e)?e:[e]).filter((e=>!!e))}function M(e){return t=>Math.abs(t)>0&&e.browser&&e.browser.need3dFix&&Math.abs(t)%90==0?t+.001:t}let C,P,L;function z(){return C||(C=function(){const e=r(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),C}function k(e){return void 0===e&&(e={}),P||(P=function(e){let{userAgent:t}=void 0===e?{}:e;const s=z(),i=r(),a=i.navigator.platform,n=t||i.navigator.userAgent,l={ios:!1,android:!1},o=i.screen.width,d=i.screen.height,p=n.match(/(Android);?[\s\/]+([\d.]+)?/);let c=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!c&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===a;let f="MacIntel"===a;return!c&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(c=n.match(/(Version)\/([\d.]+)/),c||(c=[0,1,"13_0_0"]),f=!1),p&&!h&&(l.os="android",l.android=!0),(c||m||u)&&(l.os="ios",l.ios=!0),l}(e)),P}function A(){return L||(L=function(){const e=r(),t=k();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const a=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=i();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||a&&t.ios,isWebView:a}}()),L}var $={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const a=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][a](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function a(){i.off(e,a),a.__emitterProxy&&delete a.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,a)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(a,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var a=arguments.length,r=new Array(a),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const I=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const O=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const D=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},_=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},G=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),a=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=a,r=[s-t];return r.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{r.includes(t.column)&&_(e,s)}))}const r=a+i-1;if(e.params.rewind||e.params.loop)for(let i=a-t;i<=r+t;i+=1){const t=(i%s+s)%s;(tr)&&_(e,t)}else for(let i=Math.max(a-t,0);i<=Math.min(r+t,s-1);i+=1)i!==a&&(i>r||i=0?E=parseFloat(E.replace("%",""))/100*r:"string"==typeof E&&(E=parseFloat(E)),e.virtualSize=-E,p.forEach((e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(u(i,"--swiper-centered-offset-before",""),u(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(p):e.grid&&e.grid.unsetSlides();const z="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&m.push(e.virtualSize-r)}if(o&&s.loop){const t=g[0]+E;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),a=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==p.length-1)).forEach((e=>{e.style[t]=`${E}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(E||0)})),e-=E;const t=e-r;m=m.map((e=>e<=0?-v:e>t?t+w:e))}if(s.centerInsufficientSlides){let e=0;g.forEach((t=>{e+=t+(E||0)})),e-=E;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{m[t]=e-s})),h.forEach(((e,t)=>{h[t]=e+s}))}}if(Object.assign(e,{slides:p,snapGrid:m,slidesGrid:h,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){u(i,"--swiper-centered-offset-before",-m[0]+"px"),u(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(c!==d&&e.emit("slidesLengthChange"),m.length!==y&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==x&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);c<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let a,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(a=0;at.slides.length&&!i)break;s.push(n(e))}else s.push(n(t.activeIndex));for(a=0;ar?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],f=u>=0&&u1&&m<=t.size||u<=0&&m>=t.size;f&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e)),I(o,f,s.slideVisibleClass),I(o,h,s.slideFullyVisibleClass),o.progress=a?-p:p,o.originalProgress=a?-c:c}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:a,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===i)a=0,r=!0,n=!0;else{a=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||a<=0,n=l||a>=1,s&&(a=0),l&&(a=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),a=t.slidesGrid[s],r=t.slidesGrid[i],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=a?(o-a)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:a,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",a)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:a}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>f(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,p;if(r)if(s.loop){let t=a-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${a}"]`);else n?(o=t.filter((e=>e.column===a))[0],p=t.filter((e=>e.column===a+1))[0],d=t.filter((e=>e.column===a-1))[0]):o=t[a];o&&(n||(p=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!p&&(p=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{O(e,e===o,s.slideActiveClass),O(e,e===p,s.slideNextClass),O(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:a,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const p=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let a;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(a=e);return s.normalizeSlideIndex&&(a<0||void 0===a)&&(a=0),a}(t)),i.indexOf(s)>=0)o=i.indexOf(s);else{const e=Math.min(a.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/a.slidesPerGroup)}if(o>=i.length&&(o=i.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=p(d));const c=t.grid&&a.grid&&a.grid.rows>1;let u;if(t.virtual&&a.virtual.enabled&&a.loop)u=p(d);else if(c){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/a.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&G(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let a=e.closest(`.${i.slideClass}, swiper-slide`);!a&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!a&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(a=e)}));let r,n=!1;if(a)for(let e=0;eo?o:i&&en?"next":r=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==c){if(!r.allowSlideNext&&(u?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(c||0)!==n)return!1}let b;if(n!==(p||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>c?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}))}else{if(!r.support.smoothScroll)return m({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,i),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const a=this;if(a.destroyed)return;void 0===t&&(t=a.params.speed);const r=a.grid&&a.params.grid&&a.params.grid.rows>1;let n=e;if(a.params.loop)if(a.virtual&&a.params.virtual.enabled)n+=a.virtual.slidesBefore;else{let e;if(r){const t=n*a.params.grid.rows;e=a.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=a.getSlideIndexByData(n);const t=r?Math.ceil(a.slides.length/a.params.grid.rows):a.slides.length,{centeredSlides:s}=a.params;let l=a.params.slidesPerView;"auto"===l?l=a.slidesPerViewDynamic():(l=Math.ceil(parseFloat(a.params.slidesPerView,10)),s&&l%2==0&&(l+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else n=a.getSlideIndexByData(n)}return requestAnimationFrame((()=>{a.slideTo(n,t,s,i)})),a},slideNext:function(e,t,s){void 0===t&&(t=!0);const i=this,{enabled:a,params:r,animating:n}=i;if(!a||i.destroyed)return i;void 0===e&&(e=i.params.speed);let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(i.slidesPerViewDynamic("current",!0),1));const o=i.activeIndex{i.slideTo(i.activeIndex+o,e,t,s)})),!0}return r.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===t&&(t=!0);const i=this,{params:a,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=i;if(!o||i.destroyed)return i;void 0===e&&(e=i.params.speed);const p=i.virtual&&a.virtual.enabled;if(a.loop){if(d&&!p&&a.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function c(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=c(l?i.translate:-i.translate),m=r.map((e=>c(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&a.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=i.activeIndex-1),"auto"===a.slidesPerView&&1===a.slidesPerGroup&&a.slidesPerGroupAuto&&(f=f-i.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),a.rewind&&i.isBeginning){const a=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(a,e,t,s)}return a.loop&&0===i.activeIndex&&a.cssMode?(requestAnimationFrame((()=>{i.slideTo(f,e,t,s)})),!0):i.slideTo(f,e,t,s)},slideReset:function(e,t,s){void 0===t&&(t=!0);const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===t&&(t=!0),void 0===i&&(i=.5);const a=this;if(a.destroyed)return;void 0===e&&(e=a.params.speed);let r=a.activeIndex;const n=Math.min(a.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/a.params.slidesPerGroup),o=a.rtlTranslate?a.translate:-a.translate;if(o>=a.snapGrid[l]){const e=a.snapGrid[l];o-e>(a.snapGrid[l+1]-e)*i&&(r+=a.params.slidesPerGroup)}else{const e=a.snapGrid[l-1];o-e<=(a.snapGrid[l]-e)*i&&(r-=a.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,a.slidesGrid.length-1),a.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let a,r=e.clickedIndex;const n=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;a=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+i/2?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${a}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-i?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${a}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var X={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const a=()=>{f(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},r=t.grid&&s.grid&&s.grid.rows>1,n=s.slidesPerGroup*(r?s.grid.rows:1),l=t.slides.length%n!=0,o=r&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(m.slideActiveClass)))[0]):E=r;const S="next"===i||!i,T="prev"===i||!i;let M=0,C=0;const P=b?Math.ceil(d.length/m.grid.rows):d.length,L=(b?d[r].column:r)+(h&&void 0===a?-f/2+.5:0);if(L=0;t-=1)d[t].column===e&&y.push(t)}else y.push(P-t-1)}}else if(L+f>P-w){C=Math.max(L-(P-2*w),v);for(let e=0;e{e.column===t&&x.push(s)})):x.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),T&&y.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),S&&x.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView?o.updateSlides():b&&(y.length>0&&T||x.length>0&&S)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(y.length>0&&T){if(void 0===t){const e=o.slidesGrid[E],t=o.slidesGrid[E+M]-e;l?o.setTranslate(o.translate-t):(o.slideTo(E+Math.ceil(M),0,!1,!0),a&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(a){const e=b?y.length/m.grid.rows:y.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(x.length>0&&S)if(void 0===t){const e=o.slidesGrid[E],t=o.slidesGrid[E-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(E-C,0,!1,!0),a&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=b?x.length/m.grid.rows:x.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=p,o.allowSlideNext=c,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,direction:i,setTranslate:a,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===m.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&s})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function Y(e,t,s){const i=r(),{params:a}=e,n=a.edgeSwipeDetection,l=a.edgeSwipeThreshold;return!n||!(s<=l||s>=i.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function q(e){const t=this,s=i();let a=e;a.originalEvent&&(a=a.originalEvent);const n=t.touchEventsData;if("pointerdown"===a.type){if(null!==n.pointerId&&n.pointerId!==a.pointerId)return;n.pointerId=a.pointerId}else"touchstart"===a.type&&1===a.targetTouches.length&&(n.touchId=a.targetTouches[0].identifier);if("touchstart"===a.type)return void Y(t,a,a.targetTouches[0].pageX);const{params:l,touches:d,enabled:p}=t;if(!p)return;if(!l.simulateTouch&&"mouse"===a.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let c=a.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=t.contains(e);if(!s&&t instanceof HTMLSlotElement)return[...element.assignedElements()].includes(e);return s}(c,t.wrapperEl))return;if("which"in a&&3===a.which)return;if("button"in a&&a.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,m=a.composedPath?a.composedPath():a.path;u&&a.target&&a.target.shadowRoot&&m&&(c=m[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!a.target||!a.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const a=s.closest(e);return a||s.getRootNode?a||t(s.getRootNode().host):null}(t)}(h,c):c.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!c.closest(l.swipeHandler))return;d.currentX=a.pageX,d.currentY=a.pageY;const g=d.currentX,v=d.currentY;if(!Y(t,a,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1);let w=!0;c.matches(n.focusableElements)&&(w=!1,"SELECT"===c.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==c&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||c.isContentEditable||a.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",a)}function F(e){const t=i(),s=this,a=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let p,c=e;if(c.originalEvent&&(c=c.originalEvent),"pointermove"===c.type){if(null!==a.touchId)return;if(c.pointerId!==a.pointerId)return}if("touchmove"===c.type){if(p=[...c.changedTouches].filter((e=>e.identifier===a.touchId))[0],!p||p.identifier!==a.touchId)return}else p=c;if(!a.isTouched)return void(a.startMoving&&a.isScrolling&&s.emit("touchMoveOpposite",c));const u=p.pageX,m=p.pageY;if(c.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return c.target.matches(a.focusableElements)||(s.allowClick=!1),void(a.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),a.touchStartTime=o()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return a.isTouched=!1,void(a.isMoved=!1)}else if(un.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&c.target===t.activeElement&&c.target.matches(a.focusableElements))return a.isMoved=!0,void(s.allowClick=!1);a.allowTouchCallbacks&&s.emit("touchMove",c),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,a.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(a.isScrolling&&s.emit("touchMoveOpposite",c),void 0===a.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(a.startMoving=!0)),a.isScrolling||"touchmove"===c.type&&a.preventTouchMoveFromPointerMove)return void(a.isTouched=!1);if(!a.startMoving)return;s.allowClick=!1,!r.cssMode&&c.cancelable&&c.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&c.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),v=Math.abs(v)*(l?1:-1)),n.diff=g,g*=r.touchRatio,l&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!a.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),a.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}a.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",c)}if((new Date).getTime(),a.isMoved&&a.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:a.currentTranslate}),a.loopSwapReset=!0,void(a.startTranslate=a.currentTranslate);s.emit("sliderMove",c),a.isMoved=!0,a.currentTranslate=g+a.startTranslate;let x=!0,E=r.resistanceRatio;if(r.touchReleaseOnEdges&&(E=0),g>0?(b&&y&&a.allowThresholdMove&&a.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),a.currentTranslate>s.minTranslate()&&(x=!1,r.resistance&&(a.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+a.startTranslate+g)**E))):g<0&&(b&&y&&a.allowThresholdMove&&a.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),a.currentTranslatea.startTranslate&&(a.currentTranslate=a.startTranslate),s.allowSlidePrev||s.allowSlideNext||(a.currentTranslate=a.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||a.allowThresholdMove))return void(a.currentTranslate=a.startTranslate);if(!a.allowThresholdMove)return a.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,a.currentTranslate=a.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(a.currentTranslate),s.setTranslate(a.currentTranslate))}function V(e){const t=this,s=t.touchEventsData;let i,a=e;a.originalEvent&&(a=a.originalEvent);if("touchend"===a.type||"touchcancel"===a.type){if(i=[...a.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(a.pointerId!==s.pointerId)return;i=a}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(a.type)){if(!(["pointercancel","contextmenu"].includes(a.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:r,touches:n,rtlTranslate:d,slidesGrid:p,enabled:c}=t;if(!c)return;if(!r.simulateTouch&&"mouse"===a.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",a),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),m=u-s.touchStartTime;if(t.allowClick){const e=a.path||a.composedPath&&a.composedPath();t.updateClickedSlide(e&&e[0]||a.target,e),t.emit("tap click",a),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",a)}if(s.lastClickTime=o(),l((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e=p[e]&&h=p[e])&&(g=e,v=p[p.length-1]-p[p.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-p[g])/v,x=gr.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+x):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+x):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(a.target===t.navigation.nextEl||a.target===t.navigation.prevEl)?a.target===t.navigation.nextEl?t.slideTo(g+x):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+x),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g))}}function j(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:a,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=a,e.allowSlideNext=i,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function W(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function U(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let a;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();a=0===r?0:(e.translate-e.minTranslate())/r,a!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function K(e){const t=this;D(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function Z(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const Q=(e,t)=>{const s=i(),{params:a,el:r,wrapperEl:n,device:l}=e,o=!!a.nested,d="on"===t?"addEventListener":"removeEventListener",p=t;r&&"string"!=typeof r&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(a.preventClicks||a.preventClicksPropagation)&&r[d]("click",e.onClick,!0),a.cssMode&&n[d]("scroll",e.onScroll),a.updateOnWindowResize?e[p](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",j,!0):e[p]("observerUpdate",j,!0),r[d]("load",e.onLoad,{capture:!0}))};const J=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var ee={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function te(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],a=s[i];"object"==typeof a&&null!==a?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in a?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const se={eventsEmitter:$,update:N,translate:B,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),H({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),H({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:R,loop:X,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=q.bind(e),e.onTouchMove=F.bind(e),e.onTouchEnd=V.bind(e),e.onDocumentTouchStart=Z.bind(e),t.cssMode&&(e.onScroll=U.bind(e)),e.onClick=W.bind(e),e.onLoad=K.bind(e),Q(e,"on")},detachEvents:function(){Q(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:a}=e,r=i.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=J(e,i),d=J(e,l),p=e.params.grabCursor,u=l.grabCursor,m=i.enabled;o&&!d?(a.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(a.classList.add(`${i.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===i.grid.fill)&&a.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),p&&!u?e.unsetGrabCursor():!p&&u&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=i[t]&&i[t].enabled,a=l[t]&&l[t].enabled;s&&!a&&e[t].disable(),!s&&a&&e[t].enable()}));const h=l.direction&&l.direction!==i.direction,f=i.loop&&(l.slidesPerView!==i.slidesPerView||h),g=i.loop;h&&s&&e.changeDirection(),c(e.params,l);const v=e.params.enabled,w=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),m&&!v?e.disable():!m&&v&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),s&&(f?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!g&&w?(e.loopCreate(t),e.updateSlides()):g&&!w&&e.loopDestroy()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const a=r(),n="window"===t?a.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:a,device:r}=e,n=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),a.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},ie={};class ae{constructor(){let e,t;for(var s=arguments.length,a=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new ae(i))})),e}const l=this;l.__swiper__=!0,l.support=z(),l.device=k({userAgent:t.userAgent}),l.browser=A(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:te(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=c({},ee,o);return l.params=c({},d,ie,t),l.originalParams=c({},l.params),l.passedParams=c({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=y(f(t,`.${s.slideClass}, swiper-slide`)[0]);return y(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),a=(s.maxTranslate()-i)*e+i;s.translateTo(a,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:a,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[l]?Math.ceil(i[l].swiperSlideSize):0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){a[l]-a[e]{t.complete&&D(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;a=e.slideTo(t.length-1,0,!1,!0)}else a=e.slideTo(e.activeIndex,0,!1,!0);a||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let a=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return f(s,i())[0]})();return!a&&t.params.createElements&&(a=v("div",t.params.wrapperClass),s.append(a),f(s,`.${t.params.slideClass}`).forEach((e=>{a.append(e)}))),Object.assign(t,{el:s,wrapperEl:a,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:a,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction")),wrongRTL:"-webkit-box"===b(a,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?D(t,e):e.addEventListener("load",(e=>{D(t,e.target)}))})),G(t),t.initialized=!0,G(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:a,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),a&&"string"!=typeof a&&a.removeAttribute("style"),r&&r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(ie,e)}static get extendedDefaults(){return ie}static get defaults(){return ee}static installModule(e){ae.prototype.__modules__||(ae.prototype.__modules__=[]);const t=ae.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>ae.installModule(e))),ae):(ae.installModule(e),ae)}}function re(e,t,s,i){return e.params.createElements&&Object.keys(i).forEach((a=>{if(!s[a]&&!0===s.auto){let r=f(e.el,`.${i[a]}`)[0];r||(r=v("div",i[a]),r.className=i[a],e.el.append(r)),s[a]=r,t[a]=r}})),s}function ne(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function le(e){const t=this,{params:s,slidesEl:i}=t;s.loop&&t.loopDestroy();const a=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.append(t.children[0]),t.innerHTML=""}else i.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.prepend(t.children[0]),t.innerHTML=""}else a.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),i("setTranslate",(()=>{s.params.effect===t&&a()})),i("setTransition",((e,i)=>{s.params.effect===t&&r(i)})),i("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),i("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(p=!0),requestAnimationFrame((()=>{p&&s.slides&&s.slides.length&&(a(),p=!1)})))}))}function me(e,t){const s=h(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function he(e){let{swiper:t,duration:s,transformElements:i,allSlides:a}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=a?i:i.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{E(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function fe(e,t,s){const i=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,a=h(t);let r=a.querySelector(`.${i.split(" ").join(".")}`);return r||(r=v("div",i.split(" ")),a.append(r)),r}Object.keys(se).forEach((e=>{Object.keys(se[e]).forEach((t=>{ae.prototype[t]=se[e][t]}))})),ae.use([function(e){let{swiper:t,on:s,emit:i}=e;const a=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==a.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=a.requestAnimationFrame((()=>{const{width:s,height:i}=t;let a=s,r=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:n}=e;n&&n!==t.el||(a=i?i.width:(s[0]||s).inlineSize,r=i?i.height:(s[0]||s).blockSize)})),a===s&&r===i||o()}))})),n.observe(t.el)):(a.addEventListener("resize",o),a.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&a.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),a.removeEventListener("resize",o),a.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const i=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void a("observerUpdate",e[0]);const s=function(){a("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),n.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=x(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const ge=[function(e){let t,{swiper:s,extendParams:a,on:r,emit:n}=e;a({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=i();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const i=s.params.virtual;if(i.cache&&s.virtual.cache[t])return s.virtual.cache[t];let a;return i.renderSlide?(a=i.renderSlide.call(s,e,t),"string"==typeof a&&(o.innerHTML=a,a=o.children[0])):a=s.isElement?v("swiper-slide"):v("div",s.params.slideClass),a.setAttribute("data-swiper-slide-index",t),i.renderSlide||(a.innerHTML=e),i.cache&&(s.virtual.cache[t]=a),a}function p(e,t){const{slidesPerView:i,slidesPerGroup:a,centeredSlides:r,loop:l,initialSlide:o}=s.params;if(t&&!l&&o>0)return;const{addSlidesBefore:p,addSlidesAfter:c}=s.params.virtual,{from:u,to:m,slides:h,slidesGrid:g,offset:v}=s.virtual;s.params.cssMode||s.updateActiveIndex();const w=s.activeIndex||0;let b,y,x;b=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",r?(y=Math.floor(i/2)+a+c,x=Math.floor(i/2)+a+p):(y=i+(a-1)+c,x=(l?i:a)+p);let E=w-x,S=w+y;l||(E=Math.max(E,0),S=Math.min(S,h.length-1));let T=(s.slidesGrid[E]||0)-(s.slidesGrid[0]||0);function M(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(l&&w>=x?(E-=x,r||(T+=s.slidesGrid[0])):l&&w{e.style[b]=T-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:T,from:E,to:S,slides:function(){const e=[];for(let t=E;t<=S;t+=1)e.push(h[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?M():n("virtualUpdate"));const C=[],P=[],L=e=>{let t=e;return e<0?t=h.length+e:t>=h.length&&(t-=h.length),t};if(e)s.slides.filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=u;e<=m;e+=1)if(eS){const t=L(e);s.slides.filter((e=>e.matches(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`))).forEach((e=>{e.remove()}))}const z=l?-h.length:0,k=l?2*h.length:h.length;for(let t=z;t=E&&t<=S){const s=L(t);void 0===m||e?P.push(s):(t>m&&P.push(s),t{s.slidesEl.append(d(h[e],e))})),l)for(let e=C.length-1;e>=0;e-=1){const t=C[e];s.slidesEl.prepend(d(h[t],t))}else C.sort(((e,t)=>t-e)),C.forEach((e=>{s.slidesEl.prepend(d(h[e],e))}));f(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[b]=T-Math.abs(s.cssOverflowAdjustment())+"px"})),M()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,p(!1,!0)})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{p()}),100)):p())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&u(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const i=e[s],r=i.getAttribute("data-swiper-slide-index");r&&i.setAttribute("data-swiper-slide-index",parseInt(r,10)+a),t[parseInt(s,10)+a]=i})),s.virtual.cache=t}p(!0),s.slideTo(i,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let i=e.length-1;i>=0;i-=1)s.params.virtual.cache&&(delete s.virtual.cache[e[i]],Object.keys(s.virtual.cache).forEach((t=>{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e[i],1),e[i]{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e,1),e0&&0===x(t.el,`.${t.params.slideActiveClass}`).length)return;const i=t.el,a=i.clientWidth,r=i.clientHeight,n=o.innerWidth,l=o.innerHeight,d=w(i);s&&(d.left-=i.scrollLeft);const p=[[d.left,d.top],[d.left+a,d.top],[d.left,d.top+r],[d.left+a,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||p||c||u)&&(i.preventDefault?i.preventDefault():i.returnValue=!1),((p||u)&&!s||(d||c)&&s)&&t.slideNext(),((d||c)&&!s||(p||u)&&s)&&t.slidePrev()):((d||p||m||h)&&(i.preventDefault?i.preventDefault():i.returnValue=!1),(p||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",a)}}function p(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function c(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),a("init",(()=>{t.params.keyboard.enabled&&p()})),a("destroy",(()=>{t.keyboard.enabled&&c()})),Object.assign(t.keyboard,{enable:p,disable:c})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let p,c=o();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&o()-c<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),a("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),a("scroll",e.raw)),c=(new n.Date).getTime(),!1)))}function g(e){let s=e,i=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.el;"container"!==t.params.mousewheel.eventsTarget&&(n=document.querySelector(t.params.mousewheel.eventsTarget));const c=n&&n.contains(s.target);if(!t.mouseEntered&&!c&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=function(e){let t=0,s=0,i=0,a=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),i=10*t,a=10*s,"deltaY"in e&&(a=e.deltaY),"deltaX"in e&&(i=e.deltaX),e.shiftKey&&!i&&(i=a,a=0),(i||a)&&e.deltaMode&&(1===e.deltaMode?(i*=40,a*=40):(i*=800,a*=800)),i&&!t&&(t=i<1?-1:1),a&&!s&&(s=a<1?-1:1),{spinX:t,spinY:s,pixelX:i,pixelY:a}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),i=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),i&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:o(),delta:Math.abs(m),direction:Math.sign(m)},i=p&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!c&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,i=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-i.time<500&&i.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;p=e,u.splice(0),d=l((()=>{t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=l((()=>{p=e,u.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(i||a("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),r.releaseOnEdges&&(n===t.minTranslate()||n===t.maxTranslate()))return!0}}else{const s={time:o(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const i=u.length?u[u.length-1]:void 0;if(u.push(s),i?(s.direction!==i.direction||s.delta>i.delta||s.time>i.time+150)&&f(s):f(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}i("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),i("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;function r(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s&&s.length>1&&1===t.el.querySelectorAll(e).length?s=t.el.querySelector(e):s&&1===s.length&&(s=s[0])),e&&!s?e:s)}function n(e,s){const i=t.params.navigation;(e=T(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...i.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](i.lockClass))}))}function l(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return n(s,!1),void n(e,!1);n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),a("navigationPrev"))}function d(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),a("navigationNext"))}function p(){const e=t.params.navigation;if(t.params.navigation=re(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=r(e.nextEl),i=r(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:i}),s=T(s),i=T(i);const a=(s,i)=>{s&&s.addEventListener("click","next"===i?d:o),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>a(e,"next"))),i.forEach((e=>a(e,"prev")))}function c(){let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s);const i=(e,s)=>{e.removeEventListener("click","next"===s?d:o),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>i(e,"next"))),s.forEach((e=>i(e,"prev")))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null},i("init",(()=>{!1===t.params.navigation.enabled?u():(p(),l())})),i("toEdge fromEdge lock unlock",(()=>{l()})),i("destroy",(()=>{c()})),i("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s),t.enabled?l():[...e,...s].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),i("click",((e,s)=>{let{nextEl:i,prevEl:r}=t.navigation;i=T(i),r=T(r);const n=s.target;let l=r.includes(n)||i.includes(n);if(t.isElement&&!l){const e=s.path||s.composedPath&&s.composedPath();e&&(l=e.find((e=>i.includes(e)||r.includes(e))))}if(t.params.navigation.hideOnClick&&!l){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;i.length?e=i[0].classList.contains(t.params.navigation.hiddenClass):r.length&&(e=r[0].classList.contains(t.params.navigation.hiddenClass)),a(!0===e?"navigationShow":"navigationHide"),[...i,...r].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const u=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),c()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),p(),l()},disable:u,update:l,init:p,destroy:c})},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function d(e,s){const{bulletActiveClass:i}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${i}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${i}-${s}-${s}`))}function p(e){const s=e.target.closest(ne(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const i=y(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===i)return;t.slideToLoop(i)}else t.slideTo(i)}function c(){const e=t.rtl,s=t.params.pagination;if(o())return;let i,r,p=t.pagination.el;p=T(p);const c=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,u=t.params.loop?Math.ceil(c/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,i=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(i=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,i=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const a=t.pagination.bullets;let o,c,u;if(s.dynamicBullets&&(n=S(a[0],t.isHorizontal()?"width":"height",!0),p.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=i-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(i-l,0),c=o+(Math.min(a.length,s.dynamicMainBullets)-1),u=(c+o)/2),a.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),p.length>1)a.forEach((e=>{const a=y(e);a===i?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(a>=o&&a<=c&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),a===o&&d(e,"prev"),a===c&&d(e,"next"))}));else{const e=a[i];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&a.forEach(((e,t)=>{e.setAttribute("part",t===i?"bullet-active":"bullet")})),s.dynamicBullets){const e=a[o],t=a[c];for(let e=o;e<=c;e+=1)a[e]&&a[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));d(e,"prev"),d(t,"next")}}if(s.dynamicBullets){const i=Math.min(a.length,s.dynamicMainBullets+4),r=(n*i-n)/2-u*n,l=e?"right":"left";a.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}p.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(ne(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(i+1)})),e.querySelectorAll(ne(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(u)}))),"progressbar"===s.type){let a;a=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(i+1)/u;let n=1,l=1;"horizontal"===a?n=r:l=r,e.querySelectorAll(ne(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,i+1,u),0===r&&a("paginationRender",e)):(0===r&&a("paginationRender",e),a("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let i=t.pagination.el;i=T(i);let r="";if("bullets"===e.type){let i=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&i>s&&(i=s);for(let s=0;s`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``),t.pagination.bullets=[],i.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(ne(e.bulletClass)))})),"custom"!==e.type&&a("paginationRender",i[0])}function m(){t.params.pagination=re(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>x(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=T(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",p),t.enabled||s.classList.add(e.lockClass)})))}function h(){const e=t.params.pagination;if(o())return;let s=t.pagination.el;s&&(s=T(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",p))}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}i("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),i("init",(()=>{!1===t.params.pagination.enabled?f():(m(),u(),c())})),i("activeIndexChange",(()=>{void 0===t.snapIndex&&c()})),i("snapIndexChange",(()=>{c()})),i("snapGridLengthChange",(()=>{u(),c()})),i("destroy",(()=>{h()})),i("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),i("lock unlock",(()=>{c()})),i("click",((e,s)=>{const i=s.target,r=T(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!i.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&i===t.navigation.nextEl||t.navigation.prevEl&&i===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);a(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const f=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),h()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),m(),u(),c()},disable:f,render:u,update:c,init:m,destroy:h})},function(e){let{swiper:t,extendParams:s,on:a,emit:r}=e;const o=i();let d,p,c,u,m=!1,h=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:i,el:a}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=p,o=(c-p)*n;s?(o=-o,o>0?(l=p-o,o=0):-o+p>c&&(l=c+o)):o<0?(l=p+o,o=0):o+p>c&&(l=c-o),t.isHorizontal()?(i.style.transform=`translate3d(${o}px, 0, 0)`,i.style.width=`${l}px`):(i.style.transform=`translate3d(0px, ${o}px, 0)`,i.style.height=`${l}px`),r.hide&&(clearTimeout(h),a.style.opacity=1,h=setTimeout((()=>{a.style.opacity=0,a.style.transitionDuration="400ms"}),1e3))}function b(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:i}=e;s.style.width="",s.style.height="",c=t.isHorizontal()?i.offsetWidth:i.offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),p="auto"===t.params.scrollbar.dragSize?c*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${p}px`:s.style.height=`${p}px`,i.style.display=u>=1?"none":"",t.params.scrollbar.hide&&(i.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function y(e){return t.isHorizontal()?e.clientX:e.clientY}function x(e){const{scrollbar:s,rtlTranslate:i}=t,{el:a}=s;let r;r=(y(e)-w(a)[t.isHorizontal()?"left":"top"]-(null!==d?d:p/2))/(c-p),r=Math.max(Math.min(r,1),0),i&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function E(e){const s=t.params.scrollbar,{scrollbar:i,wrapperEl:a}=t,{el:n,dragEl:l}=i;m=!0,d=e.target===l?y(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),a.style.transitionDuration="100ms",l.style.transitionDuration="100ms",x(e),clearTimeout(f),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function S(e){const{scrollbar:s,wrapperEl:i}=t,{el:a,dragEl:n}=s;m&&(e.preventDefault&&e.cancelable?e.preventDefault():e.returnValue=!1,x(e),i.style.transitionDuration="0ms",a.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function M(e){const s=t.params.scrollbar,{scrollbar:i,wrapperEl:a}=t,{el:n}=i;m&&(m=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",a.style.transitionDuration=""),s.hide&&(clearTimeout(f),f=l((()=>{n.style.opacity=0,n.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function C(e){const{scrollbar:s,params:i}=t,a=s.el;if(!a)return;const r=a,n=!!i.passiveListeners&&{passive:!1,capture:!1},l=!!i.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",E,n),o[d]("pointermove",S,n),o[d]("pointerup",M,l)}function P(){const{scrollbar:e,el:s}=t;t.params.scrollbar=re(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const i=t.params.scrollbar;if(!i.el)return;let a,r;if("string"==typeof i.el&&t.isElement&&(a=t.el.querySelector(i.el)),a||"string"!=typeof i.el)a||(a=i.el);else if(a=o.querySelectorAll(i.el),!a.length)return;t.params.uniqueNavElements&&"string"==typeof i.el&&a.length>1&&1===s.querySelectorAll(i.el).length&&(a=s.querySelector(i.el)),a.length>0&&(a=a[0]),a.classList.add(t.isHorizontal()?i.horizontalClass:i.verticalClass),a&&(r=a.querySelector(ne(t.params.scrollbar.dragClass)),r||(r=v("div",t.params.scrollbar.dragClass),a.append(r))),Object.assign(e,{el:a,dragEl:r}),i.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&C("on"),a&&a.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))}function L(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(...n(t.isHorizontal()?e.horizontalClass:e.verticalClass)),t.params.scrollbar.el&&t.scrollbar.el&&C("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null},a("changeDirection",(()=>{if(!t.scrollbar||!t.scrollbar.el)return;const e=t.params.scrollbar;let{el:s}=t.scrollbar;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),a("init",(()=>{!1===t.params.scrollbar.enabled?z():(P(),b(),g())})),a("update resize observerUpdate lock unlock changeDirection",(()=>{b()})),a("setTranslate",(()=>{g()})),a("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),a("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))})),a("destroy",(()=>{L()}));const z=()=>{t.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),L()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),P(),b(),g()},disable:z,updateSize:b,setTranslate:g,init:P,destroy:L})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({parallax:{enabled:!1}});const a="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(e,s)=>{const{rtl:i}=t,a=i?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),p=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*a+"%":n*s*a+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let c=`translate3d(${n}, ${l}, 0px)`;if(null!=o){c+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(p&&null!=p){c+=` rotate(${p*s*-1}deg)`}e.style.transform=c},n=()=>{const{el:e,slides:s,progress:i,snapGrid:n,isElement:l}=t,o=f(e,a);t.isElement&&o.push(...f(t.hostEl,a)),o.forEach((e=>{r(e,i)})),s.forEach(((e,s)=>{let l=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(l+=Math.ceil(s/2)-i*(n.length-1)),l=Math.min(Math.max(l,-1),1),e.querySelectorAll(`${a}, [data-swiper-parallax-rotate]`).forEach((e=>{r(e,l)}))}))};i("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),i("init",(()=>{t.params.parallax.enabled&&n()})),i("setTranslate",(()=>{t.params.parallax.enabled&&n()})),i("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s,hostEl:i}=t,r=[...s.querySelectorAll(a)];t.isElement&&r.push(...i.querySelectorAll(a)),r.forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:a}=e;const n=r();s({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,p=1,c=!1;const u=[],m={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},h={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v,b=1;function y(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,i=u[1].pageY;return Math.sqrt((s-e)**2+(i-t)**2)}function E(){const e=t.params.zoom,s=m.imageWrapEl.getAttribute("data-swiper-zoom")||e.maxRatio;if(e.limitToOriginalSize&&m.imageEl&&m.imageEl.naturalWidth){const e=m.imageEl.naturalWidth/m.imageEl.offsetWidth;return Math.min(e,s)}return s}function S(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function T(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!S(e))return;const s=t.params.zoom;if(l=!1,o=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=y(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let i=m.slideEl.querySelector(`.${s.containerClass}`);if(i&&(i=i.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=i,m.imageWrapEl=i?x(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=E()}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x-n.scrollX)/p,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y-n.scrollY)/p]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}c=!0}}function M(e){if(!S(e))return;const s=t.params.zoom,i=t.zoom,a=u.findIndex((t=>t.pointerId===e.pointerId));a>=0&&(u[a]=e),u.length<2||(o=!0,m.scaleMove=y(),m.imageEl&&(i.scale=m.scaleMove/m.scaleStart*p,i.scale>m.maxRatio&&(i.scale=m.maxRatio-1+(i.scale-m.maxRatio+1)**.5),i.scalet.pointerId===e.pointerId));a>=0&&u.splice(a,1),l&&o&&(l=!1,o=!1,m.imageEl&&(i.scale=Math.max(Math.min(i.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${i.scale})`,p=i.scale,c=!1,i.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):i.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===i.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function P(){t.touchEventsData.preventTouchMoveFromPointerMove=!1}function L(e){if(!S(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.hostEl.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!m.slideEl)return;h.isMoved||(h.width=m.imageEl.offsetWidth||m.imageEl.clientWidth,h.height=m.imageEl.offsetHeight||m.imageEl.clientHeight,h.startX=d(m.imageWrapEl,"x")||0,h.startY=d(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const i=h.width*s.scale,a=h.height*s.scale;h.minX=Math.min(m.slideWidth/2-i/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-a/2,0),h.maxY=-h.minY,h.touchesCurrent.x=u.length>0?u[0].pageX:e.pageX,h.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY;if(Math.max(Math.abs(h.touchesCurrent.x-h.touchesStart.x),Math.abs(h.touchesCurrent.y-h.touchesStart.y))>5&&(t.allowClick=!1),!h.isMoved&&!c){if(t.isHorizontal()&&(Math.floor(h.minX)===Math.floor(h.startX)&&h.touchesCurrent.xh.touchesStart.x))return h.isTouched=!1,void P();if(!t.isHorizontal()&&(Math.floor(h.minY)===Math.floor(h.startY)&&h.touchesCurrent.yh.touchesStart.y))return h.isTouched=!1,void P()}e.cancelable&&e.preventDefault(),e.stopPropagation(),clearTimeout(v),t.touchEventsData.preventTouchMoveFromPointerMove=!0,v=setTimeout((()=>{P()})),h.isMoved=!0;const r=(s.scale-p)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;h.currentX=h.touchesCurrent.x-h.touchesStart.x+h.startX+r*(h.width-2*n),h.currentY=h.touchesCurrent.y-h.touchesStart.y+h.startY+r*(h.height-2*l),h.currentXh.maxX&&(h.currentX=h.maxX-1+(h.currentX-h.maxX+1)**.8),h.currentYh.maxY&&(h.currentY=h.maxY-1+(h.currentY-h.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=h.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=h.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(h.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(h.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(h.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(h.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=h.touchesCurrent.x,g.prevPositionY=h.touchesCurrent.y,g.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}function z(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,p=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function k(e){const s=t.zoom,i=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${i.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?x(m.imageEl,`.${i.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let a,r,l,o,d,c,u,g,v,b,y,S,T,M,C,P,L,z;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${i.zoomedSlideClass}`),void 0===h.touchesStart.x&&e?(a=e.pageX,r=e.pageY):(a=h.touchesStart.x,r=h.touchesStart.y);const k="number"==typeof e?e:null;1===p&&k&&(a=void 0,r=void 0);const A=E();s.scale=k||A,p=k||A,!e||1===p&&k?(u=0,g=0):(L=m.slideEl.offsetWidth,z=m.slideEl.offsetHeight,l=w(m.slideEl).left+n.scrollX,o=w(m.slideEl).top+n.scrollY,d=l+L/2-a,c=o+z/2-r,v=m.imageEl.offsetWidth||m.imageEl.clientWidth,b=m.imageEl.offsetHeight||m.imageEl.clientHeight,y=v*s.scale,S=b*s.scale,T=Math.min(L/2-y/2,0),M=Math.min(z/2-S/2,0),C=-T,P=-M,u=d*s.scale,g=c*s.scale,uC&&(u=C),gP&&(g=P)),k&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${g}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function A(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?x(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,p=1,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function $(e){const s=t.zoom;s.scale&&1!==s.scale?A():k(e)}function I(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function O(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:i}=I();t.wrapperEl.addEventListener("pointerdown",T,s),t.wrapperEl.addEventListener("pointermove",M,i),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,C,s)})),t.wrapperEl.addEventListener("pointermove",L,i)}function D(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:i}=I();t.wrapperEl.removeEventListener("pointerdown",T,s),t.wrapperEl.removeEventListener("pointermove",M,i),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,C,s)})),t.wrapperEl.removeEventListener("pointermove",L,i)}Object.defineProperty(t.zoom,"scale",{get:()=>b,set(e){if(b!==e){const t=m.imageEl,s=m.slideEl;a("zoomChange",e,t,s)}b=e}}),i("init",(()=>{t.params.zoom.enabled&&O()})),i("destroy",(()=>{D()})),i("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(h.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),h.isTouched=!0;const i=u.length>0?u[0]:e;h.touchesStart.x=i.pageX,h.touchesStart.y=i.pageY}(s)})),i("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!h.isMoved)return h.isTouched=!1,void(h.isMoved=!1);h.isTouched=!1,h.isMoved=!1;let s=300,i=300;const a=g.x*s,r=h.currentX+a,n=g.y*i,l=h.currentY+n;0!==g.x&&(s=Math.abs((r-h.currentX)/g.x)),0!==g.y&&(i=Math.abs((l-h.currentY)/g.y));const o=Math.max(s,i);h.currentX=r,h.currentY=l;const d=h.width*e.scale,p=h.height*e.scale;h.minX=Math.min(m.slideWidth/2-d/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-p/2,0),h.maxY=-h.minY,h.currentX=Math.max(Math.min(h.currentX,h.maxX),h.minX),h.currentY=Math.max(Math.min(h.currentY,h.maxY),h.minY),m.imageWrapEl.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}()})),i("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&$(s)})),i("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&z()})),i("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&z()})),Object.assign(t.zoom,{enable:O,disable:D,in:k,out:A,toggle:$})},function(e){let{swiper:t,extendParams:s,on:i}=e;function a(e,t){const s=function(){let e,t,s;return(i,a)=>{for(t=-1,e=i.length;e-t>1;)s=e+t>>1,i[s]<=a?t=s:e=s;return e}}();let i,a;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(a=s(this.x,e),i=a-1,(e-this.x[i])*(this.y[a]-this.y[i])/(this.x[a]-this.x[i])+this.y[i]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},i("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){("string"==typeof t.params.controller.control?[...document.querySelectorAll(t.params.controller.control)]:[t.params.controller.control]).forEach((e=>{if(t.controller.control||(t.controller.control=[]),e&&e.swiper)t.controller.control.push(e.swiper);else if(e){const s=`${t.params.eventsPrefix}init`,i=a=>{t.controller.control.push(a.detail[0]),t.update(),e.removeEventListener(s,i)};e.addEventListener(s,i)}}))}else t.controller.control=t.params.controller.control})),i("update",(()=>{r()})),i("resize",(()=>{r()})),i("observerUpdate",(()=>{r()})),i("setTranslate",((e,s,i)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(s,i)})),i("setTransition",((e,s,i)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(s,i)})),Object.assign(t.controller,{setTranslate:function(e,s){const i=t.controller.control;let r,n;const l=t.constructor;function o(e){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline=t.params.loop?new a(t.slidesGrid,e.slidesGrid):new a(t.snapGrid,e.snapGrid)}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(i))for(let e=0;e{s.updateAutoHeight()})),E(s.wrapperEl,(()=>{a&&s.transitionEnd()}))))}if(Array.isArray(a))for(r=0;r{e.setAttribute("tabIndex","0")}))}function c(e){(e=T(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function u(e,t){(e=T(e)).forEach((e=>{e.setAttribute("role",t)}))}function m(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function h(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function f(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function g(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function w(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,i=e.target;if(!t.pagination||!t.pagination.el||i!==t.pagination.el&&!t.pagination.el.contains(e.target)||e.target.matches(ne(t.params.pagination.bulletClass))){if(t.navigation&&t.navigation.prevEl&&t.navigation.nextEl){const e=T(t.navigation.prevEl);T(t.navigation.nextEl).includes(i)&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?d(s.lastSlideMessage):d(s.nextSlideMessage)),e.includes(i)&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?d(s.firstSlideMessage):d(s.prevSlideMessage))}t.pagination&&i.matches(ne(t.params.pagination.bulletClass))&&i.click()}}function b(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function x(){return b()&&t.params.pagination.clickable}const E=(e,t,s)=>{p(e),"BUTTON"!==e.tagName&&(u(e,"button"),e.addEventListener("keydown",w)),h(e,s),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},S=e=>{n&&n!==e.target&&!n.contains(e.target)&&(r=!0),t.a11y.clicked=!0},M=()=>{r=!1,requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},C=e=>{o=(new Date).getTime()},P=e=>{if(t.a11y.clicked||!t.params.a11y.scrollOnFocus)return;if((new Date).getTime()-o<100)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);if(!s||!t.slides.includes(s))return;n=s;const i=t.slides.indexOf(s)===t.activeIndex,a=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);i||a||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,requestAnimationFrame((()=>{r||(t.params.loop?t.slideToLoop(parseInt(s.getAttribute("data-swiper-slide-index")),0):t.slideTo(t.slides.indexOf(s),0),r=!1)})))},L=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&m(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&u(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((i,a)=>{const r=t.params.loop?parseInt(i.getAttribute("data-swiper-slide-index"),10):a;h(i,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))},z=()=>{const e=t.params.a11y;t.el.append(l);const s=t.el;e.containerRoleDescriptionMessage&&m(s,e.containerRoleDescriptionMessage),e.containerMessage&&h(s,e.containerMessage);const a=t.wrapperEl,r=e.id||a.getAttribute("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const o=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var d;d=r,T(a).forEach((e=>{e.setAttribute("id",d)})),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(a,o),L();let{nextEl:p,prevEl:c}=t.navigation?t.navigation:{};if(p=T(p),c=T(c),p&&p.forEach((t=>E(t,r,e.nextSlideMessage))),c&&c.forEach((t=>E(t,r,e.prevSlideMessage))),x()){T(t.pagination.el).forEach((e=>{e.addEventListener("keydown",w)}))}i().addEventListener("visibilitychange",C),t.el.addEventListener("focus",P,!0),t.el.addEventListener("focus",P,!0),t.el.addEventListener("pointerdown",S,!0),t.el.addEventListener("pointerup",M,!0)};a("beforeInit",(()=>{l=v("span",t.params.a11y.notificationClass),l.setAttribute("aria-live","assertive"),l.setAttribute("aria-atomic","true")})),a("afterInit",(()=>{t.params.a11y.enabled&&z()})),a("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&L()})),a("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{nextEl:e,prevEl:s}=t.navigation;s&&(t.isBeginning?(f(s),c(s)):(g(s),p(s))),e&&(t.isEnd?(f(e),c(e)):(g(e),p(e)))}()})),a("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;b()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(p(s),t.params.pagination.renderBullet||(u(s,"button"),h(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,y(s)+1)))),s.matches(ne(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),a("destroy",(()=>{t.params.a11y.enabled&&function(){l&&l.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=T(e),s=T(s),e&&e.forEach((e=>e.removeEventListener("keydown",w))),s&&s.forEach((e=>e.removeEventListener("keydown",w))),x()&&T(t.pagination.el).forEach((e=>{e.removeEventListener("keydown",w)}));i().removeEventListener("visibilitychange",C),t.el&&"string"!=typeof t.el&&(t.el.removeEventListener("focus",P,!0),t.el.removeEventListener("pointerdown",S,!0),t.el.removeEventListener("pointerup",M,!0))}()}))},function(e){let{swiper:t,extendParams:s,on:i}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let a=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const i=s.pathname.slice(1).split("/").filter((e=>""!==e)),a=i.length;return{key:i[a-2],value:i[a-1]}},d=(e,s)=>{const i=r();if(!a||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):i.location;const o=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${s}"]`):t.slides[s];let d=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${e}/`:""}${d}`);t.params.history.keepQuery&&(d+=n.search);const p=i.history.state;p&&p.value===d||(t.params.history.replaceState?i.history.replaceState({value:d},null,d):i.history.pushState({value:d},null,d))},p=(e,s,i)=>{if(s)for(let a=0,r=t.slides.length;a{n=o(t.params.url),p(t.params.speed,n.value,!1)};i("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);a=!0,n=o(t.params.url),n.key||n.value?(p(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",c)):t.params.history.replaceState||e.addEventListener("popstate",c)}})()})),i("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",c)})()})),i("transitionEnd _freeModeNoMomentumRelease",(()=>{a&&d(t.params.history.key,t.activeIndex)})),i("slideChange",(()=>{a&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:a,on:n}=e,l=!1;const o=i(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return t.getSlideIndex(f(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const p=()=>{a("hashChange");const e=o.location.hash.replace("#",""),s=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},c=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),a("hashSet")):(o.location.hash=s||"",a("hashSet"))};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0,i=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(i||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",p)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",p)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&c()})),n("slideChange",(()=>{l&&t.params.cssMode&&c()}))},function(e){let t,s,{swiper:a,extendParams:r,on:n,emit:l,params:o}=e;a.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,p,c,u,m,h,f,g,v=o&&o.autoplay?o.autoplay.delay:3e3,w=o&&o.autoplay?o.autoplay.delay:3e3,b=(new Date).getTime();function y(e){a&&!a.destroyed&&a.wrapperEl&&e.target===a.wrapperEl&&(a.wrapperEl.removeEventListener("transitionend",y),g||e.detail&&e.detail.bySwiperTouchMove||C())}const x=()=>{if(a.destroyed||!a.autoplay.running)return;a.autoplay.paused?p=!0:p&&(w=d,p=!1);const e=a.autoplay.paused?d:b+w-(new Date).getTime();a.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/v),s=requestAnimationFrame((()=>{x()}))},E=e=>{if(a.destroyed||!a.autoplay.running)return;cancelAnimationFrame(s),x();let i=void 0===e?a.params.autoplay.delay:e;v=a.params.autoplay.delay,w=a.params.autoplay.delay;const r=(()=>{let e;if(e=a.virtual&&a.params.virtual.enabled?a.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:a.slides[a.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(i=r,v=r,w=r),d=i;const n=a.params.speed,o=()=>{a&&!a.destroyed&&(a.params.autoplay.reverseDirection?!a.isBeginning||a.params.loop||a.params.rewind?(a.slidePrev(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(a.slides.length-1,n,!0,!0),l("autoplay")):!a.isEnd||a.params.loop||a.params.rewind?(a.slideNext(n,!0,!0),l("autoplay")):a.params.autoplay.stopOnLastSlide||(a.slideTo(0,n,!0,!0),l("autoplay")),a.params.cssMode&&(b=(new Date).getTime(),requestAnimationFrame((()=>{E()}))))};return i>0?(clearTimeout(t),t=setTimeout((()=>{o()}),i)):requestAnimationFrame((()=>{o()})),i},S=()=>{b=(new Date).getTime(),a.autoplay.running=!0,E(),l("autoplayStart")},T=()=>{a.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},M=(e,s)=>{if(a.destroyed||!a.autoplay.running)return;clearTimeout(t),e||(f=!0);const i=()=>{l("autoplayPause"),a.params.autoplay.waitForTransition?a.wrapperEl.addEventListener("transitionend",y):C()};if(a.autoplay.paused=!0,s)return h&&(d=a.params.autoplay.delay),h=!1,void i();const r=d||a.params.autoplay.delay;d=r-((new Date).getTime()-b),a.isEnd&&d<0&&!a.params.loop||(d<0&&(d=0),i())},C=()=>{a.isEnd&&d<0&&!a.params.loop||a.destroyed||!a.autoplay.running||(b=(new Date).getTime(),f?(f=!1,E(d)):E(),a.autoplay.paused=!1,l("autoplayResume"))},P=()=>{if(a.destroyed||!a.autoplay.running)return;const e=i();"hidden"===e.visibilityState&&(f=!0,M(!0)),"visible"===e.visibilityState&&C()},L=e=>{"mouse"===e.pointerType&&(f=!0,g=!0,a.animating||a.autoplay.paused||M(!0))},z=e=>{"mouse"===e.pointerType&&(g=!1,a.autoplay.paused&&C())};n("init",(()=>{a.params.autoplay.enabled&&(a.params.autoplay.pauseOnMouseEnter&&(a.el.addEventListener("pointerenter",L),a.el.addEventListener("pointerleave",z)),i().addEventListener("visibilitychange",P),S())})),n("destroy",(()=>{a.el&&"string"!=typeof a.el&&(a.el.removeEventListener("pointerenter",L),a.el.removeEventListener("pointerleave",z)),i().removeEventListener("visibilitychange",P),a.autoplay.running&&T()})),n("_freeModeStaticRelease",(()=>{(u||f)&&C()})),n("_freeModeNoMomentumRelease",(()=>{a.params.autoplay.disableOnInteraction?T():M(!0,!0)})),n("beforeTransitionStart",((e,t,s)=>{!a.destroyed&&a.autoplay.running&&(s||!a.params.autoplay.disableOnInteraction?M(!0,!0):T())})),n("sliderFirstMove",(()=>{!a.destroyed&&a.autoplay.running&&(a.params.autoplay.disableOnInteraction?T():(c=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,M(!0)}),200)))})),n("touchEnd",(()=>{if(!a.destroyed&&a.autoplay.running&&c){if(clearTimeout(m),clearTimeout(t),a.params.autoplay.disableOnInteraction)return u=!1,void(c=!1);u&&a.params.cssMode&&C(),u=!1,c=!1}})),n("slideChange",(()=>{!a.destroyed&&a.autoplay.running&&(h=!0)})),Object.assign(a.autoplay,{start:S,stop:T,pause:M,resume:C})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,i=e.clickedSlide;if(i&&i.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let a;a=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(a):t.slideTo(a)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(p(e.swiper)){const i=Object.assign({},e.swiper);Object.assign(i,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(i),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function d(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const i="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let a=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(a=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(a=1),a=Math.floor(a),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e{e.classList.add(r)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>a?r-Math.floor(i/2)+1:r+Math.floor(i/2)-1:r>a&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},a("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=i(),a=()=>{const i="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(i&&i.swiper)e.swiper=i.swiper,o(),d(!0);else if(i){const s=`${t.params.eventsPrefix}init`,a=r=>{e.swiper=r.detail[0],i.removeEventListener(s,a),o(),d(!0),e.swiper.update(),t.update()};i.addEventListener(s,a)}return i},r=()=>{if(t.destroyed)return;a()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),d(!0)})),a("slideChange update resize observerUpdate",(()=>{d()})),a("setTransition",((e,s)=>{const i=t.thumbs.swiper;i&&!i.destroyed&&i.setTransition(s)})),a("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:d})},function(e){let{swiper:t,extendParams:s,emit:i,once:a}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:o()})},onTouchEnd:function(e){let{currentPos:s}=e;if(t.params.cssMode)return;const{params:r,wrapperEl:n,rtlTranslate:l,snapGrid:d,touchEventsData:p}=t,c=o()-p.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=p.velocities.pop(),s=p.velocities.pop(),i=e.position-s.position,a=e.time-s.time;t.velocity=i/a,t.velocity/=2,Math.abs(t.velocity)150||o()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,p.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let c=t.translate+s;l&&(c=-c);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(ct.minTranslate())r.freeMode.momentumBounce?(c-t.minTranslate()>h&&(c=t.minTranslate()+h),u=t.minTranslate(),m=!0,p.allowMomentumBounce=!0):c=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-c){e=t;break}c=Math.abs(d[e]-c){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-c-t.translate)/t.velocity):Math.abs((c-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-c:c)-t.translate),i=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&p.allowMomentumBounce&&(i("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),E(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(i("_freeModeNoMomentumRelease"),t.updateProgress(c),t.setTransition(e),t.setTranslate(c),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,E(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(c),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&i("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||c>=r.longSwipesMs)&&(i("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,i,a,{swiper:r,extendParams:n,on:l}=e;n({grid:{rows:1,fill:"column"}});const o=()=>{let e=r.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*r.size:"string"==typeof e&&(e=parseFloat(e)),e};l("init",(()=>{a=r.params.grid&&r.params.grid.rows>1})),l("update",(()=>{const{params:e,el:t}=r,s=e.grid&&e.grid.rows>1;a&&!s?(t.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),i=1,r.emitContainerClasses()):!a&&s&&(t.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&t.classList.add(`${e.containerModifierClass}grid-column`),r.emitContainerClasses()),a=s})),r.grid={initSlides:e=>{const{slidesPerView:a}=r.params,{rows:n,fill:l}=r.params.grid,o=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:e.length;i=Math.floor(o/n),t=Math.floor(o/n)===o/n?o:Math.ceil(o/n)*n,"auto"!==a&&"row"===l&&(t=Math.max(t,a*n)),s=t/n},unsetSlides:()=>{r.slides&&r.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[r.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,a,n)=>{const{slidesPerGroup:l}=r.params,d=o(),{rows:p,fill:c}=r.params.grid,u=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:n.length;let m,h,f;if("row"===c&&l>1){const s=Math.floor(e/(l*p)),i=e-p*l*s,r=0===s?l:Math.min(Math.ceil((u-s*p*l)/p),l);f=Math.floor(i/r),h=i-f*r+s*l,m=h+f*t/p,a.style.order=m}else"column"===c?(h=Math.floor(e/p),f=e-h*p,(h>i||h===i&&f===p-1)&&(f+=1,f>=p&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);a.row=f,a.column=h,a.style.height=`calc((100% - ${(p-1)*d}px) / ${p})`,a.style[r.getDirectionLabel("margin-top")]=0!==f?d&&`${d}px`:"",a.swiperSlideGridSet=!0},updateWrapperSize:(e,s)=>{const{centeredSlides:i,roundLengths:a}=r.params,n=o(),{rows:l}=r.params.grid;if(r.virtualSize=(e+n)*t,r.virtualSize=Math.ceil(r.virtualSize/l)-n,r.params.cssMode||(r.wrapperEl.style[r.getDirectionLabel("width")]=`${r.virtualSize+n}px`),i){const e=[];for(let t=0;t{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),he({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const a=(e,t,s)=>{let i=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),a=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");i||(i=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(i)),a||(a=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(a)),i&&(i.style.opacity=Math.max(-t,0)),a&&(a.style.opacity=Math.max(t,0))};ue({effect:"cube",swiper:t,on:i,setTranslate:()=>{const{el:e,wrapperEl:s,slides:i,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,p=M(t),c=t.params.cubeEffect,u=t.isHorizontal(),m=t.virtual&&t.params.virtual.enabled;let h,f=0;c.shadow&&(u?(h=t.wrapperEl.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),t.wrapperEl.append(h)),h.style.height=`${r}px`):(h=e.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),e.append(h))));for(let e=0;e-1&&(f=90*s+90*d,l&&(f=90*-s-90*d)),t.style.transform=w,c.slideShadows&&a(t,d,u)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,c.shadow)if(u)h.style.transform=`translate3d(0px, ${r/2+c.shadowOffset}px, ${-r/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${c.shadowScale})`;else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=c.shadowScale,i=c.shadowScale/t,a=c.shadowOffset;h.style.transform=`scale3d(${s}, 1, ${i}) translate3d(0px, ${n/2+a}px, ${-n/2/i}px) rotateX(-89.99deg)`}const g=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${g}px) rotateX(${p(t.isHorizontal()?0:f)}deg) rotateY(${p(t.isHorizontal()?-f:0)}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:e=>{const{el:s,slides:i}=t;if(i.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);a(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const a=(e,s)=>{let i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");i||(i=fe("flip",e,t.isHorizontal()?"left":"top")),a||(a=fe("flip",e,t.isHorizontal()?"right":"bottom")),i&&(i.style.opacity=Math.max(-s,0)),a&&(a.style.opacity=Math.max(s,0))};ue({effect:"flip",swiper:t,on:i,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,i=t.params.flipEffect,r=M(t);for(let n=0;n{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),a(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),ue({effect:"coverflow",swiper:t,on:i,setTranslate:()=>{const{width:e,height:s,slides:i,slidesSizesGrid:a}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,p=r.depth,c=M(t);for(let e=0,t=i.length;e0?u:0),s&&(s.style.opacity=-u>0?-u:0)}}},setTransition:e=>{t.slides.map((e=>h(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const a=e=>"string"==typeof e?e:`${e}px`;ue({effect:"creative",swiper:t,on:i,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:i}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides,o=M(t);if(l){const e=i[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(g=r.prev,f=!0),m.forEach(((e,t)=>{m[t]=`calc(${e}px + (${a(g.translate[t])} * ${Math.abs(p*n)}))`})),h.forEach(((e,t)=>{let s=g.rotate[t]*Math.abs(p*n);h[t]=s})),i.style.zIndex=-Math.abs(Math.round(d))+e.length;const v=m.join(", "),w=`rotateX(${o(h[0])}deg) rotateY(${o(h[1])}deg) rotateZ(${o(h[2])}deg)`,b=c<0?`scale(${1+(1-g.scale)*c*n})`:`scale(${1-(1-g.scale)*c*n})`,y=c<0?1+(1-g.opacity)*c*n:1-(1-g.opacity)*c*n,x=`translate3d(${v}) ${w} ${b}`;if(f&&g.shadow||!f){let e=i.querySelector(".swiper-slide-shadow");if(!e&&g.shadow&&(e=fe("creative",i)),e){const t=r.shadowPerProgress?p*(1/r.limitProgress):p;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const E=me(0,i);E.style.transform=x,E.style.opacity=y,g.origin&&(E.style.transformOrigin=g.origin)}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),ue({effect:"cards",swiper:t,on:i,setTranslate:()=>{const{slides:e,activeIndex:s,rtlTranslate:i}=t,a=t.params.cardsEffect,{startTranslate:r,isTouched:n}=t.touchEventsData,l=i?-t.translate:t.translate;for(let o=0;o0&&c<1&&(n||t.params.cssMode)&&l-1&&(n||t.params.cssMode)&&l>r;if(y||x){const e=(1-Math.abs((Math.abs(c)-.5)/.5))**.5;v+=-28*c*e,g+=-.5*e,w+=96*e,h=-25*e*Math.abs(c)+"%"}if(m=c<0?`calc(${m}px ${i?"-":"+"} (${w*Math.abs(c)}%))`:c>0?`calc(${m}px ${i?"-":"+"} (-${w*Math.abs(c)}%))`:`${m}px`,!t.isHorizontal()){const e=h;h=m,m=e}const E=c<0?""+(1+(1-g)*c):""+(1-(1-g)*c),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${a.rotate?i?-v:v:0}deg)\n scale(${E})\n `;if(a.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=fe("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(c)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(p))+e.length;me(0,d).style.transform=S}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];ae.use(ge);const ve=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function we(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function be(e,t){const s=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>s.indexOf(e)<0)).forEach((s=>{void 0===e[s]?e[s]=t[s]:we(t[s])&&we(e[s])&&Object.keys(t[s]).length>0?t[s].__swiper__?e[s]=t[s]:be(e[s],t[s]):e[s]=t[s]}))}function ye(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}const xe=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let t;try{t=JSON.parse(e)}catch(s){t=e}return t}return e}},Ee=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function Se(e,t,s){const i={},a={};be(i,ee);const r=[...ve,"on"],n=r.map((e=>e.replace(/_/,"")));r.forEach((t=>{t=t.replace("_",""),void 0!==e[t]&&(a[t]=e[t])}));const l=[...e.attributes];return"string"==typeof t&&void 0!==s&&l.push({name:t,value:we(s)?{...s}:s}),l.forEach((e=>{const t=Ee.filter((t=>0===e.name.indexOf(`${t}-`)))[0];if(t){const s=ye(t),i=ye(e.name.split(`${t}-`)[1]);void 0===a[s]&&(a[s]={}),!0===a[s]&&(a[s]={enabled:!0}),a[s][i]=xe(e.value)}else{const t=ye(e.name);if(!n.includes(t))return;const s=xe(e.value);a[t]&&Ee.includes(e.name)&&!we(s)?(a[t].constructor!==Object&&(a[t]={}),a[t].enabled=!!s):a[t]=s}})),be(i,a),i.navigation?i.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==i.navigation?i.navigation:{}}:!1===i.navigation&&delete i.navigation,i.scrollbar?i.scrollbar={el:".swiper-scrollbar",...!0!==i.scrollbar?i.scrollbar:{}}:!1===i.scrollbar&&delete i.scrollbar,i.pagination?i.pagination={el:".swiper-pagination",...!0!==i.pagination?i.pagination:{}}:!1===i.pagination&&delete i.pagination,{params:i,passedParams:a}}const Te=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}";const Me="undefined"==typeof window||"undefined"==typeof HTMLElement?class{}:HTMLElement,Ce='\n ',Pe=(e,t)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const s=new CSSStyleSheet;s.replaceSync(t),e.adoptedStyleSheets=[s]}else{const s=document.createElement("style");s.rel="stylesheet",s.textContent=t,e.appendChild(s)}};class Le extends Me{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return Ce}static get prevButtonSvg(){return Ce.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[Te,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,t=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=t.length?Math.max(...t)+1:0,this.rendered)if(this.slideSlots>e)for(let t=e;t=0;t-=1)t>this.slideSlots&&e[t].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&Pe(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const t=document.createElement("link");t.rel="stylesheet",t.href=e,this.shadowRoot.appendChild(t)}));const t=document.createElement("div");var s;t.classList.add("swiper"),t.part="container",t.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,t)=>`\n \n \n \n `)).join("")}\n
\n \n ${s=this.passedParams,void 0===s&&(s={}),s.navigation&&void 0===s.navigation.nextEl&&void 0===s.navigation.prevEl?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${function(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}(this.passedParams)?'\n
\n ':""}\n ${function(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(t),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:t,passedParams:s}=Se(this);this.swiperParams=t,this.passedParams=s,delete this.swiperParams.init,this.render(),this.swiper=new ae(this.shadowRoot.querySelector(".swiper"),{...t.virtual?{}:{observer:!0},...t,touchEventsTarget:"container",onAny:function(s){"observerUpdate"===s&&e.calcSlideSlots();const i=t.eventsPrefix?`${t.eventsPrefix}${s.toLowerCase()}`:s.toLowerCase();for(var a=arguments.length,r=new Array(a>1?a-1:0),n=1;n"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:p,pagination:c,navigation:u,scrollbar:m,virtual:h,thumbs:f}=t;let g,v,w,b,y,x,E,S;a.includes("thumbs")&&i.thumbs&&i.thumbs.swiper&&p.thumbs&&!p.thumbs.swiper&&(g=!0),a.includes("controller")&&i.controller&&i.controller.control&&p.controller&&!p.controller.control&&(v=!0),a.includes("pagination")&&i.pagination&&(i.pagination.el||o)&&(p.pagination||!1===p.pagination)&&c&&!c.el&&(w=!0),a.includes("scrollbar")&&i.scrollbar&&(i.scrollbar.el||l)&&(p.scrollbar||!1===p.scrollbar)&&m&&!m.el&&(b=!0),a.includes("navigation")&&i.navigation&&(i.navigation.prevEl||n)&&(i.navigation.nextEl||r)&&(p.navigation||!1===p.navigation)&&u&&!u.prevEl&&!u.nextEl&&(y=!0);const T=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),p[e].prevEl=void 0,p[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),p[e].el=void 0,t[e].el=void 0))};a.includes("loop")&&t.isElement&&(p.loop&&!i.loop?x=!0:!p.loop&&i.loop?E=!0:S=!0),d.forEach((e=>{if(we(p[e])&&we(i[e]))Object.assign(p[e],i[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in i[e])||i[e].enabled||T(e);else{const t=i[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?p[e]=i[e]:!1===t&&T(e)}})),d.includes("controller")&&!v&&t.controller&&t.controller.control&&p.controller&&p.controller.control&&(t.controller.control=p.controller.control),a.includes("children")&&s&&h&&p.virtual.enabled?(h.slides=s,h.update(!0)):a.includes("virtual")&&h&&p.virtual.enabled&&(s&&(h.slides=s),h.update(!0)),a.includes("children")&&s&&p.loop&&(S=!0),g&&f.init()&&f.update(!0);v&&(t.controller.control=p.controller.control),w&&(!t.isElement||o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-pagination"),o.part.add("pagination"),t.el.appendChild(o)),o&&(p.pagination.el=o),c.init(),c.render(),c.update()),b&&(!t.isElement||l&&"string"!=typeof l||(l=document.createElement("div"),l.classList.add("swiper-scrollbar"),l.part.add("scrollbar"),t.el.appendChild(l)),l&&(p.scrollbar.el=l),m.init(),m.updateSize(),m.setTranslate()),y&&(t.isElement&&(r&&"string"!=typeof r||(r=document.createElement("div"),r.classList.add("swiper-button-next"),r.innerHTML=t.hostEl.constructor.nextButtonSvg,r.part.add("button-next"),t.el.appendChild(r)),n&&"string"!=typeof n||(n=document.createElement("div"),n.classList.add("swiper-button-prev"),n.innerHTML=t.hostEl.constructor.prevButtonSvg,n.part.add("button-prev"),t.el.appendChild(n))),r&&(p.navigation.nextEl=r),n&&(p.navigation.prevEl=n),u.init(),u.update()),a.includes("allowSlideNext")&&(t.allowSlideNext=i.allowSlideNext),a.includes("allowSlidePrev")&&(t.allowSlidePrev=i.allowSlidePrev),a.includes("direction")&&t.changeDirection(i.direction,!1),(x||S)&&t.loopDestroy(),(E||S)&&t.loopCreate(),t.update()}({swiper:this.swiper,passedParams:this.passedParams,changedParams:[ye(e)],..."navigation"===e&&i[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&i[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&i[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,t,s){this.initialized&&("true"===t&&null===s&&(s=!1),this.updateSwiperOnPropChange(e,s))}static get observedAttributes(){return ve.filter((e=>e.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}ve.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(Le.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(t){this.passedParams||(this.passedParams={}),this.passedParams[e]=t,this.initialized&&this.updateSwiperOnPropChange(e,t)}}))}));class ze extends Me{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(Pe(this.shadowRoot,"::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}"),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{ve.push(...e)}),"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",Le),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",ze))}(); +//# sourceMappingURL=swiper-element-bundle.min.js.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.min.js.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.min.js.map new file mode 100644 index 0000000..f81c554 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element-bundle.js.js","names":["isObject$2","obj","constructor","Object","extend$2","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","filter","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject$1","o","prototype","call","slice","extend$1","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix","support","deviceCached","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","beforeInit","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","targetIsButton","find","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","total","firstIndex","midIndex","classesToRemove","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","naturalWidth","imageMaxRatio","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","itemRoleDescriptionMessage","slideRole","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","r","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateFix","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY","paramsList","isObject","extend","attrToProp","attrName","l","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","name","attr","moduleParam","mParam","parentObjName","subObjName","SwiperCSS","ClassToExtend","arrowSvg","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","appendChild","SwiperContainer","super","attachShadow","mode","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","localStyles","linkEl","needsPagination","needsScrollbar","initialize","_this","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","param","configurable","SwiperSlide","lazy","lazyDiv","SwiperElementRegisterParams","customElements","define"],"sources":["0"],"mappings":";;;;;;;;;;;;CAYA,WACE,aAcA,SAASA,EAAWC,GAClB,OAAe,OAARA,GAA+B,iBAARA,GAAoB,gBAAiBA,GAAOA,EAAIC,cAAgBC,MAChG,CACA,SAASC,EAASC,EAAQC,QACT,IAAXD,IACFA,EAAS,CAAC,QAEA,IAARC,IACFA,EAAM,CAAC,GAETH,OAAOI,KAAKD,GAAKE,SAAQC,SACI,IAAhBJ,EAAOI,GAAsBJ,EAAOI,GAAOH,EAAIG,GAAcT,EAAWM,EAAIG,KAAST,EAAWK,EAAOI,KAASN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,GACxJN,EAASC,EAAOI,GAAMH,EAAIG,GAC5B,GAEJ,CACA,MAAME,EAAc,CAClBC,KAAM,CAAC,EACP,gBAAAC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBC,cAAe,CACb,IAAAC,GAAQ,EACRC,SAAU,IAEZC,cAAa,IACJ,KAETC,iBAAgB,IACP,GAETC,eAAc,IACL,KAETC,YAAW,KACF,CACL,SAAAC,GAAa,IAGjBC,cAAa,KACJ,CACLC,SAAU,GACVC,WAAY,GACZC,MAAO,CAAC,EACR,YAAAC,GAAgB,EAChBC,qBAAoB,IACX,KAIbC,gBAAe,KACN,CAAC,GAEVC,WAAU,IACD,KAETC,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,KAGZ,SAASC,IACP,MAAMC,EAA0B,oBAAbC,SAA2BA,SAAW,CAAC,EAE1D,OADAtC,EAASqC,EAAK9B,GACP8B,CACT,CACA,MAAME,EAAY,CAChBD,SAAU/B,EACViC,UAAW,CACTC,UAAW,IAEbd,SAAU,CACRC,KAAM,GACNC,KAAM,GACNC,SAAU,GACVC,KAAM,GACNC,OAAQ,GACRC,SAAU,GACVC,SAAU,GACVC,OAAQ,IAEVO,QAAS,CACP,YAAAC,GAAgB,EAChB,SAAAC,GAAa,EACb,EAAAC,GAAM,EACN,IAAAC,GAAQ,GAEVC,YAAa,WACX,OAAOC,IACT,EACA,gBAAAvC,GAAoB,EACpB,mBAAAC,GAAuB,EACvBuC,iBAAgB,KACP,CACLC,iBAAgB,IACP,KAIb,KAAAC,GAAS,EACT,IAAAC,GAAQ,EACRC,OAAQ,CAAC,EACT,UAAAC,GAAc,EACd,YAAAC,GAAgB,EAChBC,WAAU,KACD,CAAC,GAEVC,sBAAsBC,GACM,oBAAfJ,YACTI,IACO,MAEFJ,WAAWI,EAAU,GAE9B,oBAAAC,CAAqBC,GACO,oBAAfN,YAGXC,aAAaK,EACf,GAEF,SAASC,IACP,MAAMC,EAAwB,oBAAXC,OAAyBA,OAAS,CAAC,EAEtD,OADA/D,EAAS8D,EAAKvB,GACPuB,CACT,CAEA,SAASE,EAAgBC,GAIvB,YAHgB,IAAZA,IACFA,EAAU,IAELA,EAAQC,OAAOC,MAAM,KAAKC,QAAOC,KAAOA,EAAEH,QACnD,CAiBA,SAASI,EAASZ,EAAUa,GAI1B,YAHc,IAAVA,IACFA,EAAQ,GAEHjB,WAAWI,EAAUa,EAC9B,CACA,SAASC,IACP,OAAOpB,KAAKoB,KACd,CAeA,SAASC,EAAaC,EAAIC,QACX,IAATA,IACFA,EAAO,KAET,MAAMZ,EAASF,IACf,IAAIe,EACAC,EACAC,EACJ,MAAMC,EAtBR,SAA4BL,GAC1B,MAAMX,EAASF,IACf,IAAIvC,EAUJ,OATIyC,EAAOd,mBACT3B,EAAQyC,EAAOd,iBAAiByB,EAAI,QAEjCpD,GAASoD,EAAGM,eACf1D,EAAQoD,EAAGM,cAER1D,IACHA,EAAQoD,EAAGpD,OAENA,CACT,CASmB2D,CAAmBP,GA6BpC,OA5BIX,EAAOmB,iBACTL,EAAeE,EAASI,WAAaJ,EAASK,gBAC1CP,EAAaV,MAAM,KAAK7D,OAAS,IACnCuE,EAAeA,EAAaV,MAAM,MAAMkB,KAAIC,GAAKA,EAAEC,QAAQ,IAAK,OAAMC,KAAK,OAI7EV,EAAkB,IAAIf,EAAOmB,gBAAiC,SAAjBL,EAA0B,GAAKA,KAE5EC,EAAkBC,EAASU,cAAgBV,EAASW,YAAcX,EAASY,aAAeZ,EAASa,aAAeb,EAASI,WAAaJ,EAAS7B,iBAAiB,aAAaqC,QAAQ,aAAc,sBACrMX,EAASE,EAAgBe,WAAW1B,MAAM,MAE/B,MAATQ,IAE0BE,EAAxBd,EAAOmB,gBAAgCJ,EAAgBgB,IAEhC,KAAlBlB,EAAOtE,OAA8ByF,WAAWnB,EAAO,KAE5CmB,WAAWnB,EAAO,KAE3B,MAATD,IAE0BE,EAAxBd,EAAOmB,gBAAgCJ,EAAgBkB,IAEhC,KAAlBpB,EAAOtE,OAA8ByF,WAAWnB,EAAO,KAE5CmB,WAAWnB,EAAO,KAEjCC,GAAgB,CACzB,CACA,SAASoB,EAAWC,GAClB,MAAoB,iBAANA,GAAwB,OAANA,GAAcA,EAAEpG,aAAkE,WAAnDC,OAAOoG,UAAUN,SAASO,KAAKF,GAAGG,MAAM,GAAI,EAC7G,CAQA,SAASC,IACP,MAAMC,EAAKxG,OAAOyG,UAAUlG,QAAU,OAAImG,EAAYD,UAAU,IAC1DE,EAAW,CAAC,YAAa,cAAe,aAC9C,IAAK,IAAIC,EAAI,EAAGA,EAAIH,UAAUlG,OAAQqG,GAAK,EAAG,CAC5C,MAAMC,EAAaD,EAAI,GAAKH,UAAUlG,QAAUqG,OAAIF,EAAYD,UAAUG,GAC1E,GAAIC,UAZQC,EAYmDD,IAV3C,oBAAX7C,aAAwD,IAAvBA,OAAO+C,YAC1CD,aAAgBC,YAElBD,IAA2B,IAAlBA,EAAKE,UAAoC,KAAlBF,EAAKE,YAOkC,CAC1E,MAAMC,EAAYjH,OAAOI,KAAKJ,OAAO6G,IAAaxC,QAAO/D,GAAOqG,EAASO,QAAQ5G,GAAO,IACxF,IAAK,IAAI6G,EAAY,EAAGC,EAAMH,EAAU1G,OAAQ4G,EAAYC,EAAKD,GAAa,EAAG,CAC/E,MAAME,EAAUJ,EAAUE,GACpBG,EAAOtH,OAAOuH,yBAAyBV,EAAYQ,QAC5CX,IAATY,GAAsBA,EAAKE,aACzBtB,EAAWM,EAAGa,KAAanB,EAAWW,EAAWQ,IAC/CR,EAAWQ,GAASI,WACtBjB,EAAGa,GAAWR,EAAWQ,GAEzBd,EAASC,EAAGa,GAAUR,EAAWQ,KAEzBnB,EAAWM,EAAGa,KAAanB,EAAWW,EAAWQ,KAC3Db,EAAGa,GAAW,CAAC,EACXR,EAAWQ,GAASI,WACtBjB,EAAGa,GAAWR,EAAWQ,GAEzBd,EAASC,EAAGa,GAAUR,EAAWQ,KAGnCb,EAAGa,GAAWR,EAAWQ,GAG/B,CACF,CACF,CArCF,IAAgBP,EAsCd,OAAON,CACT,CACA,SAASkB,EAAe/C,EAAIgD,EAASC,GACnCjD,EAAGpD,MAAMsG,YAAYF,EAASC,EAChC,CACA,SAASE,EAAqBC,GAC5B,IAAIC,OACFA,EAAMC,eACNA,EAAcC,KACdA,GACEH,EACJ,MAAM/D,EAASF,IACTqE,GAAiBH,EAAOI,UAC9B,IACIC,EADAC,EAAY,KAEhB,MAAMC,EAAWP,EAAOQ,OAAOC,MAC/BT,EAAOU,UAAUnH,MAAMoH,eAAiB,OACxC3E,EAAOJ,qBAAqBoE,EAAOY,gBACnC,MAAMC,EAAMZ,EAAiBE,EAAgB,OAAS,OAChDW,EAAe,CAACC,EAAS7I,IACd,SAAR2I,GAAkBE,GAAW7I,GAAkB,SAAR2I,GAAkBE,GAAW7I,EAEvE8I,EAAU,KACdX,GAAO,IAAIhF,MAAO4F,UACA,OAAdX,IACFA,EAAYD,GAEd,MAAMa,EAAWC,KAAKC,IAAID,KAAKE,KAAKhB,EAAOC,GAAaC,EAAU,GAAI,GAChEe,EAAe,GAAMH,KAAKI,IAAIL,EAAWC,KAAKK,IAAM,EAC1D,IAAIC,EAAkBtB,EAAgBmB,GAAgBrB,EAAiBE,GAOvE,GANIW,EAAaW,EAAiBxB,KAChCwB,EAAkBxB,GAEpBD,EAAOU,UAAUgB,SAAS,CACxBxB,CAACA,GAAOuB,IAENX,EAAaW,EAAiBxB,GAUhC,OATAD,EAAOU,UAAUnH,MAAMoI,SAAW,SAClC3B,EAAOU,UAAUnH,MAAMoH,eAAiB,GACxCpF,YAAW,KACTyE,EAAOU,UAAUnH,MAAMoI,SAAW,GAClC3B,EAAOU,UAAUgB,SAAS,CACxBxB,CAACA,GAAOuB,GACR,SAEJzF,EAAOJ,qBAAqBoE,EAAOY,gBAGrCZ,EAAOY,eAAiB5E,EAAON,sBAAsBsF,EAAQ,EAE/DA,GACF,CACA,SAASY,EAAoBC,GAC3B,OAAOA,EAAQ9I,cAAc,4BAA8B8I,EAAQC,YAAcD,EAAQC,WAAW/I,cAAc,4BAA8B8I,CAClJ,CACA,SAASE,EAAgBC,EAASC,QACf,IAAbA,IACFA,EAAW,IAEb,MAAM5I,EAAW,IAAI2I,EAAQ3I,UAI7B,OAHI2I,aAAmBE,iBACrB7I,EAAS8I,QAAQH,EAAQI,oBAEtBH,EAGE5I,EAASgD,QAAOM,GAAMA,EAAG0F,QAAQJ,KAF/B5I,CAGX,CASA,SAASiJ,EAAYC,GACnB,IAEE,YADAC,QAAQC,KAAKF,EAEf,CAAE,MAAOG,GAET,CACF,CACA,SAAStJ,EAAcuJ,EAAKzG,QACV,IAAZA,IACFA,EAAU,IAEZ,MAAMS,EAAKpC,SAASnB,cAAcuJ,GAElC,OADAhG,EAAGiG,UAAUC,OAAQC,MAAMC,QAAQ7G,GAAWA,EAAUD,EAAgBC,IACjES,CACT,CACA,SAASqG,EAAcrG,GACrB,MAAMX,EAASF,IACTvB,EAAWF,IACX4I,EAAMtG,EAAGuG,wBACTzK,EAAO8B,EAAS9B,KAChB0K,EAAYxG,EAAGwG,WAAa1K,EAAK0K,WAAa,EAC9CC,EAAazG,EAAGyG,YAAc3K,EAAK2K,YAAc,EACjDC,EAAY1G,IAAOX,EAASA,EAAOsH,QAAU3G,EAAG0G,UAChDE,EAAa5G,IAAOX,EAASA,EAAOwH,QAAU7G,EAAG4G,WACvD,MAAO,CACLE,IAAKR,EAAIQ,IAAMJ,EAAYF,EAC3BO,KAAMT,EAAIS,KAAOH,EAAaH,EAElC,CAuBA,SAASO,EAAahH,EAAIiH,GAExB,OADe9H,IACDZ,iBAAiByB,EAAI,MAAMxB,iBAAiByI,EAC5D,CACA,SAASC,EAAalH,GACpB,IACIiC,EADAkF,EAAQnH,EAEZ,GAAImH,EAAO,CAGT,IAFAlF,EAAI,EAEuC,QAAnCkF,EAAQA,EAAMC,kBACG,IAAnBD,EAAM9E,WAAgBJ,GAAK,GAEjC,OAAOA,CACT,CAEF,CACA,SAASoF,EAAerH,EAAIsF,GAC1B,MAAMgC,EAAU,GAChB,IAAIC,EAASvH,EAAGwH,cAChB,KAAOD,GACDjC,EACEiC,EAAO7B,QAAQJ,IAAWgC,EAAQ9B,KAAK+B,GAE3CD,EAAQ9B,KAAK+B,GAEfA,EAASA,EAAOC,cAElB,OAAOF,CACT,CACA,SAASG,EAAqBzH,EAAIhB,GAM5BA,GACFgB,EAAGjE,iBAAiB,iBANtB,SAAS2L,EAAaC,GAChBA,EAAEpM,SAAWyE,IACjBhB,EAAS0C,KAAK1B,EAAI2H,GAClB3H,EAAGhE,oBAAoB,gBAAiB0L,GAC1C,GAIF,CACA,SAASE,EAAiB5H,EAAI6H,EAAMC,GAClC,MAAMzI,EAASF,IACf,OAAI2I,EACK9H,EAAY,UAAT6H,EAAmB,cAAgB,gBAAkBxG,WAAWhC,EAAOd,iBAAiByB,EAAI,MAAMxB,iBAA0B,UAATqJ,EAAmB,eAAiB,eAAiBxG,WAAWhC,EAAOd,iBAAiByB,EAAI,MAAMxB,iBAA0B,UAATqJ,EAAmB,cAAgB,kBAE9Q7H,EAAG+H,WACZ,CACA,SAASC,EAAkBhI,GACzB,OAAQmG,MAAMC,QAAQpG,GAAMA,EAAK,CAACA,IAAKN,QAAOiI,KAAOA,GACvD,CACA,SAASM,EAAa5E,GACpB,OAAO6E,GACD1D,KAAK2D,IAAID,GAAK,GAAK7E,EAAO+E,SAAW/E,EAAO+E,QAAQC,WAAa7D,KAAK2D,IAAID,GAAK,IAAO,EACjFA,EAAI,KAENA,CAEX,CAEA,IAAII,EAgBAC,EAqDAH,EA5DJ,SAASI,IAIP,OAHKF,IACHA,EAVJ,WACE,MAAMjJ,EAASF,IACTvB,EAAWF,IACjB,MAAO,CACL+K,aAAc7K,EAAS8K,iBAAmB9K,EAAS8K,gBAAgB9L,OAAS,mBAAoBgB,EAAS8K,gBAAgB9L,MACzH+L,SAAU,iBAAkBtJ,GAAUA,EAAOuJ,eAAiBhL,aAAoByB,EAAOuJ,eAE7F,CAGcC,IAELP,CACT,CA6CA,SAASQ,EAAUC,GAOjB,YANkB,IAAdA,IACFA,EAAY,CAAC,GAEVR,IACHA,EA/CJ,SAAoBS,GAClB,IAAIjL,UACFA,QACY,IAAViL,EAAmB,CAAC,EAAIA,EAC5B,MAAMV,EAAUE,IACVnJ,EAASF,IACT8J,EAAW5J,EAAOvB,UAAUmL,SAC5BC,EAAKnL,GAAasB,EAAOvB,UAAUC,UACnCoL,EAAS,CACbC,KAAK,EACLC,SAAS,GAELC,EAAcjK,EAAOV,OAAO4K,MAC5BC,EAAenK,EAAOV,OAAO8K,OAC7BJ,EAAUH,EAAGQ,MAAM,+BACzB,IAAIC,EAAOT,EAAGQ,MAAM,wBACpB,MAAME,EAAOV,EAAGQ,MAAM,2BAChBG,GAAUF,GAAQT,EAAGQ,MAAM,8BAC3BI,EAAuB,UAAbb,EAChB,IAAIc,EAAqB,aAAbd,EAqBZ,OAjBKU,GAAQI,GAASzB,EAAQK,OADV,CAAC,YAAa,YAAa,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,WAAY,YACxGpG,QAAQ,GAAG+G,KAAeE,MAAmB,IAC9FG,EAAOT,EAAGQ,MAAM,uBACXC,IAAMA,EAAO,CAAC,EAAG,EAAG,WACzBI,GAAQ,GAINV,IAAYS,IACdX,EAAOa,GAAK,UACZb,EAAOE,SAAU,IAEfM,GAAQE,GAAUD,KACpBT,EAAOa,GAAK,MACZb,EAAOC,KAAM,GAIRD,CACT,CAMmBc,CAAWlB,IAErBR,CACT,CA4BA,SAAS2B,IAIP,OAHK9B,IACHA,EA3BJ,WACE,MAAM/I,EAASF,IACTgK,EAASL,IACf,IAAIqB,GAAqB,EACzB,SAASC,IACP,MAAMlB,EAAK7J,EAAOvB,UAAUC,UAAUsM,cACtC,OAAOnB,EAAG3G,QAAQ,WAAa,GAAK2G,EAAG3G,QAAQ,UAAY,GAAK2G,EAAG3G,QAAQ,WAAa,CAC1F,CACA,GAAI6H,IAAY,CACd,MAAMlB,EAAKoB,OAAOjL,EAAOvB,UAAUC,WACnC,GAAImL,EAAGqB,SAAS,YAAa,CAC3B,MAAOC,EAAOC,GAASvB,EAAGzJ,MAAM,YAAY,GAAGA,MAAM,KAAK,GAAGA,MAAM,KAAKkB,KAAI+J,GAAOC,OAAOD,KAC1FP,EAAqBK,EAAQ,IAAgB,KAAVA,GAAgBC,EAAQ,CAC7D,CACF,CACA,MAAMG,EAAY,+CAA+CC,KAAKxL,EAAOvB,UAAUC,WACjF+M,EAAkBV,IAExB,MAAO,CACLA,SAAUD,GAAsBW,EAChCX,qBACA9B,UAJgByC,GAAmBF,GAAazB,EAAOC,IAKvDwB,YAEJ,CAGcG,IAEL3C,CACT,CAiJA,IAAI4C,EAAgB,CAClB,EAAAC,CAAGC,EAAQC,EAASC,GAClB,MAAMC,EAAO/M,KACb,IAAK+M,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,GAAuB,mBAAZF,EAAwB,OAAOE,EAC1C,MAAMG,EAASJ,EAAW,UAAY,OAKtC,OAJAF,EAAOzL,MAAM,KAAK/D,SAAQ+P,IACnBJ,EAAKC,gBAAgBG,KAAQJ,EAAKC,gBAAgBG,GAAS,IAChEJ,EAAKC,gBAAgBG,GAAOD,GAAQL,EAAQ,IAEvCE,CACT,EACA,IAAAK,CAAKR,EAAQC,EAASC,GACpB,MAAMC,EAAO/M,KACb,IAAK+M,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,GAAuB,mBAAZF,EAAwB,OAAOE,EAC1C,SAASM,IACPN,EAAKO,IAAIV,EAAQS,GACbA,EAAYE,uBACPF,EAAYE,eAErB,IAAK,IAAIC,EAAOhK,UAAUlG,OAAQmQ,EAAO,IAAI5F,MAAM2F,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQlK,UAAUkK,GAEzBb,EAAQc,MAAMZ,EAAMU,EACtB,CAEA,OADAJ,EAAYE,eAAiBV,EACtBE,EAAKJ,GAAGC,EAAQS,EAAaP,EACtC,EACA,KAAAc,CAAMf,EAASC,GACb,MAAMC,EAAO/M,KACb,IAAK+M,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,GAAuB,mBAAZF,EAAwB,OAAOE,EAC1C,MAAMG,EAASJ,EAAW,UAAY,OAItC,OAHIC,EAAKc,mBAAmB5J,QAAQ4I,GAAW,GAC7CE,EAAKc,mBAAmBX,GAAQL,GAE3BE,CACT,EACA,MAAAe,CAAOjB,GACL,MAAME,EAAO/M,KACb,IAAK+M,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,IAAKA,EAAKc,mBAAoB,OAAOd,EACrC,MAAMgB,EAAQhB,EAAKc,mBAAmB5J,QAAQ4I,GAI9C,OAHIkB,GAAS,GACXhB,EAAKc,mBAAmBG,OAAOD,EAAO,GAEjChB,CACT,EACA,GAAAO,CAAIV,EAAQC,GACV,MAAME,EAAO/M,KACb,OAAK+M,EAAKC,iBAAmBD,EAAKE,UAAkBF,EAC/CA,EAAKC,iBACVJ,EAAOzL,MAAM,KAAK/D,SAAQ+P,SACD,IAAZN,EACTE,EAAKC,gBAAgBG,GAAS,GACrBJ,EAAKC,gBAAgBG,IAC9BJ,EAAKC,gBAAgBG,GAAO/P,SAAQ,CAAC6Q,EAAcF,MAC7CE,IAAiBpB,GAAWoB,EAAaV,gBAAkBU,EAAaV,iBAAmBV,IAC7FE,EAAKC,gBAAgBG,GAAOa,OAAOD,EAAO,EAC5C,GAEJ,IAEKhB,GAZ2BA,CAapC,EACA,IAAAmB,GACE,MAAMnB,EAAO/M,KACb,IAAK+M,EAAKC,iBAAmBD,EAAKE,UAAW,OAAOF,EACpD,IAAKA,EAAKC,gBAAiB,OAAOD,EAClC,IAAIH,EACAuB,EACAC,EACJ,IAAK,IAAIC,EAAQ7K,UAAUlG,OAAQmQ,EAAO,IAAI5F,MAAMwG,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFb,EAAKa,GAAS9K,UAAU8K,GAEH,iBAAZb,EAAK,IAAmB5F,MAAMC,QAAQ2F,EAAK,KACpDb,EAASa,EAAK,GACdU,EAAOV,EAAKpK,MAAM,EAAGoK,EAAKnQ,QAC1B8Q,EAAUrB,IAEVH,EAASa,EAAK,GAAGb,OACjBuB,EAAOV,EAAK,GAAGU,KACfC,EAAUX,EAAK,GAAGW,SAAWrB,GAE/BoB,EAAKI,QAAQH,GAcb,OAboBvG,MAAMC,QAAQ8E,GAAUA,EAASA,EAAOzL,MAAM,MACtD/D,SAAQ+P,IACdJ,EAAKc,oBAAsBd,EAAKc,mBAAmBvQ,QACrDyP,EAAKc,mBAAmBzQ,SAAQ6Q,IAC9BA,EAAaN,MAAMS,EAAS,CAACjB,KAAUgB,GAAM,IAG7CpB,EAAKC,iBAAmBD,EAAKC,gBAAgBG,IAC/CJ,EAAKC,gBAAgBG,GAAO/P,SAAQ6Q,IAClCA,EAAaN,MAAMS,EAASD,EAAK,GAErC,IAEKpB,CACT,GA6WF,MAAMyB,EAAuB,CAAC5H,EAAS6H,EAAWC,KAC5CD,IAAc7H,EAAQe,UAAUgH,SAASD,GAC3C9H,EAAQe,UAAUC,IAAI8G,IACZD,GAAa7H,EAAQe,UAAUgH,SAASD,IAClD9H,EAAQe,UAAUiH,OAAOF,EAC3B,EA+GF,MAAMG,EAAqB,CAACjI,EAAS6H,EAAWC,KAC1CD,IAAc7H,EAAQe,UAAUgH,SAASD,GAC3C9H,EAAQe,UAAUC,IAAI8G,IACZD,GAAa7H,EAAQe,UAAUgH,SAASD,IAClD9H,EAAQe,UAAUiH,OAAOF,EAC3B,EA2DF,MAAMI,EAAuB,CAAC/J,EAAQgK,KACpC,IAAKhK,GAAUA,EAAOkI,YAAclI,EAAOQ,OAAQ,OACnD,MACMqB,EAAUmI,EAAQC,QADIjK,EAAOkK,UAAY,eAAiB,IAAIlK,EAAOQ,OAAO2J,cAElF,GAAItI,EAAS,CACX,IAAIuI,EAASvI,EAAQ9I,cAAc,IAAIiH,EAAOQ,OAAO6J,uBAChDD,GAAUpK,EAAOkK,YAChBrI,EAAQC,WACVsI,EAASvI,EAAQC,WAAW/I,cAAc,IAAIiH,EAAOQ,OAAO6J,sBAG5D3O,uBAAsB,KAChBmG,EAAQC,aACVsI,EAASvI,EAAQC,WAAW/I,cAAc,IAAIiH,EAAOQ,OAAO6J,sBACxDD,GAAQA,EAAOP,SACrB,KAIFO,GAAQA,EAAOP,QACrB,GAEIS,EAAS,CAACtK,EAAQgJ,KACtB,IAAKhJ,EAAOuK,OAAOvB,GAAQ,OAC3B,MAAMgB,EAAUhK,EAAOuK,OAAOvB,GAAOjQ,cAAc,oBAC/CiR,GAASA,EAAQQ,gBAAgB,UAAU,EAE3CC,EAAUzK,IACd,IAAKA,GAAUA,EAAOkI,YAAclI,EAAOQ,OAAQ,OACnD,IAAIkK,EAAS1K,EAAOQ,OAAOmK,oBAC3B,MAAMvL,EAAMY,EAAOuK,OAAOhS,OAC1B,IAAK6G,IAAQsL,GAAUA,EAAS,EAAG,OACnCA,EAASvJ,KAAKE,IAAIqJ,EAAQtL,GAC1B,MAAMwL,EAAgD,SAAhC5K,EAAOQ,OAAOoK,cAA2B5K,EAAO6K,uBAAyB1J,KAAK2J,KAAK9K,EAAOQ,OAAOoK,eACjHG,EAAc/K,EAAO+K,YAC3B,GAAI/K,EAAOQ,OAAOwK,MAAQhL,EAAOQ,OAAOwK,KAAKC,KAAO,EAAG,CACrD,MAAMC,EAAeH,EACfI,EAAiB,CAACD,EAAeR,GASvC,OARAS,EAAehJ,QAAQW,MAAMsI,KAAK,CAChC7S,OAAQmS,IACPpN,KAAI,CAAC+N,EAAGzM,IACFsM,EAAeN,EAAgBhM,UAExCoB,EAAOuK,OAAOlS,SAAQ,CAACwJ,EAASjD,KAC1BuM,EAAejE,SAASrF,EAAQyJ,SAAShB,EAAOtK,EAAQpB,EAAE,GAGlE,CACA,MAAM2M,EAAuBR,EAAcH,EAAgB,EAC3D,GAAI5K,EAAOQ,OAAOgL,QAAUxL,EAAOQ,OAAOiL,KACxC,IAAK,IAAI7M,EAAImM,EAAcL,EAAQ9L,GAAK2M,EAAuBb,EAAQ9L,GAAK,EAAG,CAC7E,MAAM8M,GAAa9M,EAAIQ,EAAMA,GAAOA,GAChCsM,EAAYX,GAAeW,EAAYH,IAAsBjB,EAAOtK,EAAQ0L,EAClF,MAEA,IAAK,IAAI9M,EAAIuC,KAAKC,IAAI2J,EAAcL,EAAQ,GAAI9L,GAAKuC,KAAKE,IAAIkK,EAAuBb,EAAQtL,EAAM,GAAIR,GAAK,EACtGA,IAAMmM,IAAgBnM,EAAI2M,GAAwB3M,EAAImM,IACxDT,EAAOtK,EAAQpB,EAGrB,EAyJF,IAAI+M,EAAS,CACXC,WApvBF,WACE,MAAM5L,EAAS/E,KACf,IAAIiL,EACAE,EACJ,MAAMzJ,EAAKqD,EAAOrD,GAEhBuJ,OADiC,IAAxBlG,EAAOQ,OAAO0F,OAAiD,OAAxBlG,EAAOQ,OAAO0F,MACtDlG,EAAOQ,OAAO0F,MAEdvJ,EAAGkP,YAGXzF,OADkC,IAAzBpG,EAAOQ,OAAO4F,QAAmD,OAAzBpG,EAAOQ,OAAO4F,OACtDpG,EAAOQ,OAAO4F,OAEdzJ,EAAGmP,aAEA,IAAV5F,GAAelG,EAAO+L,gBAA6B,IAAX3F,GAAgBpG,EAAOgM,eAKnE9F,EAAQA,EAAQ+F,SAAStI,EAAahH,EAAI,iBAAmB,EAAG,IAAMsP,SAAStI,EAAahH,EAAI,kBAAoB,EAAG,IACvHyJ,EAASA,EAAS6F,SAAStI,EAAahH,EAAI,gBAAkB,EAAG,IAAMsP,SAAStI,EAAahH,EAAI,mBAAqB,EAAG,IACrH2K,OAAO4E,MAAMhG,KAAQA,EAAQ,GAC7BoB,OAAO4E,MAAM9F,KAASA,EAAS,GACnCpO,OAAOmU,OAAOnM,EAAQ,CACpBkG,QACAE,SACA5B,KAAMxE,EAAO+L,eAAiB7F,EAAQE,IAE1C,EAwtBEgG,aAttBF,WACE,MAAMpM,EAAS/E,KACf,SAASoR,EAA0BvN,EAAMwN,GACvC,OAAOtO,WAAWc,EAAK3D,iBAAiB6E,EAAOuM,kBAAkBD,KAAW,EAC9E,CACA,MAAM9L,EAASR,EAAOQ,QAChBE,UACJA,EAAS8L,SACTA,EACAhI,KAAMiI,EACNC,aAAcC,EAAGC,SACjBA,GACE5M,EACE6M,EAAY7M,EAAO8M,SAAWtM,EAAOsM,QAAQC,QAC7CC,EAAuBH,EAAY7M,EAAO8M,QAAQvC,OAAOhS,OAASyH,EAAOuK,OAAOhS,OAChFgS,EAASxI,EAAgByK,EAAU,IAAIxM,EAAOQ,OAAO2J,4BACrD8C,EAAeJ,EAAY7M,EAAO8M,QAAQvC,OAAOhS,OAASgS,EAAOhS,OACvE,IAAI2U,EAAW,GACf,MAAMC,EAAa,GACbC,EAAkB,GACxB,IAAIC,EAAe7M,EAAO8M,mBACE,mBAAjBD,IACTA,EAAe7M,EAAO8M,mBAAmBjP,KAAK2B,IAEhD,IAAIuN,EAAc/M,EAAOgN,kBACE,mBAAhBD,IACTA,EAAc/M,EAAOgN,kBAAkBnP,KAAK2B,IAE9C,MAAMyN,EAAyBzN,EAAOkN,SAAS3U,OACzCmV,EAA2B1N,EAAOmN,WAAW5U,OACnD,IAAIoV,EAAenN,EAAOmN,aACtBC,GAAiBP,EACjBQ,EAAgB,EAChB7E,EAAQ,EACZ,QAA0B,IAAfyD,EACT,OAE0B,iBAAjBkB,GAA6BA,EAAazO,QAAQ,MAAQ,EACnEyO,EAAe3P,WAAW2P,EAAanQ,QAAQ,IAAK,KAAO,IAAMiP,EAChC,iBAAjBkB,IAChBA,EAAe3P,WAAW2P,IAE5B3N,EAAO8N,aAAeH,EAGtBpD,EAAOlS,SAAQwJ,IACT8K,EACF9K,EAAQtI,MAAMwU,WAAa,GAE3BlM,EAAQtI,MAAMyU,YAAc,GAE9BnM,EAAQtI,MAAM0U,aAAe,GAC7BpM,EAAQtI,MAAM2U,UAAY,EAAE,IAI1B1N,EAAO2N,gBAAkB3N,EAAO4N,UAClC1O,EAAegB,EAAW,kCAAmC,IAC7DhB,EAAegB,EAAW,iCAAkC,KAE9D,MAAM2N,EAAc7N,EAAOwK,MAAQxK,EAAOwK,KAAKC,KAAO,GAAKjL,EAAOgL,KAQlE,IAAIsD,EAPAD,EACFrO,EAAOgL,KAAKuD,WAAWhE,GACdvK,EAAOgL,MAChBhL,EAAOgL,KAAKwD,cAKd,MAAMC,EAAgD,SAAzBjO,EAAOoK,eAA4BpK,EAAOkO,aAAe1W,OAAOI,KAAKoI,EAAOkO,aAAarS,QAAO/D,QACnE,IAA1CkI,EAAOkO,YAAYpW,GAAKsS,gBACrCrS,OAAS,EACZ,IAAK,IAAIqG,EAAI,EAAGA,EAAIqO,EAAcrO,GAAK,EAAG,CAExC,IAAI+P,EAKJ,GANAL,EAAY,EAER/D,EAAO3L,KAAI+P,EAAQpE,EAAO3L,IAC1ByP,GACFrO,EAAOgL,KAAK4D,YAAYhQ,EAAG+P,EAAOpE,IAEhCA,EAAO3L,IAAyC,SAAnC+E,EAAagL,EAAO,WAArC,CAEA,GAA6B,SAAzBnO,EAAOoK,cAA0B,CAC/B6D,IACFlE,EAAO3L,GAAGrF,MAAMyG,EAAOuM,kBAAkB,UAAY,IAEvD,MAAMsC,EAAc3T,iBAAiByT,GAC/BG,EAAmBH,EAAMpV,MAAM6D,UAC/B2R,EAAyBJ,EAAMpV,MAAM8D,gBAO3C,GANIyR,IACFH,EAAMpV,MAAM6D,UAAY,QAEtB2R,IACFJ,EAAMpV,MAAM8D,gBAAkB,QAE5BmD,EAAOwO,aACTV,EAAYtO,EAAO+L,eAAiBxH,EAAiBoK,EAAO,SAAS,GAAQpK,EAAiBoK,EAAO,UAAU,OAC1G,CAEL,MAAMzI,EAAQmG,EAA0BwC,EAAa,SAC/CI,EAAc5C,EAA0BwC,EAAa,gBACrDK,EAAe7C,EAA0BwC,EAAa,iBACtDd,EAAa1B,EAA0BwC,EAAa,eACpDb,EAAc3B,EAA0BwC,EAAa,gBACrDM,EAAYN,EAAY1T,iBAAiB,cAC/C,GAAIgU,GAA2B,eAAdA,EACfb,EAAYpI,EAAQ6H,EAAaC,MAC5B,CACL,MAAMnC,YACJA,EAAWnH,YACXA,GACEiK,EACJL,EAAYpI,EAAQ+I,EAAcC,EAAenB,EAAaC,GAAetJ,EAAcmH,EAC7F,CACF,CACIiD,IACFH,EAAMpV,MAAM6D,UAAY0R,GAEtBC,IACFJ,EAAMpV,MAAM8D,gBAAkB0R,GAE5BvO,EAAOwO,eAAcV,EAAYnN,KAAKiO,MAAMd,GAClD,MACEA,GAAa7B,GAAcjM,EAAOoK,cAAgB,GAAK+C,GAAgBnN,EAAOoK,cAC1EpK,EAAOwO,eAAcV,EAAYnN,KAAKiO,MAAMd,IAC5C/D,EAAO3L,KACT2L,EAAO3L,GAAGrF,MAAMyG,EAAOuM,kBAAkB,UAAY,GAAG+B,OAGxD/D,EAAO3L,KACT2L,EAAO3L,GAAGyQ,gBAAkBf,GAE9BlB,EAAgBjL,KAAKmM,GACjB9N,EAAO2N,gBACTP,EAAgBA,EAAgBU,EAAY,EAAIT,EAAgB,EAAIF,EAC9C,IAAlBE,GAA6B,IAANjP,IAASgP,EAAgBA,EAAgBnB,EAAa,EAAIkB,GAC3E,IAAN/O,IAASgP,EAAgBA,EAAgBnB,EAAa,EAAIkB,GAC1DxM,KAAK2D,IAAI8I,GAAiB,OAAUA,EAAgB,GACpDpN,EAAOwO,eAAcpB,EAAgBzM,KAAKiO,MAAMxB,IAChD5E,EAAQxI,EAAO8O,gBAAmB,GAAGpC,EAAS/K,KAAKyL,GACvDT,EAAWhL,KAAKyL,KAEZpN,EAAOwO,eAAcpB,EAAgBzM,KAAKiO,MAAMxB,KAC/C5E,EAAQ7H,KAAKE,IAAIrB,EAAOQ,OAAO+O,mBAAoBvG,IAAUhJ,EAAOQ,OAAO8O,gBAAmB,GAAGpC,EAAS/K,KAAKyL,GACpHT,EAAWhL,KAAKyL,GAChBA,EAAgBA,EAAgBU,EAAYX,GAE9C3N,EAAO8N,aAAeQ,EAAYX,EAClCE,EAAgBS,EAChBtF,GAAS,CArE2D,CAsEtE,CAaA,GAZAhJ,EAAO8N,YAAc3M,KAAKC,IAAIpB,EAAO8N,YAAarB,GAAcc,EAC5DZ,GAAOC,IAA+B,UAAlBpM,EAAOgP,QAAwC,cAAlBhP,EAAOgP,UAC1D9O,EAAUnH,MAAM2M,MAAQ,GAAGlG,EAAO8N,YAAcH,OAE9CnN,EAAOiP,iBACT/O,EAAUnH,MAAMyG,EAAOuM,kBAAkB,UAAY,GAAGvM,EAAO8N,YAAcH,OAE3EU,GACFrO,EAAOgL,KAAK0E,kBAAkBpB,EAAWpB,IAItC1M,EAAO2N,eAAgB,CAC1B,MAAMwB,EAAgB,GACtB,IAAK,IAAI/Q,EAAI,EAAGA,EAAIsO,EAAS3U,OAAQqG,GAAK,EAAG,CAC3C,IAAIgR,EAAiB1C,EAAStO,GAC1B4B,EAAOwO,eAAcY,EAAiBzO,KAAKiO,MAAMQ,IACjD1C,EAAStO,IAAMoB,EAAO8N,YAAcrB,GACtCkD,EAAcxN,KAAKyN,EAEvB,CACA1C,EAAWyC,EACPxO,KAAKiO,MAAMpP,EAAO8N,YAAcrB,GAActL,KAAKiO,MAAMlC,EAASA,EAAS3U,OAAS,IAAM,GAC5F2U,EAAS/K,KAAKnC,EAAO8N,YAAcrB,EAEvC,CACA,GAAII,GAAarM,EAAOiL,KAAM,CAC5B,MAAMjH,EAAO4I,EAAgB,GAAKO,EAClC,GAAInN,EAAO8O,eAAiB,EAAG,CAC7B,MAAMO,EAAS1O,KAAK2J,MAAM9K,EAAO8M,QAAQgD,aAAe9P,EAAO8M,QAAQiD,aAAevP,EAAO8O,gBACvFU,EAAYxL,EAAOhE,EAAO8O,eAChC,IAAK,IAAI1Q,EAAI,EAAGA,EAAIiR,EAAQjR,GAAK,EAC/BsO,EAAS/K,KAAK+K,EAASA,EAAS3U,OAAS,GAAKyX,EAElD,CACA,IAAK,IAAIpR,EAAI,EAAGA,EAAIoB,EAAO8M,QAAQgD,aAAe9P,EAAO8M,QAAQiD,YAAanR,GAAK,EACnD,IAA1B4B,EAAO8O,gBACTpC,EAAS/K,KAAK+K,EAASA,EAAS3U,OAAS,GAAKiM,GAEhD2I,EAAWhL,KAAKgL,EAAWA,EAAW5U,OAAS,GAAKiM,GACpDxE,EAAO8N,aAAetJ,CAE1B,CAEA,GADwB,IAApB0I,EAAS3U,SAAc2U,EAAW,CAAC,IAClB,IAAjBS,EAAoB,CACtB,MAAMrV,EAAM0H,EAAO+L,gBAAkBY,EAAM,aAAe3M,EAAOuM,kBAAkB,eACnFhC,EAAOlO,QAAO,CAACgP,EAAG4E,MACXzP,EAAO4N,UAAW5N,EAAOiL,OAC1BwE,IAAe1F,EAAOhS,OAAS,IAIlCF,SAAQwJ,IACTA,EAAQtI,MAAMjB,GAAO,GAAGqV,KAAgB,GAE5C,CACA,GAAInN,EAAO2N,gBAAkB3N,EAAO0P,qBAAsB,CACxD,IAAIC,EAAgB,EACpB/C,EAAgB/U,SAAQ+X,IACtBD,GAAiBC,GAAkBzC,GAAgB,EAAE,IAEvDwC,GAAiBxC,EACjB,MAAM0C,EAAUF,EAAgB1D,EAChCS,EAAWA,EAAS5P,KAAIgT,GAClBA,GAAQ,GAAWjD,EACnBiD,EAAOD,EAAgBA,EAAU9C,EAC9B+C,GAEX,CACA,GAAI9P,EAAO+P,yBAA0B,CACnC,IAAIJ,EAAgB,EACpB/C,EAAgB/U,SAAQ+X,IACtBD,GAAiBC,GAAkBzC,GAAgB,EAAE,IAEvDwC,GAAiBxC,EACjB,MAAM6C,GAAchQ,EAAO8M,oBAAsB,IAAM9M,EAAOgN,mBAAqB,GACnF,GAAI2C,EAAgBK,EAAa/D,EAAY,CAC3C,MAAMgE,GAAmBhE,EAAa0D,EAAgBK,GAAc,EACpEtD,EAAS7U,SAAQ,CAACiY,EAAMI,KACtBxD,EAASwD,GAAaJ,EAAOG,CAAe,IAE9CtD,EAAW9U,SAAQ,CAACiY,EAAMI,KACxBvD,EAAWuD,GAAaJ,EAAOG,CAAe,GAElD,CACF,CAOA,GANAzY,OAAOmU,OAAOnM,EAAQ,CACpBuK,SACA2C,WACAC,aACAC,oBAEE5M,EAAO2N,gBAAkB3N,EAAO4N,UAAY5N,EAAO0P,qBAAsB,CAC3ExQ,EAAegB,EAAW,mCAAuCwM,EAAS,GAAb,MAC7DxN,EAAegB,EAAW,iCAAqCV,EAAOwE,KAAO,EAAI4I,EAAgBA,EAAgB7U,OAAS,GAAK,EAAnE,MAC5D,MAAMoY,GAAiB3Q,EAAOkN,SAAS,GACjC0D,GAAmB5Q,EAAOmN,WAAW,GAC3CnN,EAAOkN,SAAWlN,EAAOkN,SAAS5P,KAAIuH,GAAKA,EAAI8L,IAC/C3Q,EAAOmN,WAAanN,EAAOmN,WAAW7P,KAAIuH,GAAKA,EAAI+L,GACrD,CAeA,GAdI3D,IAAiBD,GACnBhN,EAAOmJ,KAAK,sBAEV+D,EAAS3U,SAAWkV,IAClBzN,EAAOQ,OAAOqQ,eAAe7Q,EAAO8Q,gBACxC9Q,EAAOmJ,KAAK,yBAEVgE,EAAW5U,SAAWmV,GACxB1N,EAAOmJ,KAAK,0BAEV3I,EAAOuQ,qBACT/Q,EAAOgR,qBAEThR,EAAOmJ,KAAK,mBACP0D,GAAcrM,EAAO4N,SAA8B,UAAlB5N,EAAOgP,QAAwC,SAAlBhP,EAAOgP,QAAoB,CAC5F,MAAMyB,EAAsB,GAAGzQ,EAAO0Q,wCAChCC,EAA6BnR,EAAOrD,GAAGiG,UAAUgH,SAASqH,GAC5DhE,GAAgBzM,EAAO4Q,wBACpBD,GAA4BnR,EAAOrD,GAAGiG,UAAUC,IAAIoO,GAChDE,GACTnR,EAAOrD,GAAGiG,UAAUiH,OAAOoH,EAE/B,CACF,EAscEI,iBApcF,SAA0B5Q,GACxB,MAAMT,EAAS/E,KACTqW,EAAe,GACfzE,EAAY7M,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAC1D,IACInO,EADA2S,EAAY,EAEK,iBAAV9Q,EACTT,EAAOwR,cAAc/Q,IACF,IAAVA,GACTT,EAAOwR,cAAcxR,EAAOQ,OAAOC,OAErC,MAAMgR,EAAkBzI,GAClB6D,EACK7M,EAAOuK,OAAOvK,EAAO0R,oBAAoB1I,IAE3ChJ,EAAOuK,OAAOvB,GAGvB,GAAoC,SAAhChJ,EAAOQ,OAAOoK,eAA4B5K,EAAOQ,OAAOoK,cAAgB,EAC1E,GAAI5K,EAAOQ,OAAO2N,gBACfnO,EAAO2R,eAAiB,IAAItZ,SAAQsW,IACnC2C,EAAanP,KAAKwM,EAAM,SAG1B,IAAK/P,EAAI,EAAGA,EAAIuC,KAAK2J,KAAK9K,EAAOQ,OAAOoK,eAAgBhM,GAAK,EAAG,CAC9D,MAAMoK,EAAQhJ,EAAO+K,YAAcnM,EACnC,GAAIoK,EAAQhJ,EAAOuK,OAAOhS,SAAWsU,EAAW,MAChDyE,EAAanP,KAAKsP,EAAgBzI,GACpC,MAGFsI,EAAanP,KAAKsP,EAAgBzR,EAAO+K,cAI3C,IAAKnM,EAAI,EAAGA,EAAI0S,EAAa/Y,OAAQqG,GAAK,EACxC,QAA+B,IAApB0S,EAAa1S,GAAoB,CAC1C,MAAMwH,EAASkL,EAAa1S,GAAGgT,aAC/BL,EAAYnL,EAASmL,EAAYnL,EAASmL,CAC5C,EAIEA,GAA2B,IAAdA,KAAiBvR,EAAOU,UAAUnH,MAAM6M,OAAS,GAAGmL,MACvE,EAyZEP,mBAvZF,WACE,MAAMhR,EAAS/E,KACTsP,EAASvK,EAAOuK,OAEhBsH,EAAc7R,EAAOkK,UAAYlK,EAAO+L,eAAiB/L,EAAOU,UAAUoR,WAAa9R,EAAOU,UAAUqR,UAAY,EAC1H,IAAK,IAAInT,EAAI,EAAGA,EAAI2L,EAAOhS,OAAQqG,GAAK,EACtC2L,EAAO3L,GAAGoT,mBAAqBhS,EAAO+L,eAAiBxB,EAAO3L,GAAGkT,WAAavH,EAAO3L,GAAGmT,WAAaF,EAAc7R,EAAOiS,uBAE9H,EAgZEC,qBAvYF,SAA8B9R,QACV,IAAdA,IACFA,EAAYnF,MAAQA,KAAKmF,WAAa,GAExC,MAAMJ,EAAS/E,KACTuF,EAASR,EAAOQ,QAChB+J,OACJA,EACAmC,aAAcC,EAAGO,SACjBA,GACElN,EACJ,GAAsB,IAAlBuK,EAAOhS,OAAc,YACkB,IAAhCgS,EAAO,GAAGyH,mBAAmChS,EAAOgR,qBAC/D,IAAImB,GAAgB/R,EAChBuM,IAAKwF,EAAe/R,GACxBJ,EAAOoS,qBAAuB,GAC9BpS,EAAO2R,cAAgB,GACvB,IAAIhE,EAAenN,EAAOmN,aACE,iBAAjBA,GAA6BA,EAAazO,QAAQ,MAAQ,EACnEyO,EAAe3P,WAAW2P,EAAanQ,QAAQ,IAAK,KAAO,IAAMwC,EAAOwE,KACvC,iBAAjBmJ,IAChBA,EAAe3P,WAAW2P,IAE5B,IAAK,IAAI/O,EAAI,EAAGA,EAAI2L,EAAOhS,OAAQqG,GAAK,EAAG,CACzC,MAAM+P,EAAQpE,EAAO3L,GACrB,IAAIyT,EAAc1D,EAAMqD,kBACpBxR,EAAO4N,SAAW5N,EAAO2N,iBAC3BkE,GAAe9H,EAAO,GAAGyH,mBAE3B,MAAMM,GAAiBH,GAAgB3R,EAAO2N,eAAiBnO,EAAOuS,eAAiB,GAAKF,IAAgB1D,EAAMU,gBAAkB1B,GAC9H6E,GAAyBL,EAAejF,EAAS,IAAM1M,EAAO2N,eAAiBnO,EAAOuS,eAAiB,GAAKF,IAAgB1D,EAAMU,gBAAkB1B,GACpJ8E,IAAgBN,EAAeE,GAC/BK,EAAaD,EAAczS,EAAOoN,gBAAgBxO,GAClD+T,EAAiBF,GAAe,GAAKA,GAAezS,EAAOwE,KAAOxE,EAAOoN,gBAAgBxO,GACzFgU,EAAYH,GAAe,GAAKA,EAAczS,EAAOwE,KAAO,GAAKkO,EAAa,GAAKA,GAAc1S,EAAOwE,MAAQiO,GAAe,GAAKC,GAAc1S,EAAOwE,KAC3JoO,IACF5S,EAAO2R,cAAcxP,KAAKwM,GAC1B3O,EAAOoS,qBAAqBjQ,KAAKvD,IAEnC6K,EAAqBkF,EAAOiE,EAAWpS,EAAOqS,mBAC9CpJ,EAAqBkF,EAAOgE,EAAgBnS,EAAOsS,wBACnDnE,EAAMzN,SAAWyL,GAAO2F,EAAgBA,EACxC3D,EAAMoE,iBAAmBpG,GAAO6F,EAAwBA,CAC1D,CACF,EA4VEQ,eA1VF,SAAwB5S,GACtB,MAAMJ,EAAS/E,KACf,QAAyB,IAAdmF,EAA2B,CACpC,MAAM6S,EAAajT,EAAO0M,cAAgB,EAAI,EAE9CtM,EAAYJ,GAAUA,EAAOI,WAAaJ,EAAOI,UAAY6S,GAAc,CAC7E,CACA,MAAMzS,EAASR,EAAOQ,OAChB0S,EAAiBlT,EAAOmT,eAAiBnT,EAAOuS,eACtD,IAAIrR,SACFA,EAAQkS,YACRA,EAAWC,MACXA,EAAKC,aACLA,GACEtT,EACJ,MAAMuT,EAAeH,EACfI,EAASH,EACf,GAAuB,IAAnBH,EACFhS,EAAW,EACXkS,GAAc,EACdC,GAAQ,MACH,CACLnS,GAAYd,EAAYJ,EAAOuS,gBAAkBW,EACjD,MAAMO,EAAqBtS,KAAK2D,IAAI1E,EAAYJ,EAAOuS,gBAAkB,EACnEmB,EAAevS,KAAK2D,IAAI1E,EAAYJ,EAAOmT,gBAAkB,EACnEC,EAAcK,GAAsBvS,GAAY,EAChDmS,EAAQK,GAAgBxS,GAAY,EAChCuS,IAAoBvS,EAAW,GAC/BwS,IAAcxS,EAAW,EAC/B,CACA,GAAIV,EAAOiL,KAAM,CACf,MAAMkI,EAAkB3T,EAAO0R,oBAAoB,GAC7CkC,EAAiB5T,EAAO0R,oBAAoB1R,EAAOuK,OAAOhS,OAAS,GACnEsb,EAAsB7T,EAAOmN,WAAWwG,GACxCG,EAAqB9T,EAAOmN,WAAWyG,GACvCG,EAAe/T,EAAOmN,WAAWnN,EAAOmN,WAAW5U,OAAS,GAC5Dyb,EAAe7S,KAAK2D,IAAI1E,GAE5BkT,EADEU,GAAgBH,GACFG,EAAeH,GAAuBE,GAEtCC,EAAeD,EAAeD,GAAsBC,EAElET,EAAe,IAAGA,GAAgB,EACxC,CACAtb,OAAOmU,OAAOnM,EAAQ,CACpBkB,WACAoS,eACAF,cACAC,WAEE7S,EAAOuQ,qBAAuBvQ,EAAO2N,gBAAkB3N,EAAOyT,aAAYjU,EAAOkS,qBAAqB9R,GACtGgT,IAAgBG,GAClBvT,EAAOmJ,KAAK,yBAEVkK,IAAUG,GACZxT,EAAOmJ,KAAK,oBAEVoK,IAAiBH,GAAeI,IAAWH,IAC7CrT,EAAOmJ,KAAK,YAEdnJ,EAAOmJ,KAAK,WAAYjI,EAC1B,EA8REgT,oBArRF,WACE,MAAMlU,EAAS/E,MACTsP,OACJA,EAAM/J,OACNA,EAAMgM,SACNA,EAAQzB,YACRA,GACE/K,EACE6M,EAAY7M,EAAO8M,SAAWtM,EAAOsM,QAAQC,QAC7CsB,EAAcrO,EAAOgL,MAAQxK,EAAOwK,MAAQxK,EAAOwK,KAAKC,KAAO,EAC/DkJ,EAAmBlS,GAChBF,EAAgByK,EAAU,IAAIhM,EAAO2J,aAAalI,kBAAyBA,KAAY,GAEhG,IAAImS,EACAC,EACAC,EACJ,GAAIzH,EACF,GAAIrM,EAAOiL,KAAM,CACf,IAAIwE,EAAalF,EAAc/K,EAAO8M,QAAQgD,aAC1CG,EAAa,IAAGA,EAAajQ,EAAO8M,QAAQvC,OAAOhS,OAAS0X,GAC5DA,GAAcjQ,EAAO8M,QAAQvC,OAAOhS,SAAQ0X,GAAcjQ,EAAO8M,QAAQvC,OAAOhS,QACpF6b,EAAcD,EAAiB,6BAA6BlE,MAC9D,MACEmE,EAAcD,EAAiB,6BAA6BpJ,YAG1DsD,GACF+F,EAAc7J,EAAOlO,QAAOwF,GAAWA,EAAQyJ,SAAWP,IAAa,GACvEuJ,EAAY/J,EAAOlO,QAAOwF,GAAWA,EAAQyJ,SAAWP,EAAc,IAAG,GACzEsJ,EAAY9J,EAAOlO,QAAOwF,GAAWA,EAAQyJ,SAAWP,EAAc,IAAG,IAEzEqJ,EAAc7J,EAAOQ,GAGrBqJ,IACG/F,IAEHiG,EA56BN,SAAwB3X,EAAIsF,GAC1B,MAAMsS,EAAU,GAChB,KAAO5X,EAAG6X,oBAAoB,CAC5B,MAAMC,EAAO9X,EAAG6X,mBACZvS,EACEwS,EAAKpS,QAAQJ,IAAWsS,EAAQpS,KAAKsS,GACpCF,EAAQpS,KAAKsS,GACpB9X,EAAK8X,CACP,CACA,OAAOF,CACT,CAk6BkBG,CAAeN,EAAa,IAAI5T,EAAO2J,4BAA4B,GAC3E3J,EAAOiL,OAAS6I,IAClBA,EAAY/J,EAAO,IAIrB8J,EA77BN,SAAwB1X,EAAIsF,GAC1B,MAAM0S,EAAU,GAChB,KAAOhY,EAAGiY,wBAAwB,CAChC,MAAMC,EAAOlY,EAAGiY,uBACZ3S,EACE4S,EAAKxS,QAAQJ,IAAW0S,EAAQxS,KAAK0S,GACpCF,EAAQxS,KAAK0S,GACpBlY,EAAKkY,CACP,CACA,OAAOF,CACT,CAm7BkBG,CAAeV,EAAa,IAAI5T,EAAO2J,4BAA4B,GAC3E3J,EAAOiL,MAAuB,KAAd4I,IAClBA,EAAY9J,EAAOA,EAAOhS,OAAS,MAIzCgS,EAAOlS,SAAQwJ,IACbiI,EAAmBjI,EAASA,IAAYuS,EAAa5T,EAAOuU,kBAC5DjL,EAAmBjI,EAASA,IAAYyS,EAAW9T,EAAOwU,gBAC1DlL,EAAmBjI,EAASA,IAAYwS,EAAW7T,EAAOyU,eAAe,IAE3EjV,EAAOkV,mBACT,EA+NEC,kBAtIF,SAA2BC,GACzB,MAAMpV,EAAS/E,KACTmF,EAAYJ,EAAO0M,aAAe1M,EAAOI,WAAaJ,EAAOI,WAC7D8M,SACJA,EAAQ1M,OACRA,EACAuK,YAAasK,EACb3J,UAAW4J,EACX5E,UAAW6E,GACTvV,EACJ,IACI0Q,EADA3F,EAAcqK,EAElB,MAAMI,EAAsBC,IAC1B,IAAI/J,EAAY+J,EAASzV,EAAO8M,QAAQgD,aAOxC,OANIpE,EAAY,IACdA,EAAY1L,EAAO8M,QAAQvC,OAAOhS,OAASmT,GAEzCA,GAAa1L,EAAO8M,QAAQvC,OAAOhS,SACrCmT,GAAa1L,EAAO8M,QAAQvC,OAAOhS,QAE9BmT,CAAS,EAKlB,QAH2B,IAAhBX,IACTA,EA/CJ,SAAmC/K,GACjC,MAAMmN,WACJA,EAAU3M,OACVA,GACER,EACEI,EAAYJ,EAAO0M,aAAe1M,EAAOI,WAAaJ,EAAOI,UACnE,IAAI2K,EACJ,IAAK,IAAInM,EAAI,EAAGA,EAAIuO,EAAW5U,OAAQqG,GAAK,OACT,IAAtBuO,EAAWvO,EAAI,GACpBwB,GAAa+M,EAAWvO,IAAMwB,EAAY+M,EAAWvO,EAAI,IAAMuO,EAAWvO,EAAI,GAAKuO,EAAWvO,IAAM,EACtGmM,EAAcnM,EACLwB,GAAa+M,EAAWvO,IAAMwB,EAAY+M,EAAWvO,EAAI,KAClEmM,EAAcnM,EAAI,GAEXwB,GAAa+M,EAAWvO,KACjCmM,EAAcnM,GAOlB,OAHI4B,EAAOkV,sBACL3K,EAAc,QAA4B,IAAhBA,KAA6BA,EAAc,GAEpEA,CACT,CAwBkB4K,CAA0B3V,IAEtCkN,EAAShO,QAAQkB,IAAc,EACjCsQ,EAAYxD,EAAShO,QAAQkB,OACxB,CACL,MAAMwV,EAAOzU,KAAKE,IAAIb,EAAO+O,mBAAoBxE,GACjD2F,EAAYkF,EAAOzU,KAAKiO,OAAOrE,EAAc6K,GAAQpV,EAAO8O,eAC9D,CAEA,GADIoB,GAAaxD,EAAS3U,SAAQmY,EAAYxD,EAAS3U,OAAS,GAC5DwS,IAAgBsK,IAAkBrV,EAAOQ,OAAOiL,KAKlD,YAJIiF,IAAc6E,IAChBvV,EAAO0Q,UAAYA,EACnB1Q,EAAOmJ,KAAK,qBAIhB,GAAI4B,IAAgBsK,GAAiBrV,EAAOQ,OAAOiL,MAAQzL,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAEjG,YADA/M,EAAO0L,UAAY8J,EAAoBzK,IAGzC,MAAMsD,EAAcrO,EAAOgL,MAAQxK,EAAOwK,MAAQxK,EAAOwK,KAAKC,KAAO,EAGrE,IAAIS,EACJ,GAAI1L,EAAO8M,SAAWtM,EAAOsM,QAAQC,SAAWvM,EAAOiL,KACrDC,EAAY8J,EAAoBzK,QAC3B,GAAIsD,EAAa,CACtB,MAAMwH,EAAqB7V,EAAOuK,OAAOlO,QAAOwF,GAAWA,EAAQyJ,SAAWP,IAAa,GAC3F,IAAI+K,EAAmB7J,SAAS4J,EAAmBE,aAAa,2BAA4B,IACxFzO,OAAO4E,MAAM4J,KACfA,EAAmB3U,KAAKC,IAAIpB,EAAOuK,OAAOrL,QAAQ2W,GAAqB,IAEzEnK,EAAYvK,KAAKiO,MAAM0G,EAAmBtV,EAAOwK,KAAKC,KACxD,MAAO,GAAIjL,EAAOuK,OAAOQ,GAAc,CACrC,MAAMkF,EAAajQ,EAAOuK,OAAOQ,GAAagL,aAAa,2BAEzDrK,EADEuE,EACUhE,SAASgE,EAAY,IAErBlF,CAEhB,MACEW,EAAYX,EAEd/S,OAAOmU,OAAOnM,EAAQ,CACpBuV,oBACA7E,YACA4E,oBACA5J,YACA2J,gBACAtK,gBAEE/K,EAAOgW,aACTvL,EAAQzK,GAEVA,EAAOmJ,KAAK,qBACZnJ,EAAOmJ,KAAK,oBACRnJ,EAAOgW,aAAehW,EAAOQ,OAAOyV,sBAClCX,IAAsB5J,GACxB1L,EAAOmJ,KAAK,mBAEdnJ,EAAOmJ,KAAK,eAEhB,EAkDE+M,mBAhDF,SAA4BvZ,EAAIwZ,GAC9B,MAAMnW,EAAS/E,KACTuF,EAASR,EAAOQ,OACtB,IAAImO,EAAQhS,EAAGsN,QAAQ,IAAIzJ,EAAO2J,6BAC7BwE,GAAS3O,EAAOkK,WAAaiM,GAAQA,EAAK5d,OAAS,GAAK4d,EAAKjP,SAASvK,IACzE,IAAIwZ,EAAK7X,MAAM6X,EAAKjX,QAAQvC,GAAM,EAAGwZ,EAAK5d,SAASF,SAAQ+d,KACpDzH,GAASyH,EAAO/T,SAAW+T,EAAO/T,QAAQ,IAAI7B,EAAO2J,8BACxDwE,EAAQyH,EACV,IAGJ,IACInG,EADAoG,GAAa,EAEjB,GAAI1H,EACF,IAAK,IAAI/P,EAAI,EAAGA,EAAIoB,EAAOuK,OAAOhS,OAAQqG,GAAK,EAC7C,GAAIoB,EAAOuK,OAAO3L,KAAO+P,EAAO,CAC9B0H,GAAa,EACbpG,EAAarR,EACb,KACF,CAGJ,IAAI+P,IAAS0H,EAUX,OAFArW,EAAOsW,kBAAe5X,OACtBsB,EAAOuW,kBAAe7X,GARtBsB,EAAOsW,aAAe3H,EAClB3O,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAC1C/M,EAAOuW,aAAetK,SAAS0C,EAAMoH,aAAa,2BAA4B,IAE9E/V,EAAOuW,aAAetG,EAOtBzP,EAAOgW,0BAA+C9X,IAAxBsB,EAAOuW,cAA8BvW,EAAOuW,eAAiBvW,EAAO+K,aACpG/K,EAAOwW,qBAEX,GA+KA,IAAIpW,EAAY,CACd1D,aAlKF,SAA4BE,QACb,IAATA,IACFA,EAAO3B,KAAK8Q,eAAiB,IAAM,KAErC,MACMvL,OACJA,EACAkM,aAAcC,EAAGvM,UACjBA,EAASM,UACTA,GALazF,KAOf,GAAIuF,EAAOiW,iBACT,OAAO9J,GAAOvM,EAAYA,EAE5B,GAAII,EAAO4N,QACT,OAAOhO,EAET,IAAIsW,EAAmBha,EAAagE,EAAW9D,GAG/C,OAFA8Z,GAdezb,KAcYgX,wBACvBtF,IAAK+J,GAAoBA,GACtBA,GAAoB,CAC7B,EA8IEC,aA5IF,SAAsBvW,EAAWwW,GAC/B,MAAM5W,EAAS/E,MAEbyR,aAAcC,EAAGnM,OACjBA,EAAME,UACNA,EAASQ,SACTA,GACElB,EACJ,IA0BI6W,EA1BAC,EAAI,EACJC,EAAI,EAEJ/W,EAAO+L,eACT+K,EAAInK,GAAOvM,EAAYA,EAEvB2W,EAAI3W,EAEFI,EAAOwO,eACT8H,EAAI3V,KAAKiO,MAAM0H,GACfC,EAAI5V,KAAKiO,MAAM2H,IAEjB/W,EAAOgX,kBAAoBhX,EAAOI,UAClCJ,EAAOI,UAAYJ,EAAO+L,eAAiB+K,EAAIC,EAC3CvW,EAAO4N,QACT1N,EAAUV,EAAO+L,eAAiB,aAAe,aAAe/L,EAAO+L,gBAAkB+K,GAAKC,EACpFvW,EAAOiW,mBACbzW,EAAO+L,eACT+K,GAAK9W,EAAOiS,wBAEZ8E,GAAK/W,EAAOiS,wBAEdvR,EAAUnH,MAAM6D,UAAY,eAAe0Z,QAAQC,aAKrD,MAAM7D,EAAiBlT,EAAOmT,eAAiBnT,EAAOuS,eAEpDsE,EADqB,IAAnB3D,EACY,GAEC9S,EAAYJ,EAAOuS,gBAAkBW,EAElD2D,IAAgB3V,GAClBlB,EAAOgT,eAAe5S,GAExBJ,EAAOmJ,KAAK,eAAgBnJ,EAAOI,UAAWwW,EAChD,EAgGErE,aA9FF,WACE,OAAQtX,KAAKiS,SAAS,EACxB,EA6FEiG,aA3FF,WACE,OAAQlY,KAAKiS,SAASjS,KAAKiS,SAAS3U,OAAS,EAC/C,EA0FE0e,YAxFF,SAAqB7W,EAAWK,EAAOyW,EAAcC,EAAiBC,QAClD,IAAdhX,IACFA,EAAY,QAEA,IAAVK,IACFA,EAAQxF,KAAKuF,OAAOC,YAED,IAAjByW,IACFA,GAAe,QAEO,IAApBC,IACFA,GAAkB,GAEpB,MAAMnX,EAAS/E,MACTuF,OACJA,EAAME,UACNA,GACEV,EACJ,GAAIA,EAAOqX,WAAa7W,EAAO8W,+BAC7B,OAAO,EAET,MAAM/E,EAAevS,EAAOuS,eACtBY,EAAenT,EAAOmT,eAC5B,IAAIoE,EAKJ,GAJiDA,EAA7CJ,GAAmB/W,EAAYmS,EAA6BA,EAAsB4E,GAAmB/W,EAAY+S,EAA6BA,EAAiC/S,EAGnLJ,EAAOgT,eAAeuE,GAClB/W,EAAO4N,QAAS,CAClB,MAAMoJ,EAAMxX,EAAO+L,eACnB,GAAc,IAAVtL,EACFC,EAAU8W,EAAM,aAAe,cAAgBD,MAC1C,CACL,IAAKvX,EAAOiF,QAAQG,aAMlB,OALAtF,EAAqB,CACnBE,SACAC,gBAAiBsX,EACjBrX,KAAMsX,EAAM,OAAS,SAEhB,EAET9W,EAAUgB,SAAS,CACjB,CAAC8V,EAAM,OAAS,QAASD,EACzBE,SAAU,UAEd,CACA,OAAO,CACT,CAiCA,OAhCc,IAAVhX,GACFT,EAAOwR,cAAc,GACrBxR,EAAO2W,aAAaY,GAChBL,IACFlX,EAAOmJ,KAAK,wBAAyB1I,EAAO2W,GAC5CpX,EAAOmJ,KAAK,oBAGdnJ,EAAOwR,cAAc/Q,GACrBT,EAAO2W,aAAaY,GAChBL,IACFlX,EAAOmJ,KAAK,wBAAyB1I,EAAO2W,GAC5CpX,EAAOmJ,KAAK,oBAETnJ,EAAOqX,YACVrX,EAAOqX,WAAY,EACdrX,EAAO0X,oCACV1X,EAAO0X,kCAAoC,SAAuBpT,GAC3DtE,IAAUA,EAAOkI,WAClB5D,EAAEpM,SAAW+C,OACjB+E,EAAOU,UAAU/H,oBAAoB,gBAAiBqH,EAAO0X,mCAC7D1X,EAAO0X,kCAAoC,YACpC1X,EAAO0X,kCACd1X,EAAOqX,WAAY,EACfH,GACFlX,EAAOmJ,KAAK,iBAEhB,GAEFnJ,EAAOU,UAAUhI,iBAAiB,gBAAiBsH,EAAO0X,sCAGvD,CACT,GAmBA,SAASC,EAAe5X,GACtB,IAAIC,OACFA,EAAMkX,aACNA,EAAYU,UACZA,EAASC,KACTA,GACE9X,EACJ,MAAMgL,YACJA,EAAWsK,cACXA,GACErV,EACJ,IAAIa,EAAM+W,EAKV,GAJK/W,IAC8BA,EAA7BkK,EAAcsK,EAAqB,OAAgBtK,EAAcsK,EAAqB,OAAkB,SAE9GrV,EAAOmJ,KAAK,aAAa0O,KACrBX,GAAgBnM,IAAgBsK,EAAe,CACjD,GAAY,UAARxU,EAEF,YADAb,EAAOmJ,KAAK,uBAAuB0O,KAGrC7X,EAAOmJ,KAAK,wBAAwB0O,KACxB,SAARhX,EACFb,EAAOmJ,KAAK,sBAAsB0O,KAElC7X,EAAOmJ,KAAK,sBAAsB0O,IAEtC,CACF,CAsdA,IAAIlJ,EAAQ,CACVmJ,QAxaF,SAAiB9O,EAAOvI,EAAOyW,EAAcE,EAAUW,QACvC,IAAV/O,IACFA,EAAQ,QAEW,IAAjBkO,IACFA,GAAe,GAEI,iBAAVlO,IACTA,EAAQiD,SAASjD,EAAO,KAE1B,MAAMhJ,EAAS/E,KACf,IAAIgV,EAAajH,EACbiH,EAAa,IAAGA,EAAa,GACjC,MAAMzP,OACJA,EAAM0M,SACNA,EAAQC,WACRA,EAAUkI,cACVA,EAAatK,YACbA,EACA2B,aAAcC,EAAGjM,UACjBA,EAASqM,QACTA,GACE/M,EACJ,IAAK+M,IAAYqK,IAAaW,GAAW/X,EAAOkI,WAAalI,EAAOqX,WAAa7W,EAAO8W,+BACtF,OAAO,OAEY,IAAV7W,IACTA,EAAQT,EAAOQ,OAAOC,OAExB,MAAMmV,EAAOzU,KAAKE,IAAIrB,EAAOQ,OAAO+O,mBAAoBU,GACxD,IAAIS,EAAYkF,EAAOzU,KAAKiO,OAAOa,EAAa2F,GAAQ5V,EAAOQ,OAAO8O,gBAClEoB,GAAaxD,EAAS3U,SAAQmY,EAAYxD,EAAS3U,OAAS,GAChE,MAAM6H,GAAa8M,EAASwD,GAE5B,GAAIlQ,EAAOkV,oBACT,IAAK,IAAI9W,EAAI,EAAGA,EAAIuO,EAAW5U,OAAQqG,GAAK,EAAG,CAC7C,MAAMoZ,GAAuB7W,KAAKiO,MAAkB,IAAZhP,GAClC6X,EAAiB9W,KAAKiO,MAAsB,IAAhBjC,EAAWvO,IACvCsZ,EAAqB/W,KAAKiO,MAA0B,IAApBjC,EAAWvO,EAAI,SACpB,IAAtBuO,EAAWvO,EAAI,GACpBoZ,GAAuBC,GAAkBD,EAAsBE,GAAsBA,EAAqBD,GAAkB,EAC9HhI,EAAarR,EACJoZ,GAAuBC,GAAkBD,EAAsBE,IACxEjI,EAAarR,EAAI,GAEVoZ,GAAuBC,IAChChI,EAAarR,EAEjB,CAGF,GAAIoB,EAAOgW,aAAe/F,IAAelF,EAAa,CACpD,IAAK/K,EAAOmY,iBAAmBxL,EAAMvM,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAOuS,eAAiBnS,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAOuS,gBAC1J,OAAO,EAET,IAAKvS,EAAOoY,gBAAkBhY,EAAYJ,EAAOI,WAAaA,EAAYJ,EAAOmT,iBAC1EpI,GAAe,KAAOkF,EACzB,OAAO,CAGb,CAOA,IAAI2H,EAIJ,GAVI3H,KAAgBoF,GAAiB,IAAM6B,GACzClX,EAAOmJ,KAAK,0BAIdnJ,EAAOgT,eAAe5S,GAEQwX,EAA1B3H,EAAalF,EAAyB,OAAgBkF,EAAalF,EAAyB,OAAwB,QAGpH4B,IAAQvM,IAAcJ,EAAOI,YAAcuM,GAAOvM,IAAcJ,EAAOI,UAczE,OAbAJ,EAAOmV,kBAAkBlF,GAErBzP,EAAOyT,YACTjU,EAAOqR,mBAETrR,EAAOkU,sBACe,UAAlB1T,EAAOgP,QACTxP,EAAO2W,aAAavW,GAEJ,UAAdwX,IACF5X,EAAOqY,gBAAgBnB,EAAcU,GACrC5X,EAAOsY,cAAcpB,EAAcU,KAE9B,EAET,GAAIpX,EAAO4N,QAAS,CAClB,MAAMoJ,EAAMxX,EAAO+L,eACbwM,EAAI5L,EAAMvM,GAAaA,EAC7B,GAAc,IAAVK,EAAa,CACf,MAAMoM,EAAY7M,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QACtDF,IACF7M,EAAOU,UAAUnH,MAAMoH,eAAiB,OACxCX,EAAOwY,mBAAoB,GAEzB3L,IAAc7M,EAAOyY,2BAA6BzY,EAAOQ,OAAOkY,aAAe,GACjF1Y,EAAOyY,2BAA4B,EACnC/c,uBAAsB,KACpBgF,EAAU8W,EAAM,aAAe,aAAee,CAAC,KAGjD7X,EAAU8W,EAAM,aAAe,aAAee,EAE5C1L,GACFnR,uBAAsB,KACpBsE,EAAOU,UAAUnH,MAAMoH,eAAiB,GACxCX,EAAOwY,mBAAoB,CAAK,GAGtC,KAAO,CACL,IAAKxY,EAAOiF,QAAQG,aAMlB,OALAtF,EAAqB,CACnBE,SACAC,eAAgBsY,EAChBrY,KAAMsX,EAAM,OAAS,SAEhB,EAET9W,EAAUgB,SAAS,CACjB,CAAC8V,EAAM,OAAS,OAAQe,EACxBd,SAAU,UAEd,CACA,OAAO,CACT,CAuBA,OAtBAzX,EAAOwR,cAAc/Q,GACrBT,EAAO2W,aAAavW,GACpBJ,EAAOmV,kBAAkBlF,GACzBjQ,EAAOkU,sBACPlU,EAAOmJ,KAAK,wBAAyB1I,EAAO2W,GAC5CpX,EAAOqY,gBAAgBnB,EAAcU,GACvB,IAAVnX,EACFT,EAAOsY,cAAcpB,EAAcU,GACzB5X,EAAOqX,YACjBrX,EAAOqX,WAAY,EACdrX,EAAO2Y,gCACV3Y,EAAO2Y,8BAAgC,SAAuBrU,GACvDtE,IAAUA,EAAOkI,WAClB5D,EAAEpM,SAAW+C,OACjB+E,EAAOU,UAAU/H,oBAAoB,gBAAiBqH,EAAO2Y,+BAC7D3Y,EAAO2Y,8BAAgC,YAChC3Y,EAAO2Y,8BACd3Y,EAAOsY,cAAcpB,EAAcU,GACrC,GAEF5X,EAAOU,UAAUhI,iBAAiB,gBAAiBsH,EAAO2Y,iCAErD,CACT,EAoREC,YAlRF,SAAqB5P,EAAOvI,EAAOyW,EAAcE,GAO/C,QANc,IAAVpO,IACFA,EAAQ,QAEW,IAAjBkO,IACFA,GAAe,GAEI,iBAAVlO,EAAoB,CAE7BA,EADsBiD,SAASjD,EAAO,GAExC,CACA,MAAMhJ,EAAS/E,KACf,GAAI+E,EAAOkI,UAAW,YACD,IAAVzH,IACTA,EAAQT,EAAOQ,OAAOC,OAExB,MAAM4N,EAAcrO,EAAOgL,MAAQhL,EAAOQ,OAAOwK,MAAQhL,EAAOQ,OAAOwK,KAAKC,KAAO,EACnF,IAAI4N,EAAW7P,EACf,GAAIhJ,EAAOQ,OAAOiL,KAChB,GAAIzL,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAE1C8L,GAAsB7Y,EAAO8M,QAAQgD,iBAChC,CACL,IAAIgJ,EACJ,GAAIzK,EAAa,CACf,MAAM4B,EAAa4I,EAAW7Y,EAAOQ,OAAOwK,KAAKC,KACjD6N,EAAmB9Y,EAAOuK,OAAOlO,QAAOwF,GAA6D,EAAlDA,EAAQkU,aAAa,6BAAmC9F,IAAY,GAAG3E,MAC5H,MACEwN,EAAmB9Y,EAAO0R,oBAAoBmH,GAEhD,MAAME,EAAO1K,EAAclN,KAAK2J,KAAK9K,EAAOuK,OAAOhS,OAASyH,EAAOQ,OAAOwK,KAAKC,MAAQjL,EAAOuK,OAAOhS,QAC/F4V,eACJA,GACEnO,EAAOQ,OACX,IAAIoK,EAAgB5K,EAAOQ,OAAOoK,cACZ,SAAlBA,EACFA,EAAgB5K,EAAO6K,wBAEvBD,EAAgBzJ,KAAK2J,KAAK9M,WAAWgC,EAAOQ,OAAOoK,cAAe,KAC9DuD,GAAkBvD,EAAgB,GAAM,IAC1CA,GAAgC,IAGpC,IAAIoO,EAAcD,EAAOD,EAAmBlO,EAO5C,GANIuD,IACF6K,EAAcA,GAAeF,EAAmB3X,KAAK2J,KAAKF,EAAgB,IAExEwM,GAAYjJ,GAAkD,SAAhCnO,EAAOQ,OAAOoK,gBAA6ByD,IAC3E2K,GAAc,GAEZA,EAAa,CACf,MAAMpB,EAAYzJ,EAAiB2K,EAAmB9Y,EAAO+K,YAAc,OAAS,OAAS+N,EAAmB9Y,EAAO+K,YAAc,EAAI/K,EAAOQ,OAAOoK,cAAgB,OAAS,OAChL5K,EAAOiZ,QAAQ,CACbrB,YACAE,SAAS,EACThC,iBAAgC,SAAd8B,EAAuBkB,EAAmB,EAAIA,EAAmBC,EAAO,EAC1FG,eAA8B,SAAdtB,EAAuB5X,EAAO0L,eAAYhN,GAE9D,CACA,GAAI2P,EAAa,CACf,MAAM4B,EAAa4I,EAAW7Y,EAAOQ,OAAOwK,KAAKC,KACjD4N,EAAW7Y,EAAOuK,OAAOlO,QAAOwF,GAA6D,EAAlDA,EAAQkU,aAAa,6BAAmC9F,IAAY,GAAG3E,MACpH,MACEuN,EAAW7Y,EAAO0R,oBAAoBmH,EAE1C,CAKF,OAHAnd,uBAAsB,KACpBsE,EAAO8X,QAAQe,EAAUpY,EAAOyW,EAAcE,EAAS,IAElDpX,CACT,EA4MEmZ,UAzMF,SAAmB1Y,EAAOyW,EAAcE,QACjB,IAAjBF,IACFA,GAAe,GAEjB,MAAMlX,EAAS/E,MACT8R,QACJA,EAAOvM,OACPA,EAAM6W,UACNA,GACErX,EACJ,IAAK+M,GAAW/M,EAAOkI,UAAW,OAAOlI,OACpB,IAAVS,IACTA,EAAQT,EAAOQ,OAAOC,OAExB,IAAI2Y,EAAW5Y,EAAO8O,eACO,SAAzB9O,EAAOoK,eAAsD,IAA1BpK,EAAO8O,gBAAwB9O,EAAO6Y,qBAC3ED,EAAWjY,KAAKC,IAAIpB,EAAO6K,qBAAqB,WAAW,GAAO,IAEpE,MAAMyO,EAAYtZ,EAAO+K,YAAcvK,EAAO+O,mBAAqB,EAAI6J,EACjEvM,EAAY7M,EAAO8M,SAAWtM,EAAOsM,QAAQC,QACnD,GAAIvM,EAAOiL,KAAM,CACf,GAAI4L,IAAcxK,GAAarM,EAAO+Y,oBAAqB,OAAO,EAMlE,GALAvZ,EAAOiZ,QAAQ,CACbrB,UAAW,SAGb5X,EAAOwZ,YAAcxZ,EAAOU,UAAU0C,WAClCpD,EAAO+K,cAAgB/K,EAAOuK,OAAOhS,OAAS,GAAKiI,EAAO4N,QAI5D,OAHA1S,uBAAsB,KACpBsE,EAAO8X,QAAQ9X,EAAO+K,YAAcuO,EAAW7Y,EAAOyW,EAAcE,EAAS,KAExE,CAEX,CACA,OAAI5W,EAAOgL,QAAUxL,EAAOqT,MACnBrT,EAAO8X,QAAQ,EAAGrX,EAAOyW,EAAcE,GAEzCpX,EAAO8X,QAAQ9X,EAAO+K,YAAcuO,EAAW7Y,EAAOyW,EAAcE,EAC7E,EAoKEqC,UAjKF,SAAmBhZ,EAAOyW,EAAcE,QACjB,IAAjBF,IACFA,GAAe,GAEjB,MAAMlX,EAAS/E,MACTuF,OACJA,EAAM0M,SACNA,EAAQC,WACRA,EAAUT,aACVA,EAAYK,QACZA,EAAOsK,UACPA,GACErX,EACJ,IAAK+M,GAAW/M,EAAOkI,UAAW,OAAOlI,OACpB,IAAVS,IACTA,EAAQT,EAAOQ,OAAOC,OAExB,MAAMoM,EAAY7M,EAAO8M,SAAWtM,EAAOsM,QAAQC,QACnD,GAAIvM,EAAOiL,KAAM,CACf,GAAI4L,IAAcxK,GAAarM,EAAO+Y,oBAAqB,OAAO,EAClEvZ,EAAOiZ,QAAQ,CACbrB,UAAW,SAGb5X,EAAOwZ,YAAcxZ,EAAOU,UAAU0C,UACxC,CAEA,SAASsW,EAAUC,GACjB,OAAIA,EAAM,GAAWxY,KAAKiO,MAAMjO,KAAK2D,IAAI6U,IAClCxY,KAAKiO,MAAMuK,EACpB,CACA,MAAM3B,EAAsB0B,EALVhN,EAAe1M,EAAOI,WAAaJ,EAAOI,WAMtDwZ,EAAqB1M,EAAS5P,KAAIqc,GAAOD,EAAUC,KACzD,IAAIE,EAAW3M,EAAS0M,EAAmB1a,QAAQ8Y,GAAuB,GAC1E,QAAwB,IAAb6B,GAA4BrZ,EAAO4N,QAAS,CACrD,IAAI0L,EACJ5M,EAAS7U,SAAQ,CAACiY,EAAMI,KAClBsH,GAAuB1H,IAEzBwJ,EAAgBpJ,EAClB,SAE2B,IAAlBoJ,IACTD,EAAW3M,EAAS4M,EAAgB,EAAIA,EAAgB,EAAIA,GAEhE,CACA,IAAIC,EAAY,EAShB,QARwB,IAAbF,IACTE,EAAY5M,EAAWjO,QAAQ2a,GAC3BE,EAAY,IAAGA,EAAY/Z,EAAO+K,YAAc,GACvB,SAAzBvK,EAAOoK,eAAsD,IAA1BpK,EAAO8O,gBAAwB9O,EAAO6Y,qBAC3EU,EAAYA,EAAY/Z,EAAO6K,qBAAqB,YAAY,GAAQ,EACxEkP,EAAY5Y,KAAKC,IAAI2Y,EAAW,KAGhCvZ,EAAOgL,QAAUxL,EAAOoT,YAAa,CACvC,MAAM4G,EAAYha,EAAOQ,OAAOsM,SAAW9M,EAAOQ,OAAOsM,QAAQC,SAAW/M,EAAO8M,QAAU9M,EAAO8M,QAAQvC,OAAOhS,OAAS,EAAIyH,EAAOuK,OAAOhS,OAAS,EACvJ,OAAOyH,EAAO8X,QAAQkC,EAAWvZ,EAAOyW,EAAcE,EACxD,CAAO,OAAI5W,EAAOiL,MAA+B,IAAvBzL,EAAO+K,aAAqBvK,EAAO4N,SAC3D1S,uBAAsB,KACpBsE,EAAO8X,QAAQiC,EAAWtZ,EAAOyW,EAAcE,EAAS,KAEnD,GAEFpX,EAAO8X,QAAQiC,EAAWtZ,EAAOyW,EAAcE,EACxD,EAiGE6C,WA9FF,SAAoBxZ,EAAOyW,EAAcE,QAClB,IAAjBF,IACFA,GAAe,GAEjB,MAAMlX,EAAS/E,KACf,IAAI+E,EAAOkI,UAIX,YAHqB,IAAVzH,IACTA,EAAQT,EAAOQ,OAAOC,OAEjBT,EAAO8X,QAAQ9X,EAAO+K,YAAatK,EAAOyW,EAAcE,EACjE,EAqFE8C,eAlFF,SAAwBzZ,EAAOyW,EAAcE,EAAU+C,QAChC,IAAjBjD,IACFA,GAAe,QAEC,IAAdiD,IACFA,EAAY,IAEd,MAAMna,EAAS/E,KACf,GAAI+E,EAAOkI,UAAW,YACD,IAAVzH,IACTA,EAAQT,EAAOQ,OAAOC,OAExB,IAAIuI,EAAQhJ,EAAO+K,YACnB,MAAM6K,EAAOzU,KAAKE,IAAIrB,EAAOQ,OAAO+O,mBAAoBvG,GAClD0H,EAAYkF,EAAOzU,KAAKiO,OAAOpG,EAAQ4M,GAAQ5V,EAAOQ,OAAO8O,gBAC7DlP,EAAYJ,EAAO0M,aAAe1M,EAAOI,WAAaJ,EAAOI,UACnE,GAAIA,GAAaJ,EAAOkN,SAASwD,GAAY,CAG3C,MAAM0J,EAAcpa,EAAOkN,SAASwD,GAEhCtQ,EAAYga,GADCpa,EAAOkN,SAASwD,EAAY,GACH0J,GAAeD,IACvDnR,GAAShJ,EAAOQ,OAAO8O,eAE3B,KAAO,CAGL,MAAMuK,EAAW7Z,EAAOkN,SAASwD,EAAY,GAEzCtQ,EAAYyZ,IADI7Z,EAAOkN,SAASwD,GACOmJ,GAAYM,IACrDnR,GAAShJ,EAAOQ,OAAO8O,eAE3B,CAGA,OAFAtG,EAAQ7H,KAAKC,IAAI4H,EAAO,GACxBA,EAAQ7H,KAAKE,IAAI2H,EAAOhJ,EAAOmN,WAAW5U,OAAS,GAC5CyH,EAAO8X,QAAQ9O,EAAOvI,EAAOyW,EAAcE,EACpD,EA+CEZ,oBA7CF,WACE,MAAMxW,EAAS/E,KACf,GAAI+E,EAAOkI,UAAW,OACtB,MAAM1H,OACJA,EAAMgM,SACNA,GACExM,EACE4K,EAAyC,SAAzBpK,EAAOoK,cAA2B5K,EAAO6K,uBAAyBrK,EAAOoK,cAC/F,IACIc,EADA2O,EAAera,EAAOuW,aAE1B,MAAM+D,EAAgBta,EAAOkK,UAAY,eAAiB,IAAI1J,EAAO2J,aACrE,GAAI3J,EAAOiL,KAAM,CACf,GAAIzL,EAAOqX,UAAW,OACtB3L,EAAYO,SAASjM,EAAOsW,aAAaP,aAAa,2BAA4B,IAC9EvV,EAAO2N,eACLkM,EAAera,EAAOua,aAAe3P,EAAgB,GAAKyP,EAAera,EAAOuK,OAAOhS,OAASyH,EAAOua,aAAe3P,EAAgB,GACxI5K,EAAOiZ,UACPoB,EAAera,EAAOwa,cAAczY,EAAgByK,EAAU,GAAG8N,8BAA0C5O,OAAe,IAC1HnP,GAAS,KACPyD,EAAO8X,QAAQuC,EAAa,KAG9Bra,EAAO8X,QAAQuC,GAERA,EAAera,EAAOuK,OAAOhS,OAASqS,GAC/C5K,EAAOiZ,UACPoB,EAAera,EAAOwa,cAAczY,EAAgByK,EAAU,GAAG8N,8BAA0C5O,OAAe,IAC1HnP,GAAS,KACPyD,EAAO8X,QAAQuC,EAAa,KAG9Bra,EAAO8X,QAAQuC,EAEnB,MACEra,EAAO8X,QAAQuC,EAEnB,GAoSA,IAAI5O,EAAO,CACTgP,WAzRF,SAAoBvB,GAClB,MAAMlZ,EAAS/E,MACTuF,OACJA,EAAMgM,SACNA,GACExM,EACJ,IAAKQ,EAAOiL,MAAQzL,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAAS,OACrE,MAAMwB,EAAa,KACFxM,EAAgByK,EAAU,IAAIhM,EAAO2J,4BAC7C9R,SAAQ,CAACsE,EAAIqM,KAClBrM,EAAGnD,aAAa,0BAA2BwP,EAAM,GACjD,EAEEqF,EAAcrO,EAAOgL,MAAQxK,EAAOwK,MAAQxK,EAAOwK,KAAKC,KAAO,EAC/DqE,EAAiB9O,EAAO8O,gBAAkBjB,EAAc7N,EAAOwK,KAAKC,KAAO,GAC3EyP,EAAkB1a,EAAOuK,OAAOhS,OAAS+W,GAAmB,EAC5DqL,EAAiBtM,GAAerO,EAAOuK,OAAOhS,OAASiI,EAAOwK,KAAKC,MAAS,EAC5E2P,EAAiBC,IACrB,IAAK,IAAIjc,EAAI,EAAGA,EAAIic,EAAgBjc,GAAK,EAAG,CAC1C,MAAMiD,EAAU7B,EAAOkK,UAAY9Q,EAAc,eAAgB,CAACoH,EAAOsa,kBAAoB1hB,EAAc,MAAO,CAACoH,EAAO2J,WAAY3J,EAAOsa,kBAC7I9a,EAAOwM,SAASuO,OAAOlZ,EACzB,GAEF,GAAI6Y,EAAiB,CACnB,GAAIla,EAAOwa,mBAAoB,CAE7BJ,EADoBtL,EAAiBtP,EAAOuK,OAAOhS,OAAS+W,GAE5DtP,EAAOib,eACPjb,EAAOoM,cACT,MACE9J,EAAY,mLAEdiM,GACF,MAAO,GAAIoM,EAAgB,CACzB,GAAIna,EAAOwa,mBAAoB,CAE7BJ,EADoBpa,EAAOwK,KAAKC,KAAOjL,EAAOuK,OAAOhS,OAASiI,EAAOwK,KAAKC,MAE1EjL,EAAOib,eACPjb,EAAOoM,cACT,MACE9J,EAAY,8KAEdiM,GACF,MACEA,IAEFvO,EAAOiZ,QAAQ,CACbC,iBACAtB,UAAWpX,EAAO2N,oBAAiBzP,EAAY,QAEnD,EAwOEua,QAtOF,SAAiBtT,GACf,IAAIuT,eACFA,EAAcpB,QACdA,GAAU,EAAIF,UACdA,EAASjB,aACTA,EAAYb,iBACZA,EAAgBc,aAChBA,EAAYsE,aACZA,QACY,IAAVvV,EAAmB,CAAC,EAAIA,EAC5B,MAAM3F,EAAS/E,KACf,IAAK+E,EAAOQ,OAAOiL,KAAM,OACzBzL,EAAOmJ,KAAK,iBACZ,MAAMoB,OACJA,EAAM6N,eACNA,EAAcD,eACdA,EAAc3L,SACdA,EAAQhM,OACRA,GACER,GACEmO,eACJA,GACE3N,EAGJ,GAFAR,EAAOoY,gBAAiB,EACxBpY,EAAOmY,gBAAiB,EACpBnY,EAAO8M,SAAWtM,EAAOsM,QAAQC,QAanC,OAZI+K,IACGtX,EAAO2N,gBAAuC,IAArBnO,EAAO0Q,UAE1BlQ,EAAO2N,gBAAkBnO,EAAO0Q,UAAYlQ,EAAOoK,cAC5D5K,EAAO8X,QAAQ9X,EAAO8M,QAAQvC,OAAOhS,OAASyH,EAAO0Q,UAAW,GAAG,GAAO,GACjE1Q,EAAO0Q,YAAc1Q,EAAOkN,SAAS3U,OAAS,GACvDyH,EAAO8X,QAAQ9X,EAAO8M,QAAQgD,aAAc,GAAG,GAAO,GAJtD9P,EAAO8X,QAAQ9X,EAAO8M,QAAQvC,OAAOhS,OAAQ,GAAG,GAAO,IAO3DyH,EAAOoY,eAAiBA,EACxBpY,EAAOmY,eAAiBA,OACxBnY,EAAOmJ,KAAK,WAGd,IAAIyB,EAAgBpK,EAAOoK,cACL,SAAlBA,EACFA,EAAgB5K,EAAO6K,wBAEvBD,EAAgBzJ,KAAK2J,KAAK9M,WAAWwC,EAAOoK,cAAe,KACvDuD,GAAkBvD,EAAgB,GAAM,IAC1CA,GAAgC,IAGpC,MAAM0E,EAAiB9O,EAAO6Y,mBAAqBzO,EAAgBpK,EAAO8O,eAC1E,IAAIiL,EAAejL,EACfiL,EAAejL,GAAmB,IACpCiL,GAAgBjL,EAAiBiL,EAAejL,GAElDiL,GAAgB/Z,EAAO2a,qBACvBnb,EAAOua,aAAeA,EACtB,MAAMlM,EAAcrO,EAAOgL,MAAQxK,EAAOwK,MAAQxK,EAAOwK,KAAKC,KAAO,EACjEV,EAAOhS,OAASqS,EAAgB2P,EAClCjY,EAAY,6OACH+L,GAAoC,QAArB7N,EAAOwK,KAAKoQ,MACpC9Y,EAAY,2EAEd,MAAM+Y,EAAuB,GACvBC,EAAsB,GAC5B,IAAIvQ,EAAc/K,EAAO+K,iBACO,IAArB+K,EACTA,EAAmB9V,EAAOwa,cAAcjQ,EAAOlO,QAAOM,GAAMA,EAAGiG,UAAUgH,SAASpJ,EAAOuU,oBAAmB,IAE5GhK,EAAc+K,EAEhB,MAAMyF,EAAuB,SAAd3D,IAAyBA,EAClC4D,EAAuB,SAAd5D,IAAyBA,EACxC,IAAI6D,EAAkB,EAClBC,EAAiB,EACrB,MAAM3C,EAAO1K,EAAclN,KAAK2J,KAAKP,EAAOhS,OAASiI,EAAOwK,KAAKC,MAAQV,EAAOhS,OAE1EojB,GADiBtN,EAAc9D,EAAOuL,GAAkBxK,OAASwK,IACrB3H,QAA0C,IAAjBwI,GAAgC/L,EAAgB,EAAI,GAAM,GAErI,GAAI+Q,EAA0BpB,EAAc,CAC1CkB,EAAkBta,KAAKC,IAAImZ,EAAeoB,EAAyBrM,GACnE,IAAK,IAAI1Q,EAAI,EAAGA,EAAI2b,EAAeoB,EAAyB/c,GAAK,EAAG,CAClE,MAAMoK,EAAQpK,EAAIuC,KAAKiO,MAAMxQ,EAAIma,GAAQA,EACzC,GAAI1K,EAAa,CACf,MAAMuN,EAAoB7C,EAAO/P,EAAQ,EACzC,IAAK,IAAIpK,EAAI2L,EAAOhS,OAAS,EAAGqG,GAAK,EAAGA,GAAK,EACvC2L,EAAO3L,GAAG0M,SAAWsQ,GAAmBP,EAAqBlZ,KAAKvD,EAK1E,MACEyc,EAAqBlZ,KAAK4W,EAAO/P,EAAQ,EAE7C,CACF,MAAO,GAAI2S,EAA0B/Q,EAAgBmO,EAAOwB,EAAc,CACxEmB,EAAiBva,KAAKC,IAAIua,GAA2B5C,EAAsB,EAAfwB,GAAmBjL,GAC/E,IAAK,IAAI1Q,EAAI,EAAGA,EAAI8c,EAAgB9c,GAAK,EAAG,CAC1C,MAAMoK,EAAQpK,EAAIuC,KAAKiO,MAAMxQ,EAAIma,GAAQA,EACrC1K,EACF9D,EAAOlS,SAAQ,CAACsW,EAAOsB,KACjBtB,EAAMrD,SAAWtC,GAAOsS,EAAoBnZ,KAAK8N,EAAW,IAGlEqL,EAAoBnZ,KAAK6G,EAE7B,CACF,CA8BA,GA7BAhJ,EAAO6b,qBAAsB,EAC7BngB,uBAAsB,KACpBsE,EAAO6b,qBAAsB,CAAK,IAEhCL,GACFH,EAAqBhjB,SAAQ2Q,IAC3BuB,EAAOvB,GAAO8S,mBAAoB,EAClCtP,EAASuP,QAAQxR,EAAOvB,IACxBuB,EAAOvB,GAAO8S,mBAAoB,CAAK,IAGvCP,GACFD,EAAoBjjB,SAAQ2Q,IAC1BuB,EAAOvB,GAAO8S,mBAAoB,EAClCtP,EAASuO,OAAOxQ,EAAOvB,IACvBuB,EAAOvB,GAAO8S,mBAAoB,CAAK,IAG3C9b,EAAOib,eACsB,SAAzBza,EAAOoK,cACT5K,EAAOoM,eACEiC,IAAgBgN,EAAqB9iB,OAAS,GAAKijB,GAAUF,EAAoB/iB,OAAS,GAAKgjB,IACxGvb,EAAOuK,OAAOlS,SAAQ,CAACsW,EAAOsB,KAC5BjQ,EAAOgL,KAAK4D,YAAYqB,EAAYtB,EAAO3O,EAAOuK,OAAO,IAGzD/J,EAAOuQ,qBACT/Q,EAAOgR,qBAEL8G,EACF,GAAIuD,EAAqB9iB,OAAS,GAAKijB,GACrC,QAA8B,IAAnBtC,EAAgC,CACzC,MAAM8C,EAAwBhc,EAAOmN,WAAWpC,GAE1CkR,EADoBjc,EAAOmN,WAAWpC,EAAc0Q,GACzBO,EAC7Bd,EACFlb,EAAO2W,aAAa3W,EAAOI,UAAY6b,IAEvCjc,EAAO8X,QAAQ/M,EAAc5J,KAAK2J,KAAK2Q,GAAkB,GAAG,GAAO,GAC/D9E,IACF3W,EAAOkc,gBAAgBC,eAAiBnc,EAAOkc,gBAAgBC,eAAiBF,EAChFjc,EAAOkc,gBAAgBxF,iBAAmB1W,EAAOkc,gBAAgBxF,iBAAmBuF,GAG1F,MACE,GAAItF,EAAc,CAChB,MAAMyF,EAAQ/N,EAAcgN,EAAqB9iB,OAASiI,EAAOwK,KAAKC,KAAOoQ,EAAqB9iB,OAClGyH,EAAO8X,QAAQ9X,EAAO+K,YAAcqR,EAAO,GAAG,GAAO,GACrDpc,EAAOkc,gBAAgBxF,iBAAmB1W,EAAOI,SACnD,OAEG,GAAIkb,EAAoB/iB,OAAS,GAAKgjB,EAC3C,QAA8B,IAAnBrC,EAAgC,CACzC,MAAM8C,EAAwBhc,EAAOmN,WAAWpC,GAE1CkR,EADoBjc,EAAOmN,WAAWpC,EAAc2Q,GACzBM,EAC7Bd,EACFlb,EAAO2W,aAAa3W,EAAOI,UAAY6b,IAEvCjc,EAAO8X,QAAQ/M,EAAc2Q,EAAgB,GAAG,GAAO,GACnD/E,IACF3W,EAAOkc,gBAAgBC,eAAiBnc,EAAOkc,gBAAgBC,eAAiBF,EAChFjc,EAAOkc,gBAAgBxF,iBAAmB1W,EAAOkc,gBAAgBxF,iBAAmBuF,GAG1F,KAAO,CACL,MAAMG,EAAQ/N,EAAciN,EAAoB/iB,OAASiI,EAAOwK,KAAKC,KAAOqQ,EAAoB/iB,OAChGyH,EAAO8X,QAAQ9X,EAAO+K,YAAcqR,EAAO,GAAG,GAAO,EACvD,CAKJ,GAFApc,EAAOoY,eAAiBA,EACxBpY,EAAOmY,eAAiBA,EACpBnY,EAAOqc,YAAcrc,EAAOqc,WAAWC,UAAY1F,EAAc,CACnE,MAAM2F,EAAa,CACjBrD,iBACAtB,YACAjB,eACAb,mBACAc,cAAc,GAEZ9T,MAAMC,QAAQ/C,EAAOqc,WAAWC,SAClCtc,EAAOqc,WAAWC,QAAQjkB,SAAQiE,KAC3BA,EAAE4L,WAAa5L,EAAEkE,OAAOiL,MAAMnP,EAAE2c,QAAQ,IACxCsD,EACHzE,QAASxb,EAAEkE,OAAOoK,gBAAkBpK,EAAOoK,eAAgBkN,GAC3D,IAEK9X,EAAOqc,WAAWC,mBAAmBtc,EAAOjI,aAAeiI,EAAOqc,WAAWC,QAAQ9b,OAAOiL,MACrGzL,EAAOqc,WAAWC,QAAQrD,QAAQ,IAC7BsD,EACHzE,QAAS9X,EAAOqc,WAAWC,QAAQ9b,OAAOoK,gBAAkBpK,EAAOoK,eAAgBkN,GAGzF,CACA9X,EAAOmJ,KAAK,UACd,EA4BEqT,YA1BF,WACE,MAAMxc,EAAS/E,MACTuF,OACJA,EAAMgM,SACNA,GACExM,EACJ,IAAKQ,EAAOiL,MAAQzL,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAAS,OACrE/M,EAAOib,eACP,MAAMwB,EAAiB,GACvBzc,EAAOuK,OAAOlS,SAAQwJ,IACpB,MAAMmH,OAA4C,IAA7BnH,EAAQ6a,iBAAqF,EAAlD7a,EAAQkU,aAAa,2BAAiClU,EAAQ6a,iBAC9HD,EAAezT,GAASnH,CAAO,IAEjC7B,EAAOuK,OAAOlS,SAAQwJ,IACpBA,EAAQ2I,gBAAgB,0BAA0B,IAEpDiS,EAAepkB,SAAQwJ,IACrB2K,EAASuO,OAAOlZ,EAAQ,IAE1B7B,EAAOib,eACPjb,EAAO8X,QAAQ9X,EAAO0L,UAAW,EACnC,GA6DA,SAASiR,EAAiB3c,EAAQoI,EAAOwU,GACvC,MAAM5gB,EAASF,KACT0E,OACJA,GACER,EACE6c,EAAqBrc,EAAOqc,mBAC5BC,EAAqBtc,EAAOsc,mBAClC,OAAID,KAAuBD,GAAUE,GAAsBF,GAAU5gB,EAAO+gB,WAAaD,IAC5D,YAAvBD,IACFzU,EAAM4U,kBACC,EAKb,CACA,SAASC,EAAa7U,GACpB,MAAMpI,EAAS/E,KACTV,EAAWF,IACjB,IAAIiK,EAAI8D,EACJ9D,EAAE4Y,gBAAe5Y,EAAIA,EAAE4Y,eAC3B,MAAM9T,EAAOpJ,EAAOkc,gBACpB,GAAe,gBAAX5X,EAAE6Y,KAAwB,CAC5B,GAAuB,OAAnB/T,EAAKgU,WAAsBhU,EAAKgU,YAAc9Y,EAAE8Y,UAClD,OAEFhU,EAAKgU,UAAY9Y,EAAE8Y,SACrB,KAAsB,eAAX9Y,EAAE6Y,MAAoD,IAA3B7Y,EAAE+Y,cAAc9kB,SACpD6Q,EAAKkU,QAAUhZ,EAAE+Y,cAAc,GAAGE,YAEpC,GAAe,eAAXjZ,EAAE6Y,KAGJ,YADAR,EAAiB3c,EAAQsE,EAAGA,EAAE+Y,cAAc,GAAGG,OAGjD,MAAMhd,OACJA,EAAMid,QACNA,EAAO1Q,QACPA,GACE/M,EACJ,IAAK+M,EAAS,OACd,IAAKvM,EAAOkd,eAAmC,UAAlBpZ,EAAEqZ,YAAyB,OACxD,GAAI3d,EAAOqX,WAAa7W,EAAO8W,+BAC7B,QAEGtX,EAAOqX,WAAa7W,EAAO4N,SAAW5N,EAAOiL,MAChDzL,EAAOiZ,UAET,IAAI2E,EAAWtZ,EAAEpM,OACjB,GAAiC,YAA7BsI,EAAOqd,oBApwEb,SAA0BlhB,EAAIuH,GAC5B,MAAM4Z,EAAU5Z,EAAO0F,SAASjN,GAChC,IAAKmhB,GAAW5Z,aAAkBhC,gBAEhC,MADiB,IAAIF,QAAQI,oBACb8E,SAASvK,GAE3B,OAAOmhB,CACT,CA8vESC,CAAiBH,EAAU5d,EAAOU,WAAY,OAErD,GAAI,UAAW4D,GAAiB,IAAZA,EAAE0Z,MAAa,OACnC,GAAI,WAAY1Z,GAAKA,EAAE2Z,OAAS,EAAG,OACnC,GAAI7U,EAAK8U,WAAa9U,EAAK+U,QAAS,OAGpC,MAAMC,IAAyB5d,EAAO6d,gBAA4C,KAA1B7d,EAAO6d,eAEzDC,EAAYha,EAAEia,aAAeja,EAAEia,eAAiBja,EAAE6R,KACpDiI,GAAwB9Z,EAAEpM,QAAUoM,EAAEpM,OAAO4J,YAAcwc,IAC7DV,EAAWU,EAAU,IAEvB,MAAME,EAAoBhe,EAAOge,kBAAoBhe,EAAOge,kBAAoB,IAAIhe,EAAO6d,iBACrFI,KAAoBna,EAAEpM,SAAUoM,EAAEpM,OAAO4J,YAG/C,GAAItB,EAAOke,YAAcD,EAlF3B,SAAwBxc,EAAU0c,GAahC,YAZa,IAATA,IACFA,EAAO1jB,MAET,SAAS2jB,EAAcjiB,GACrB,IAAKA,GAAMA,IAAOtC,KAAiBsC,IAAOb,IAAa,OAAO,KAC1Da,EAAGkiB,eAAcliB,EAAKA,EAAGkiB,cAC7B,MAAMC,EAAQniB,EAAGsN,QAAQhI,GACzB,OAAK6c,GAAUniB,EAAGoiB,YAGXD,GAASF,EAAcjiB,EAAGoiB,cAAcjlB,MAFtC,IAGX,CACO8kB,CAAcD,EACvB,CAoE4CK,CAAeR,EAAmBZ,GAAYA,EAAS3T,QAAQuU,IAEvG,YADAxe,EAAOif,YAAa,GAGtB,GAAIze,EAAO0e,eACJtB,EAAS3T,QAAQzJ,EAAO0e,cAAe,OAE9CzB,EAAQ0B,SAAW7a,EAAEkZ,MACrBC,EAAQ2B,SAAW9a,EAAE+a,MACrB,MAAMzC,EAASa,EAAQ0B,SACjBG,EAAS7B,EAAQ2B,SAIvB,IAAKzC,EAAiB3c,EAAQsE,EAAGsY,GAC/B,OAEF5kB,OAAOmU,OAAO/C,EAAM,CAClB8U,WAAW,EACXC,SAAS,EACToB,qBAAqB,EACrBC,iBAAa9gB,EACb+gB,iBAAa/gB,IAEf+e,EAAQb,OAASA,EACjBa,EAAQ6B,OAASA,EACjBlW,EAAKsW,eAAiBjjB,IACtBuD,EAAOif,YAAa,EACpBjf,EAAO4L,aACP5L,EAAO2f,oBAAiBjhB,EACpB8B,EAAO2Z,UAAY,IAAG/Q,EAAKwW,oBAAqB,GACpD,IAAI5C,GAAiB,EACjBY,EAASvb,QAAQ+G,EAAKyW,qBACxB7C,GAAiB,EACS,WAAtBY,EAAS9kB,WACXsQ,EAAK8U,WAAY,IAGjB3jB,EAAS3B,eAAiB2B,EAAS3B,cAAcyJ,QAAQ+G,EAAKyW,oBAAsBtlB,EAAS3B,gBAAkBglB,GACjHrjB,EAAS3B,cAAcC,OAEzB,MAAMinB,EAAuB9C,GAAkBhd,EAAO+f,gBAAkBvf,EAAOwf,0BAC1Exf,EAAOyf,gCAAiCH,GAA0BlC,EAASsC,mBAC9E5b,EAAE0Y,iBAEAxc,EAAO2f,UAAY3f,EAAO2f,SAASpT,SAAW/M,EAAOmgB,UAAYngB,EAAOqX,YAAc7W,EAAO4N,SAC/FpO,EAAOmgB,SAASlD,eAElBjd,EAAOmJ,KAAK,aAAc7E,EAC5B,CAEA,SAAS8b,EAAYhY,GACnB,MAAM7N,EAAWF,IACX2F,EAAS/E,KACTmO,EAAOpJ,EAAOkc,iBACd1b,OACJA,EAAMid,QACNA,EACA/Q,aAAcC,EAAGI,QACjBA,GACE/M,EACJ,IAAK+M,EAAS,OACd,IAAKvM,EAAOkd,eAAuC,UAAtBtV,EAAMuV,YAAyB,OAC5D,IAOI0C,EAPA/b,EAAI8D,EAER,GADI9D,EAAE4Y,gBAAe5Y,EAAIA,EAAE4Y,eACZ,gBAAX5Y,EAAE6Y,KAAwB,CAC5B,GAAqB,OAAjB/T,EAAKkU,QAAkB,OAE3B,GADWhZ,EAAE8Y,YACFhU,EAAKgU,UAAW,MAC7B,CAEA,GAAe,cAAX9Y,EAAE6Y,MAEJ,GADAkD,EAAc,IAAI/b,EAAEgc,gBAAgBjkB,QAAOkc,GAAKA,EAAEgF,aAAenU,EAAKkU,UAAS,IAC1E+C,GAAeA,EAAY9C,aAAenU,EAAKkU,QAAS,YAE7D+C,EAAc/b,EAEhB,IAAK8E,EAAK8U,UAIR,YAHI9U,EAAKqW,aAAerW,EAAKoW,aAC3Bxf,EAAOmJ,KAAK,oBAAqB7E,IAIrC,MAAMkZ,EAAQ6C,EAAY7C,MACpB6B,EAAQgB,EAAYhB,MAC1B,GAAI/a,EAAEic,wBAGJ,OAFA9C,EAAQb,OAASY,OACjBC,EAAQ6B,OAASD,GAGnB,IAAKrf,EAAO+f,eAaV,OAZKzb,EAAEpM,OAAOmK,QAAQ+G,EAAKyW,qBACzB7f,EAAOif,YAAa,QAElB7V,EAAK8U,YACPlmB,OAAOmU,OAAOsR,EAAS,CACrBb,OAAQY,EACR8B,OAAQD,EACRF,SAAU3B,EACV4B,SAAUC,IAEZjW,EAAKsW,eAAiBjjB,MAI1B,GAAI+D,EAAOggB,sBAAwBhgB,EAAOiL,KACxC,GAAIzL,EAAOgM,cAET,GAAIqT,EAAQ5B,EAAQ6B,QAAUtf,EAAOI,WAAaJ,EAAOmT,gBAAkBkM,EAAQ5B,EAAQ6B,QAAUtf,EAAOI,WAAaJ,EAAOuS,eAG9H,OAFAnJ,EAAK8U,WAAY,OACjB9U,EAAK+U,SAAU,QAGZ,GAAIX,EAAQC,EAAQb,QAAU5c,EAAOI,WAAaJ,EAAOmT,gBAAkBqK,EAAQC,EAAQb,QAAU5c,EAAOI,WAAaJ,EAAOuS,eACrI,OAGJ,GAAIhY,EAAS3B,eACP0L,EAAEpM,SAAWqC,EAAS3B,eAAiB0L,EAAEpM,OAAOmK,QAAQ+G,EAAKyW,mBAG/D,OAFAzW,EAAK+U,SAAU,OACfne,EAAOif,YAAa,GAIpB7V,EAAKmW,qBACPvf,EAAOmJ,KAAK,YAAa7E,GAE3BmZ,EAAQgD,UAAYhD,EAAQ0B,SAC5B1B,EAAQiD,UAAYjD,EAAQ2B,SAC5B3B,EAAQ0B,SAAW3B,EACnBC,EAAQ2B,SAAWC,EACnB,MAAMsB,EAAQlD,EAAQ0B,SAAW1B,EAAQb,OACnCgE,EAAQnD,EAAQ2B,SAAW3B,EAAQ6B,OACzC,GAAItf,EAAOQ,OAAO2Z,WAAahZ,KAAK0f,KAAKF,GAAS,EAAIC,GAAS,GAAK5gB,EAAOQ,OAAO2Z,UAAW,OAC7F,QAAgC,IAArB/Q,EAAKoW,YAA6B,CAC3C,IAAIsB,EACA9gB,EAAO+L,gBAAkB0R,EAAQ2B,WAAa3B,EAAQ6B,QAAUtf,EAAOgM,cAAgByR,EAAQ0B,WAAa1B,EAAQb,OACtHxT,EAAKoW,aAAc,EAGfmB,EAAQA,EAAQC,EAAQA,GAAS,KACnCE,EAA4D,IAA/C3f,KAAK4f,MAAM5f,KAAK2D,IAAI8b,GAAQzf,KAAK2D,IAAI6b,IAAgBxf,KAAKK,GACvE4H,EAAKoW,YAAcxf,EAAO+L,eAAiB+U,EAAatgB,EAAOsgB,WAAa,GAAKA,EAAatgB,EAAOsgB,WAG3G,CASA,GARI1X,EAAKoW,aACPxf,EAAOmJ,KAAK,oBAAqB7E,QAEH,IAArB8E,EAAKqW,cACVhC,EAAQ0B,WAAa1B,EAAQb,QAAUa,EAAQ2B,WAAa3B,EAAQ6B,SACtElW,EAAKqW,aAAc,IAGnBrW,EAAKoW,aAA0B,cAAXlb,EAAE6Y,MAAwB/T,EAAK4X,gCAErD,YADA5X,EAAK8U,WAAY,GAGnB,IAAK9U,EAAKqW,YACR,OAEFzf,EAAOif,YAAa,GACfze,EAAO4N,SAAW9J,EAAE2c,YACvB3c,EAAE0Y,iBAEAxc,EAAO0gB,2BAA6B1gB,EAAO2gB,QAC7C7c,EAAE8c,kBAEJ,IAAInF,EAAOjc,EAAO+L,eAAiB4U,EAAQC,EACvCS,EAAcrhB,EAAO+L,eAAiB0R,EAAQ0B,SAAW1B,EAAQgD,UAAYhD,EAAQ2B,SAAW3B,EAAQiD,UACxGlgB,EAAO8gB,iBACTrF,EAAO9a,KAAK2D,IAAImX,IAAStP,EAAM,GAAK,GACpC0U,EAAclgB,KAAK2D,IAAIuc,IAAgB1U,EAAM,GAAK,IAEpD8Q,EAAQxB,KAAOA,EACfA,GAAQzb,EAAO+gB,WACX5U,IACFsP,GAAQA,EACRoF,GAAeA,GAEjB,MAAMG,EAAuBxhB,EAAOyhB,iBACpCzhB,EAAO2f,eAAiB1D,EAAO,EAAI,OAAS,OAC5Cjc,EAAOyhB,iBAAmBJ,EAAc,EAAI,OAAS,OACrD,MAAMK,EAAS1hB,EAAOQ,OAAOiL,OAASjL,EAAO4N,QACvCuT,EAA2C,SAA5B3hB,EAAOyhB,kBAA+BzhB,EAAOmY,gBAA8C,SAA5BnY,EAAOyhB,kBAA+BzhB,EAAOoY,eACjI,IAAKhP,EAAK+U,QAAS,CAQjB,GAPIuD,GAAUC,GACZ3hB,EAAOiZ,QAAQ,CACbrB,UAAW5X,EAAO2f,iBAGtBvW,EAAK+S,eAAiBnc,EAAOtD,eAC7BsD,EAAOwR,cAAc,GACjBxR,EAAOqX,UAAW,CACpB,MAAMuK,EAAM,IAAI5lB,OAAOhB,YAAY,gBAAiB,CAClD6mB,SAAS,EACTZ,YAAY,EACZa,OAAQ,CACNC,mBAAmB,KAGvB/hB,EAAOU,UAAUshB,cAAcJ,EACjC,CACAxY,EAAK6Y,qBAAsB,GAEvBzhB,EAAO0hB,aAAyC,IAA1BliB,EAAOmY,iBAAqD,IAA1BnY,EAAOoY,gBACjEpY,EAAOmiB,eAAc,GAEvBniB,EAAOmJ,KAAK,kBAAmB7E,EACjC,CAGA,IADA,IAAIjJ,MAAO4F,UACPmI,EAAK+U,SAAW/U,EAAKwW,oBAAsB4B,IAAyBxhB,EAAOyhB,kBAAoBC,GAAUC,GAAgBxgB,KAAK2D,IAAImX,IAAS,EAU7I,OATAjkB,OAAOmU,OAAOsR,EAAS,CACrBb,OAAQY,EACR8B,OAAQD,EACRF,SAAU3B,EACV4B,SAAUC,EACVlD,eAAgB/S,EAAKsN,mBAEvBtN,EAAKgZ,eAAgB,OACrBhZ,EAAK+S,eAAiB/S,EAAKsN,kBAG7B1W,EAAOmJ,KAAK,aAAc7E,GAC1B8E,EAAK+U,SAAU,EACf/U,EAAKsN,iBAAmBuF,EAAO7S,EAAK+S,eACpC,IAAIkG,GAAsB,EACtBC,EAAkB9hB,EAAO8hB,gBAiD7B,GAhDI9hB,EAAOggB,sBACT8B,EAAkB,GAEhBrG,EAAO,GACLyF,GAAUC,GAA8BvY,EAAKwW,oBAAsBxW,EAAKsN,kBAAoBlW,EAAO2N,eAAiBnO,EAAOuS,eAAiBvS,EAAOoN,gBAAgBpN,EAAO+K,YAAc,GAAK/K,EAAOuS,iBACtMvS,EAAOiZ,QAAQ,CACbrB,UAAW,OACXjB,cAAc,EACdb,iBAAkB,IAGlB1M,EAAKsN,iBAAmB1W,EAAOuS,iBACjC8P,GAAsB,EAClB7hB,EAAO+hB,aACTnZ,EAAKsN,iBAAmB1W,EAAOuS,eAAiB,IAAMvS,EAAOuS,eAAiBnJ,EAAK+S,eAAiBF,IAASqG,KAGxGrG,EAAO,IACZyF,GAAUC,GAA8BvY,EAAKwW,oBAAsBxW,EAAKsN,kBAAoBlW,EAAO2N,eAAiBnO,EAAOmT,eAAiBnT,EAAOoN,gBAAgBpN,EAAOoN,gBAAgB7U,OAAS,GAAKyH,EAAOmT,iBACjNnT,EAAOiZ,QAAQ,CACbrB,UAAW,OACXjB,cAAc,EACdb,iBAAkB9V,EAAOuK,OAAOhS,QAAmC,SAAzBiI,EAAOoK,cAA2B5K,EAAO6K,uBAAyB1J,KAAK2J,KAAK9M,WAAWwC,EAAOoK,cAAe,QAGvJxB,EAAKsN,iBAAmB1W,EAAOmT,iBACjCkP,GAAsB,EAClB7hB,EAAO+hB,aACTnZ,EAAKsN,iBAAmB1W,EAAOmT,eAAiB,GAAKnT,EAAOmT,eAAiB/J,EAAK+S,eAAiBF,IAASqG,KAI9GD,IACF/d,EAAEic,yBAA0B,IAIzBvgB,EAAOmY,gBAA4C,SAA1BnY,EAAO2f,gBAA6BvW,EAAKsN,iBAAmBtN,EAAK+S,iBAC7F/S,EAAKsN,iBAAmBtN,EAAK+S,iBAE1Bnc,EAAOoY,gBAA4C,SAA1BpY,EAAO2f,gBAA6BvW,EAAKsN,iBAAmBtN,EAAK+S,iBAC7F/S,EAAKsN,iBAAmBtN,EAAK+S,gBAE1Bnc,EAAOoY,gBAAmBpY,EAAOmY,iBACpC/O,EAAKsN,iBAAmBtN,EAAK+S,gBAI3B3b,EAAO2Z,UAAY,EAAG,CACxB,KAAIhZ,KAAK2D,IAAImX,GAAQzb,EAAO2Z,WAAa/Q,EAAKwW,oBAW5C,YADAxW,EAAKsN,iBAAmBtN,EAAK+S,gBAT7B,IAAK/S,EAAKwW,mBAMR,OALAxW,EAAKwW,oBAAqB,EAC1BnC,EAAQb,OAASa,EAAQ0B,SACzB1B,EAAQ6B,OAAS7B,EAAQ2B,SACzBhW,EAAKsN,iBAAmBtN,EAAK+S,oBAC7BsB,EAAQxB,KAAOjc,EAAO+L,eAAiB0R,EAAQ0B,SAAW1B,EAAQb,OAASa,EAAQ2B,SAAW3B,EAAQ6B,OAO5G,CACK9e,EAAOgiB,eAAgBhiB,EAAO4N,WAG/B5N,EAAO2f,UAAY3f,EAAO2f,SAASpT,SAAW/M,EAAOmgB,UAAY3f,EAAOuQ,uBAC1E/Q,EAAOmV,oBACPnV,EAAOkU,uBAEL1T,EAAO2f,UAAY3f,EAAO2f,SAASpT,SAAW/M,EAAOmgB,UACvDngB,EAAOmgB,SAASC,cAGlBpgB,EAAOgT,eAAe5J,EAAKsN,kBAE3B1W,EAAO2W,aAAavN,EAAKsN,kBAC3B,CAEA,SAAS+L,EAAWra,GAClB,MAAMpI,EAAS/E,KACTmO,EAAOpJ,EAAOkc,gBACpB,IAEImE,EAFA/b,EAAI8D,EACJ9D,EAAE4Y,gBAAe5Y,EAAIA,EAAE4Y,eAG3B,GADgC,aAAX5Y,EAAE6Y,MAAkC,gBAAX7Y,EAAE6Y,MAO9C,GADAkD,EAAc,IAAI/b,EAAEgc,gBAAgBjkB,QAAOkc,GAAKA,EAAEgF,aAAenU,EAAKkU,UAAS,IAC1E+C,GAAeA,EAAY9C,aAAenU,EAAKkU,QAAS,WAN5C,CACjB,GAAqB,OAAjBlU,EAAKkU,QAAkB,OAC3B,GAAIhZ,EAAE8Y,YAAchU,EAAKgU,UAAW,OACpCiD,EAAc/b,CAChB,CAIA,GAAI,CAAC,gBAAiB,aAAc,eAAgB,eAAe4C,SAAS5C,EAAE6Y,MAAO,CAEnF,KADgB,CAAC,gBAAiB,eAAejW,SAAS5C,EAAE6Y,QAAUnd,EAAO+E,QAAQgC,UAAY/G,EAAO+E,QAAQwC,YAE9G,MAEJ,CACA6B,EAAKgU,UAAY,KACjBhU,EAAKkU,QAAU,KACf,MAAM9c,OACJA,EAAMid,QACNA,EACA/Q,aAAcC,EAAGQ,WACjBA,EAAUJ,QACVA,GACE/M,EACJ,IAAK+M,EAAS,OACd,IAAKvM,EAAOkd,eAAmC,UAAlBpZ,EAAEqZ,YAAyB,OAKxD,GAJIvU,EAAKmW,qBACPvf,EAAOmJ,KAAK,WAAY7E,GAE1B8E,EAAKmW,qBAAsB,GACtBnW,EAAK8U,UAMR,OALI9U,EAAK+U,SAAW3d,EAAO0hB,YACzBliB,EAAOmiB,eAAc,GAEvB/Y,EAAK+U,SAAU,OACf/U,EAAKqW,aAAc,GAKjBjf,EAAO0hB,YAAc9Y,EAAK+U,SAAW/U,EAAK8U,aAAwC,IAA1Ble,EAAOmY,iBAAqD,IAA1BnY,EAAOoY,iBACnGpY,EAAOmiB,eAAc,GAIvB,MAAMO,EAAejmB,IACfkmB,EAAWD,EAAetZ,EAAKsW,eAGrC,GAAI1f,EAAOif,WAAY,CACrB,MAAM2D,EAAWte,EAAE6R,MAAQ7R,EAAEia,cAAgBja,EAAEia,eAC/Cve,EAAOkW,mBAAmB0M,GAAYA,EAAS,IAAMte,EAAEpM,OAAQ0qB,GAC/D5iB,EAAOmJ,KAAK,YAAa7E,GACrBqe,EAAW,KAAOD,EAAetZ,EAAKyZ,cAAgB,KACxD7iB,EAAOmJ,KAAK,wBAAyB7E,EAEzC,CAKA,GAJA8E,EAAKyZ,cAAgBpmB,IACrBF,GAAS,KACFyD,EAAOkI,YAAWlI,EAAOif,YAAa,EAAI,KAE5C7V,EAAK8U,YAAc9U,EAAK+U,UAAYne,EAAO2f,gBAAmC,IAAjBlC,EAAQxB,OAAe7S,EAAKgZ,eAAiBhZ,EAAKsN,mBAAqBtN,EAAK+S,iBAAmB/S,EAAKgZ,cAIpK,OAHAhZ,EAAK8U,WAAY,EACjB9U,EAAK+U,SAAU,OACf/U,EAAKqW,aAAc,GAMrB,IAAIqD,EAMJ,GATA1Z,EAAK8U,WAAY,EACjB9U,EAAK+U,SAAU,EACf/U,EAAKqW,aAAc,EAGjBqD,EADEtiB,EAAOgiB,aACI7V,EAAM3M,EAAOI,WAAaJ,EAAOI,WAEhCgJ,EAAKsN,iBAEjBlW,EAAO4N,QACT,OAEF,GAAI5N,EAAO2f,UAAY3f,EAAO2f,SAASpT,QAIrC,YAHA/M,EAAOmgB,SAASsC,WAAW,CACzBK,eAMJ,MAAMC,EAAcD,IAAe9iB,EAAOmT,iBAAmBnT,EAAOQ,OAAOiL,KAC3E,IAAIuX,EAAY,EACZhT,EAAYhQ,EAAOoN,gBAAgB,GACvC,IAAK,IAAIxO,EAAI,EAAGA,EAAIuO,EAAW5U,OAAQqG,GAAKA,EAAI4B,EAAO+O,mBAAqB,EAAI/O,EAAO8O,eAAgB,CACrG,MAAMgK,EAAY1a,EAAI4B,EAAO+O,mBAAqB,EAAI,EAAI/O,EAAO8O,oBACxB,IAA9BnC,EAAWvO,EAAI0a,IACpByJ,GAAeD,GAAc3V,EAAWvO,IAAMkkB,EAAa3V,EAAWvO,EAAI0a,MAC5E0J,EAAYpkB,EACZoR,EAAY7C,EAAWvO,EAAI0a,GAAanM,EAAWvO,KAE5CmkB,GAAeD,GAAc3V,EAAWvO,MACjDokB,EAAYpkB,EACZoR,EAAY7C,EAAWA,EAAW5U,OAAS,GAAK4U,EAAWA,EAAW5U,OAAS,GAEnF,CACA,IAAI0qB,EAAmB,KACnBC,EAAkB,KAClB1iB,EAAOgL,SACLxL,EAAOoT,YACT8P,EAAkB1iB,EAAOsM,SAAWtM,EAAOsM,QAAQC,SAAW/M,EAAO8M,QAAU9M,EAAO8M,QAAQvC,OAAOhS,OAAS,EAAIyH,EAAOuK,OAAOhS,OAAS,EAChIyH,EAAOqT,QAChB4P,EAAmB,IAIvB,MAAME,GAASL,EAAa3V,EAAW6V,IAAchT,EAC/CsJ,EAAY0J,EAAYxiB,EAAO+O,mBAAqB,EAAI,EAAI/O,EAAO8O,eACzE,GAAIqT,EAAWniB,EAAO4iB,aAAc,CAElC,IAAK5iB,EAAO6iB,WAEV,YADArjB,EAAO8X,QAAQ9X,EAAO+K,aAGM,SAA1B/K,EAAO2f,iBACLwD,GAAS3iB,EAAO8iB,gBAAiBtjB,EAAO8X,QAAQtX,EAAOgL,QAAUxL,EAAOqT,MAAQ4P,EAAmBD,EAAY1J,GAAgBtZ,EAAO8X,QAAQkL,IAEtH,SAA1BhjB,EAAO2f,iBACLwD,EAAQ,EAAI3iB,EAAO8iB,gBACrBtjB,EAAO8X,QAAQkL,EAAY1J,GACE,OAApB4J,GAA4BC,EAAQ,GAAKhiB,KAAK2D,IAAIqe,GAAS3iB,EAAO8iB,gBAC3EtjB,EAAO8X,QAAQoL,GAEfljB,EAAO8X,QAAQkL,GAGrB,KAAO,CAEL,IAAKxiB,EAAO+iB,YAEV,YADAvjB,EAAO8X,QAAQ9X,EAAO+K,aAGE/K,EAAOwjB,aAAelf,EAAEpM,SAAW8H,EAAOwjB,WAAWC,QAAUnf,EAAEpM,SAAW8H,EAAOwjB,WAAWE,QAQ7Gpf,EAAEpM,SAAW8H,EAAOwjB,WAAWC,OACxCzjB,EAAO8X,QAAQkL,EAAY1J,GAE3BtZ,EAAO8X,QAAQkL,IATe,SAA1BhjB,EAAO2f,gBACT3f,EAAO8X,QAA6B,OAArBmL,EAA4BA,EAAmBD,EAAY1J,GAE9C,SAA1BtZ,EAAO2f,gBACT3f,EAAO8X,QAA4B,OAApBoL,EAA2BA,EAAkBF,GAOlE,CACF,CAEA,SAASW,IACP,MAAM3jB,EAAS/E,MACTuF,OACJA,EAAM7D,GACNA,GACEqD,EACJ,GAAIrD,GAAyB,IAAnBA,EAAG+H,YAAmB,OAG5BlE,EAAOkO,aACT1O,EAAO4jB,gBAIT,MAAMzL,eACJA,EAAcC,eACdA,EAAclL,SACdA,GACElN,EACE6M,EAAY7M,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAG1D/M,EAAOmY,gBAAiB,EACxBnY,EAAOoY,gBAAiB,EACxBpY,EAAO4L,aACP5L,EAAOoM,eACPpM,EAAOkU,sBACP,MAAM2P,EAAgBhX,GAAarM,EAAOiL,OACZ,SAAzBjL,EAAOoK,eAA4BpK,EAAOoK,cAAgB,KAAM5K,EAAOqT,OAAUrT,EAAOoT,aAAgBpT,EAAOQ,OAAO2N,gBAAmB0V,EAGxI7jB,EAAOQ,OAAOiL,OAASoB,EACzB7M,EAAO4Y,YAAY5Y,EAAO0L,UAAW,GAAG,GAAO,GAE/C1L,EAAO8X,QAAQ9X,EAAO+K,YAAa,GAAG,GAAO,GAL/C/K,EAAO8X,QAAQ9X,EAAOuK,OAAOhS,OAAS,EAAG,GAAG,GAAO,GAQjDyH,EAAO8jB,UAAY9jB,EAAO8jB,SAASC,SAAW/jB,EAAO8jB,SAASE,SAChExoB,aAAawE,EAAO8jB,SAASG,eAC7BjkB,EAAO8jB,SAASG,cAAgB1oB,YAAW,KACrCyE,EAAO8jB,UAAY9jB,EAAO8jB,SAASC,SAAW/jB,EAAO8jB,SAASE,QAChEhkB,EAAO8jB,SAASI,QAClB,GACC,MAGLlkB,EAAOoY,eAAiBA,EACxBpY,EAAOmY,eAAiBA,EACpBnY,EAAOQ,OAAOqQ,eAAiB3D,IAAalN,EAAOkN,UACrDlN,EAAO8Q,eAEX,CAEA,SAASqT,EAAQ7f,GACf,MAAMtE,EAAS/E,KACV+E,EAAO+M,UACP/M,EAAOif,aACNjf,EAAOQ,OAAO4jB,eAAe9f,EAAE0Y,iBAC/Bhd,EAAOQ,OAAO6jB,0BAA4BrkB,EAAOqX,YACnD/S,EAAE8c,kBACF9c,EAAEggB,6BAGR,CAEA,SAASC,IACP,MAAMvkB,EAAS/E,MACTyF,UACJA,EAASgM,aACTA,EAAYK,QACZA,GACE/M,EACJ,IAAK+M,EAAS,OAWd,IAAI8J,EAVJ7W,EAAOgX,kBAAoBhX,EAAOI,UAC9BJ,EAAO+L,eACT/L,EAAOI,WAAaM,EAAU6C,WAE9BvD,EAAOI,WAAaM,EAAU2C,UAGP,IAArBrD,EAAOI,YAAiBJ,EAAOI,UAAY,GAC/CJ,EAAOmV,oBACPnV,EAAOkU,sBAEP,MAAMhB,EAAiBlT,EAAOmT,eAAiBnT,EAAOuS,eAEpDsE,EADqB,IAAnB3D,EACY,GAEClT,EAAOI,UAAYJ,EAAOuS,gBAAkBW,EAEzD2D,IAAgB7W,EAAOkB,UACzBlB,EAAOgT,eAAetG,GAAgB1M,EAAOI,UAAYJ,EAAOI,WAElEJ,EAAOmJ,KAAK,eAAgBnJ,EAAOI,WAAW,EAChD,CAEA,SAASokB,EAAOlgB,GACd,MAAMtE,EAAS/E,KACf8O,EAAqB/J,EAAQsE,EAAEpM,QAC3B8H,EAAOQ,OAAO4N,SAA2C,SAAhCpO,EAAOQ,OAAOoK,gBAA6B5K,EAAOQ,OAAOyT,YAGtFjU,EAAO2L,QACT,CAEA,SAAS8Y,IACP,MAAMzkB,EAAS/E,KACX+E,EAAO0kB,gCACX1kB,EAAO0kB,+BAAgC,EACnC1kB,EAAOQ,OAAOggB,sBAChBxgB,EAAOrD,GAAGpD,MAAMorB,YAAc,QAElC,CAEA,MAAM9c,EAAS,CAAC7H,EAAQmI,KACtB,MAAM5N,EAAWF,KACXmG,OACJA,EAAM7D,GACNA,EAAE+D,UACFA,EAASoF,OACTA,GACE9F,EACE4kB,IAAYpkB,EAAO2gB,OACnB0D,EAAuB,OAAX1c,EAAkB,mBAAqB,sBACnD2c,EAAe3c,EAChBxL,GAAoB,iBAAPA,IAGlBpC,EAASsqB,GAAW,aAAc7kB,EAAOykB,qBAAsB,CAC7DM,SAAS,EACTH,YAEFjoB,EAAGkoB,GAAW,aAAc7kB,EAAOid,aAAc,CAC/C8H,SAAS,IAEXpoB,EAAGkoB,GAAW,cAAe7kB,EAAOid,aAAc,CAChD8H,SAAS,IAEXxqB,EAASsqB,GAAW,YAAa7kB,EAAOogB,YAAa,CACnD2E,SAAS,EACTH,YAEFrqB,EAASsqB,GAAW,cAAe7kB,EAAOogB,YAAa,CACrD2E,SAAS,EACTH,YAEFrqB,EAASsqB,GAAW,WAAY7kB,EAAOyiB,WAAY,CACjDsC,SAAS,IAEXxqB,EAASsqB,GAAW,YAAa7kB,EAAOyiB,WAAY,CAClDsC,SAAS,IAEXxqB,EAASsqB,GAAW,gBAAiB7kB,EAAOyiB,WAAY,CACtDsC,SAAS,IAEXxqB,EAASsqB,GAAW,cAAe7kB,EAAOyiB,WAAY,CACpDsC,SAAS,IAEXxqB,EAASsqB,GAAW,aAAc7kB,EAAOyiB,WAAY,CACnDsC,SAAS,IAEXxqB,EAASsqB,GAAW,eAAgB7kB,EAAOyiB,WAAY,CACrDsC,SAAS,IAEXxqB,EAASsqB,GAAW,cAAe7kB,EAAOyiB,WAAY,CACpDsC,SAAS,KAIPvkB,EAAO4jB,eAAiB5jB,EAAO6jB,2BACjC1nB,EAAGkoB,GAAW,QAAS7kB,EAAOmkB,SAAS,GAErC3jB,EAAO4N,SACT1N,EAAUmkB,GAAW,SAAU7kB,EAAOukB,UAIpC/jB,EAAOwkB,qBACThlB,EAAO8kB,GAAchf,EAAOC,KAAOD,EAAOE,QAAU,0CAA4C,wBAAyB2d,GAAU,GAEnI3jB,EAAO8kB,GAAc,iBAAkBnB,GAAU,GAInDhnB,EAAGkoB,GAAW,OAAQ7kB,EAAOwkB,OAAQ,CACnCI,SAAS,IACT,EA2BJ,MAAMK,EAAgB,CAACjlB,EAAQQ,IACtBR,EAAOgL,MAAQxK,EAAOwK,MAAQxK,EAAOwK,KAAKC,KAAO,EAmO1D,IAIIia,GAAW,CACbC,MAAM,EACNvN,UAAW,aACX0J,gBAAgB,EAChB8D,sBAAuB,mBACvBvH,kBAAmB,UACnBnF,aAAc,EACdjY,MAAO,IACP2N,SAAS,EACT4W,sBAAsB,EACtBK,gBAAgB,EAChBlE,QAAQ,EACRmE,gBAAgB,EAChBC,aAAc,SACdxY,SAAS,EACT8S,kBAAmB,wDAEnB3Z,MAAO,KACPE,OAAQ,KAERkR,gCAAgC,EAEhC5c,UAAW,KACX8qB,IAAK,KAEL3I,oBAAoB,EACpBC,mBAAoB,GAEpB7I,YAAY,EAEZxE,gBAAgB,EAEhBgH,kBAAkB,EAElBjH,OAAQ,QAIRd,iBAAahQ,EACb+mB,gBAAiB,SAEjB9X,aAAc,EACd/C,cAAe,EACf0E,eAAgB,EAChBC,mBAAoB,EACpB8J,oBAAoB,EACpBlL,gBAAgB,EAChB+B,sBAAsB,EACtB5C,mBAAoB,EAEpBE,kBAAmB,EAEnBkI,qBAAqB,EACrBnF,0BAA0B,EAE1BM,eAAe,EAEf7B,cAAc,EAEduS,WAAY,EACZT,WAAY,GACZpD,eAAe,EACf6F,aAAa,EACbF,YAAY,EACZC,gBAAiB,GACjBF,aAAc,IACdZ,cAAc,EACdzC,gBAAgB,EAChB5F,UAAW,EACX+G,0BAA0B,EAC1BlB,0BAA0B,EAC1BC,+BAA+B,EAC/BO,qBAAqB,EAErBkF,mBAAmB,EAEnBnD,YAAY,EACZD,gBAAiB,IAEjBvR,qBAAqB,EAErBmR,YAAY,EAEZkC,eAAe,EACfC,0BAA0B,EAC1B7N,qBAAqB,EAErB/K,MAAM,EACNuP,oBAAoB,EACpBG,qBAAsB,EACtB5B,qBAAqB,EAErB/N,QAAQ,EAER4M,gBAAgB,EAChBD,gBAAgB,EAChB+G,aAAc,KAEdR,WAAW,EACXL,eAAgB,oBAChBG,kBAAmB,KAEnBmH,kBAAkB,EAClBvU,wBAAyB,GAEzBF,uBAAwB,UAExB/G,WAAY,eACZ2Q,gBAAiB,qBACjB/F,iBAAkB,sBAClBlC,kBAAmB,uBACnBC,uBAAwB,6BACxBkC,eAAgB,oBAChBC,eAAgB,oBAChB2Q,aAAc,iBACdvb,mBAAoB,wBACpBM,oBAAqB,EAErBsL,oBAAoB,EAEpB4P,cAAc,GAGhB,SAASC,GAAmBtlB,EAAQulB,GAClC,OAAO,SAAsBjuB,QACf,IAARA,IACFA,EAAM,CAAC,GAET,MAAMkuB,EAAkBhuB,OAAOI,KAAKN,GAAK,GACnCmuB,EAAenuB,EAAIkuB,GACG,iBAAjBC,GAA8C,OAAjBA,IAIR,IAA5BzlB,EAAOwlB,KACTxlB,EAAOwlB,GAAmB,CACxBjZ,SAAS,IAGW,eAApBiZ,GAAoCxlB,EAAOwlB,IAAoBxlB,EAAOwlB,GAAiBjZ,UAAYvM,EAAOwlB,GAAiBtC,SAAWljB,EAAOwlB,GAAiBvC,SAChKjjB,EAAOwlB,GAAiBE,MAAO,GAE7B,CAAC,aAAc,aAAahnB,QAAQ8mB,IAAoB,GAAKxlB,EAAOwlB,IAAoBxlB,EAAOwlB,GAAiBjZ,UAAYvM,EAAOwlB,GAAiBrpB,KACtJ6D,EAAOwlB,GAAiBE,MAAO,GAE3BF,KAAmBxlB,GAAU,YAAaylB,GAIT,iBAA5BzlB,EAAOwlB,IAAmC,YAAaxlB,EAAOwlB,KACvExlB,EAAOwlB,GAAiBjZ,SAAU,GAE/BvM,EAAOwlB,KAAkBxlB,EAAOwlB,GAAmB,CACtDjZ,SAAS,IAEXxO,EAASwnB,EAAkBjuB,IATzByG,EAASwnB,EAAkBjuB,IAf3ByG,EAASwnB,EAAkBjuB,EAyB/B,CACF,CAGA,MAAMquB,GAAa,CACjBxe,gBACAgE,SACAvL,YACAgmB,WAl4De,CACf5U,cA/EF,SAAuBjR,EAAUqW,GAC/B,MAAM5W,EAAS/E,KACV+E,EAAOQ,OAAO4N,UACjBpO,EAAOU,UAAUnH,MAAM8sB,mBAAqB,GAAG9lB,MAC/CP,EAAOU,UAAUnH,MAAM+sB,gBAA+B,IAAb/lB,EAAiB,MAAQ,IAEpEP,EAAOmJ,KAAK,gBAAiB5I,EAAUqW,EACzC,EAyEEyB,gBAzCF,SAAyBnB,EAAcU,QAChB,IAAjBV,IACFA,GAAe,GAEjB,MAAMlX,EAAS/E,MACTuF,OACJA,GACER,EACAQ,EAAO4N,UACP5N,EAAOyT,YACTjU,EAAOqR,mBAETsG,EAAe,CACb3X,SACAkX,eACAU,YACAC,KAAM,UAEV,EAwBES,cAtBF,SAAuBpB,EAAcU,QACd,IAAjBV,IACFA,GAAe,GAEjB,MAAMlX,EAAS/E,MACTuF,OACJA,GACER,EACJA,EAAOqX,WAAY,EACf7W,EAAO4N,UACXpO,EAAOwR,cAAc,GACrBmG,EAAe,CACb3X,SACAkX,eACAU,YACAC,KAAM,QAEV,GAq4DElJ,QACAlD,OACAyW,WAhpCe,CACfC,cAjCF,SAAuBoE,GACrB,MAAMvmB,EAAS/E,KACf,IAAK+E,EAAOQ,OAAOkd,eAAiB1d,EAAOQ,OAAOqQ,eAAiB7Q,EAAOwmB,UAAYxmB,EAAOQ,OAAO4N,QAAS,OAC7G,MAAMzR,EAAyC,cAApCqD,EAAOQ,OAAOqd,kBAAoC7d,EAAOrD,GAAKqD,EAAOU,UAC5EV,EAAOkK,YACTlK,EAAO6b,qBAAsB,GAE/Blf,EAAGpD,MAAMktB,OAAS,OAClB9pB,EAAGpD,MAAMktB,OAASF,EAAS,WAAa,OACpCvmB,EAAOkK,WACTxO,uBAAsB,KACpBsE,EAAO6b,qBAAsB,CAAK,GAGxC,EAoBE6K,gBAlBF,WACE,MAAM1mB,EAAS/E,KACX+E,EAAOQ,OAAOqQ,eAAiB7Q,EAAOwmB,UAAYxmB,EAAOQ,OAAO4N,UAGhEpO,EAAOkK,YACTlK,EAAO6b,qBAAsB,GAE/B7b,EAA2C,cAApCA,EAAOQ,OAAOqd,kBAAoC,KAAO,aAAatkB,MAAMktB,OAAS,GACxFzmB,EAAOkK,WACTxO,uBAAsB,KACpBsE,EAAO6b,qBAAsB,CAAK,IAGxC,GAmpCEhU,OArZa,CACb8e,aArBF,WACE,MAAM3mB,EAAS/E,MACTuF,OACJA,GACER,EACJA,EAAOid,aAAeA,EAAa2J,KAAK5mB,GACxCA,EAAOogB,YAAcA,EAAYwG,KAAK5mB,GACtCA,EAAOyiB,WAAaA,EAAWmE,KAAK5mB,GACpCA,EAAOykB,qBAAuBA,EAAqBmC,KAAK5mB,GACpDQ,EAAO4N,UACTpO,EAAOukB,SAAWA,EAASqC,KAAK5mB,IAElCA,EAAOmkB,QAAUA,EAAQyC,KAAK5mB,GAC9BA,EAAOwkB,OAASA,EAAOoC,KAAK5mB,GAC5B6H,EAAO7H,EAAQ,KACjB,EAOE6mB,aANF,WAEEhf,EADe5M,KACA,MACjB,GAuZEyT,YAlRgB,CAChBkV,cA7HF,WACE,MAAM5jB,EAAS/E,MACTyQ,UACJA,EAASsK,YACTA,EAAWxV,OACXA,EAAM7D,GACNA,GACEqD,EACE0O,EAAclO,EAAOkO,YAC3B,IAAKA,GAAeA,GAAmD,IAApC1W,OAAOI,KAAKsW,GAAanW,OAAc,OAG1E,MAAMuuB,EAAa9mB,EAAO+mB,cAAcrY,EAAa1O,EAAOQ,OAAOilB,gBAAiBzlB,EAAOrD,IAC3F,IAAKmqB,GAAc9mB,EAAOgnB,oBAAsBF,EAAY,OAC5D,MACMG,GADuBH,KAAcpY,EAAcA,EAAYoY,QAAcpoB,IAClCsB,EAAOknB,eAClDC,EAAclC,EAAcjlB,EAAQQ,GACpC4mB,EAAanC,EAAcjlB,EAAQinB,GACnCI,EAAgBrnB,EAAOQ,OAAO0hB,WAC9BoF,EAAeL,EAAiB/E,WAChCqF,EAAa/mB,EAAOuM,QACtBoa,IAAgBC,GAClBzqB,EAAGiG,UAAUiH,OAAO,GAAGrJ,EAAO0Q,6BAA8B,GAAG1Q,EAAO0Q,qCACtElR,EAAOwnB,yBACGL,GAAeC,IACzBzqB,EAAGiG,UAAUC,IAAI,GAAGrC,EAAO0Q,+BACvB+V,EAAiBjc,KAAKoQ,MAAuC,WAA/B6L,EAAiBjc,KAAKoQ,OAAsB6L,EAAiBjc,KAAKoQ,MAA6B,WAArB5a,EAAOwK,KAAKoQ,OACtHze,EAAGiG,UAAUC,IAAI,GAAGrC,EAAO0Q,qCAE7BlR,EAAOwnB,wBAELH,IAAkBC,EACpBtnB,EAAO0mB,mBACGW,GAAiBC,GAC3BtnB,EAAOmiB,gBAIT,CAAC,aAAc,aAAc,aAAa9pB,SAAQuL,IAChD,QAAsC,IAA3BqjB,EAAiBrjB,GAAuB,OACnD,MAAM6jB,EAAmBjnB,EAAOoD,IAASpD,EAAOoD,GAAMmJ,QAChD2a,EAAkBT,EAAiBrjB,IAASqjB,EAAiBrjB,GAAMmJ,QACrE0a,IAAqBC,GACvB1nB,EAAO4D,GAAM+jB,WAEVF,GAAoBC,GACvB1nB,EAAO4D,GAAMgkB,QACf,IAEF,MAAMC,EAAmBZ,EAAiBrP,WAAaqP,EAAiBrP,YAAcpX,EAAOoX,UACvFkQ,EAActnB,EAAOiL,OAASwb,EAAiBrc,gBAAkBpK,EAAOoK,eAAiBid,GACzFE,EAAUvnB,EAAOiL,KACnBoc,GAAoB7R,GACtBhW,EAAOgoB,kBAETzpB,EAASyB,EAAOQ,OAAQymB,GACxB,MAAMgB,EAAYjoB,EAAOQ,OAAOuM,QAC1Bmb,EAAUloB,EAAOQ,OAAOiL,KAC9BzT,OAAOmU,OAAOnM,EAAQ,CACpB+f,eAAgB/f,EAAOQ,OAAOuf,eAC9B5H,eAAgBnY,EAAOQ,OAAO2X,eAC9BC,eAAgBpY,EAAOQ,OAAO4X,iBAE5BmP,IAAeU,EACjBjoB,EAAO2nB,WACGJ,GAAcU,GACxBjoB,EAAO4nB,SAET5nB,EAAOgnB,kBAAoBF,EAC3B9mB,EAAOmJ,KAAK,oBAAqB8d,GAC7BjR,IACE8R,GACF9nB,EAAOwc,cACPxc,EAAOya,WAAW/O,GAClB1L,EAAOoM,iBACG2b,GAAWG,GACrBloB,EAAOya,WAAW/O,GAClB1L,EAAOoM,gBACE2b,IAAYG,GACrBloB,EAAOwc,eAGXxc,EAAOmJ,KAAK,aAAc8d,EAC5B,EA2CEF,cAzCF,SAAuBrY,EAAaiQ,EAAMwJ,GAIxC,QAHa,IAATxJ,IACFA,EAAO,WAEJjQ,GAAwB,cAATiQ,IAAyBwJ,EAAa,OAC1D,IAAIrB,GAAa,EACjB,MAAM9qB,EAASF,IACTssB,EAAyB,WAATzJ,EAAoB3iB,EAAOqsB,YAAcF,EAAYrc,aACrEwc,EAAStwB,OAAOI,KAAKsW,GAAapR,KAAIirB,IAC1C,GAAqB,iBAAVA,GAA6C,IAAvBA,EAAMrpB,QAAQ,KAAY,CACzD,MAAMspB,EAAWxqB,WAAWuqB,EAAME,OAAO,IAEzC,MAAO,CACLC,MAFYN,EAAgBI,EAG5BD,QAEJ,CACA,MAAO,CACLG,MAAOH,EACPA,QACD,IAEHD,EAAOK,MAAK,CAACprB,EAAGqrB,IAAM3c,SAAS1O,EAAEmrB,MAAO,IAAMzc,SAAS2c,EAAEF,MAAO,MAChE,IAAK,IAAI9pB,EAAI,EAAGA,EAAI0pB,EAAO/vB,OAAQqG,GAAK,EAAG,CACzC,MAAM2pB,MACJA,EAAKG,MACLA,GACEJ,EAAO1pB,GACE,WAAT+f,EACE3iB,EAAOP,WAAW,eAAeitB,QAAYrmB,UAC/CykB,EAAayB,GAENG,GAASP,EAAYtc,cAC9Bib,EAAayB,EAEjB,CACA,OAAOzB,GAAc,KACvB,GAqREhW,cA9KoB,CACpBA,cA9BF,WACE,MAAM9Q,EAAS/E,MAEburB,SAAUqC,EAASroB,OACnBA,GACER,GACEsN,mBACJA,GACE9M,EACJ,GAAI8M,EAAoB,CACtB,MAAMsG,EAAiB5T,EAAOuK,OAAOhS,OAAS,EACxCuwB,EAAqB9oB,EAAOmN,WAAWyG,GAAkB5T,EAAOoN,gBAAgBwG,GAAuC,EAArBtG,EACxGtN,EAAOwmB,SAAWxmB,EAAOwE,KAAOskB,CAClC,MACE9oB,EAAOwmB,SAAsC,IAA3BxmB,EAAOkN,SAAS3U,QAEN,IAA1BiI,EAAO2X,iBACTnY,EAAOmY,gBAAkBnY,EAAOwmB,WAEJ,IAA1BhmB,EAAO4X,iBACTpY,EAAOoY,gBAAkBpY,EAAOwmB,UAE9BqC,GAAaA,IAAc7oB,EAAOwmB,WACpCxmB,EAAOqT,OAAQ,GAEbwV,IAAc7oB,EAAOwmB,UACvBxmB,EAAOmJ,KAAKnJ,EAAOwmB,SAAW,OAAS,SAE3C,GAgLEtqB,QAjNY,CACZ6sB,WAhDF,WACE,MAAM/oB,EAAS/E,MACT+tB,WACJA,EAAUxoB,OACVA,EAAMmM,IACNA,EAAGhQ,GACHA,EAAEmJ,OACFA,GACE9F,EAEEipB,EAzBR,SAAwBC,EAASC,GAC/B,MAAMC,EAAgB,GAYtB,OAXAF,EAAQ7wB,SAAQgxB,IACM,iBAATA,EACTrxB,OAAOI,KAAKixB,GAAMhxB,SAAQ2wB,IACpBK,EAAKL,IACPI,EAAcjnB,KAAKgnB,EAASH,EAC9B,IAEuB,iBAATK,GAChBD,EAAcjnB,KAAKgnB,EAASE,EAC9B,IAEKD,CACT,CAWmBE,CAAe,CAAC,cAAe9oB,EAAOoX,UAAW,CAChE,YAAa5X,EAAOQ,OAAO2f,UAAY3f,EAAO2f,SAASpT,SACtD,CACDwc,WAAc/oB,EAAOyT,YACpB,CACDtH,IAAOA,GACN,CACD3B,KAAQxK,EAAOwK,MAAQxK,EAAOwK,KAAKC,KAAO,GACzC,CACD,cAAezK,EAAOwK,MAAQxK,EAAOwK,KAAKC,KAAO,GAA0B,WAArBzK,EAAOwK,KAAKoQ,MACjE,CACDpV,QAAWF,EAAOE,SACjB,CACDD,IAAOD,EAAOC,KACb,CACD,WAAYvF,EAAO4N,SAClB,CACDob,SAAYhpB,EAAO4N,SAAW5N,EAAO2N,gBACpC,CACD,iBAAkB3N,EAAOuQ,sBACvBvQ,EAAO0Q,wBACX8X,EAAW7mB,QAAQ8mB,GACnBtsB,EAAGiG,UAAUC,OAAOmmB,GACpBhpB,EAAOwnB,sBACT,EAeEiC,cAbF,WACE,MACM9sB,GACJA,EAAEqsB,WACFA,GAHa/tB,KAKV0B,GAAoB,iBAAPA,IAClBA,EAAGiG,UAAUiH,UAAUmf,GANR/tB,KAORusB,uBACT,IAqNMkC,GAAmB,CAAC,EAC1B,MAAMC,GACJ,WAAA5xB,GACE,IAAI4E,EACA6D,EACJ,IAAK,IAAIiI,EAAOhK,UAAUlG,OAAQmQ,EAAO,IAAI5F,MAAM2F,GAAOE,EAAO,EAAGA,EAAOF,EAAME,IAC/ED,EAAKC,GAAQlK,UAAUkK,GAEL,IAAhBD,EAAKnQ,QAAgBmQ,EAAK,GAAG3Q,aAAwE,WAAzDC,OAAOoG,UAAUN,SAASO,KAAKqK,EAAK,IAAIpK,MAAM,GAAI,GAChGkC,EAASkI,EAAK,IAEb/L,EAAI6D,GAAUkI,EAEZlI,IAAQA,EAAS,CAAC,GACvBA,EAASjC,EAAS,CAAC,EAAGiC,GAClB7D,IAAO6D,EAAO7D,KAAI6D,EAAO7D,GAAKA,GAClC,MAAMpC,EAAWF,IACjB,GAAImG,EAAO7D,IAA2B,iBAAd6D,EAAO7D,IAAmBpC,EAASvB,iBAAiBwH,EAAO7D,IAAIpE,OAAS,EAAG,CACjG,MAAMqxB,EAAU,GAQhB,OAPArvB,EAASvB,iBAAiBwH,EAAO7D,IAAItE,SAAQ8vB,IAC3C,MAAM0B,EAAYtrB,EAAS,CAAC,EAAGiC,EAAQ,CACrC7D,GAAIwrB,IAENyB,EAAQznB,KAAK,IAAIwnB,GAAOE,GAAW,IAG9BD,CACT,CAGA,MAAM5pB,EAAS/E,KACf+E,EAAOP,YAAa,EACpBO,EAAOiF,QAAUE,IACjBnF,EAAO8F,OAASL,EAAU,CACxB/K,UAAW8F,EAAO9F,YAEpBsF,EAAO+E,QAAU8B,IACjB7G,EAAOiI,gBAAkB,CAAC,EAC1BjI,EAAO8I,mBAAqB,GAC5B9I,EAAO8pB,QAAU,IAAI9pB,EAAO+pB,aACxBvpB,EAAOspB,SAAWhnB,MAAMC,QAAQvC,EAAOspB,UACzC9pB,EAAO8pB,QAAQ3nB,QAAQ3B,EAAOspB,SAEhC,MAAM/D,EAAmB,CAAC,EAC1B/lB,EAAO8pB,QAAQzxB,SAAQ2xB,IACrBA,EAAI,CACFxpB,SACAR,SACAiqB,aAAcnE,GAAmBtlB,EAAQulB,GACzCne,GAAI5H,EAAO4H,GAAGgf,KAAK5mB,GACnBqI,KAAMrI,EAAOqI,KAAKue,KAAK5mB,GACvBuI,IAAKvI,EAAOuI,IAAIqe,KAAK5mB,GACrBmJ,KAAMnJ,EAAOmJ,KAAKyd,KAAK5mB,IACvB,IAIJ,MAAMkqB,EAAe3rB,EAAS,CAAC,EAAG2mB,GAAUa,GAqG5C,OAlGA/lB,EAAOQ,OAASjC,EAAS,CAAC,EAAG2rB,EAAcR,GAAkBlpB,GAC7DR,EAAOknB,eAAiB3oB,EAAS,CAAC,EAAGyB,EAAOQ,QAC5CR,EAAOmqB,aAAe5rB,EAAS,CAAC,EAAGiC,GAG/BR,EAAOQ,QAAUR,EAAOQ,OAAOoH,IACjC5P,OAAOI,KAAK4H,EAAOQ,OAAOoH,IAAIvP,SAAQ+xB,IACpCpqB,EAAO4H,GAAGwiB,EAAWpqB,EAAOQ,OAAOoH,GAAGwiB,GAAW,IAGjDpqB,EAAOQ,QAAUR,EAAOQ,OAAOqI,OACjC7I,EAAO6I,MAAM7I,EAAOQ,OAAOqI,OAI7B7Q,OAAOmU,OAAOnM,EAAQ,CACpB+M,QAAS/M,EAAOQ,OAAOuM,QACvBpQ,KAEAqsB,WAAY,GAEZze,OAAQ,GACR4C,WAAY,GACZD,SAAU,GACVE,gBAAiB,GAEjBrB,aAAY,IACyB,eAA5B/L,EAAOQ,OAAOoX,UAEvB5L,WAAU,IAC2B,aAA5BhM,EAAOQ,OAAOoX,UAGvB7M,YAAa,EACbW,UAAW,EAEX0H,aAAa,EACbC,OAAO,EAEPjT,UAAW,EACX4W,kBAAmB,EACnB9V,SAAU,EACVmpB,SAAU,EACVhT,WAAW,EACX,qBAAApF,GAGE,OAAO9Q,KAAKmpB,MAAMrvB,KAAKmF,UAAY,GAAK,IAAM,GAAK,EACrD,EAEA+X,eAAgBnY,EAAOQ,OAAO2X,eAC9BC,eAAgBpY,EAAOQ,OAAO4X,eAE9B8D,gBAAiB,CACfgC,eAAWxf,EACXyf,aAASzf,EACT6gB,yBAAqB7gB,EACrBghB,oBAAgBhhB,EAChB8gB,iBAAa9gB,EACbgY,sBAAkBhY,EAClByd,oBAAgBzd,EAChBkhB,wBAAoBlhB,EAEpBmhB,kBAAmB7f,EAAOQ,OAAOqf,kBAEjCgD,cAAe,EACf0H,kBAAc7rB,EAEd8rB,WAAY,GACZvI,yBAAqBvjB,EACrB+gB,iBAAa/gB,EACb0e,UAAW,KACXE,QAAS,MAGX2B,YAAY,EAEZc,eAAgB/f,EAAOQ,OAAOuf,eAC9BtC,QAAS,CACPb,OAAQ,EACR0C,OAAQ,EACRH,SAAU,EACVC,SAAU,EACVnD,KAAM,GAGRwO,aAAc,GACdC,aAAc,IAEhB1qB,EAAOmJ,KAAK,WAGRnJ,EAAOQ,OAAO2kB,MAChBnlB,EAAOmlB,OAKFnlB,CACT,CACA,iBAAAuM,CAAkBoe,GAChB,OAAI1vB,KAAK8Q,eACA4e,EAGF,CACLzkB,MAAS,SACT,aAAc,cACd,iBAAkB,eAClB,cAAe,aACf,eAAgB,gBAChB,eAAgB,cAChB,gBAAiB,iBACjB8H,YAAe,gBACf2c,EACJ,CACA,aAAAnQ,CAAc3Y,GACZ,MAAM2K,SACJA,EAAQhM,OACRA,GACEvF,KAEE0Y,EAAkB9P,EADT9B,EAAgByK,EAAU,IAAIhM,EAAO2J,4BACR,IAC5C,OAAOtG,EAAahC,GAAW8R,CACjC,CACA,mBAAAjC,CAAoB1I,GAClB,OAAO/N,KAAKuf,cAAcvf,KAAKsP,OAAOlO,QAAOwF,GAA6D,EAAlDA,EAAQkU,aAAa,6BAAmC/M,IAAO,GACzH,CACA,YAAAiS,GACE,MACMzO,SACJA,EAAQhM,OACRA,GAHavF,UAKRsP,OAASxI,EAAgByK,EAAU,IAAIhM,EAAO2J,2BACvD,CACA,MAAAyd,GACE,MAAM5nB,EAAS/E,KACX+E,EAAO+M,UACX/M,EAAO+M,SAAU,EACb/M,EAAOQ,OAAO0hB,YAChBliB,EAAOmiB,gBAETniB,EAAOmJ,KAAK,UACd,CACA,OAAAwe,GACE,MAAM3nB,EAAS/E,KACV+E,EAAO+M,UACZ/M,EAAO+M,SAAU,EACb/M,EAAOQ,OAAO0hB,YAChBliB,EAAO0mB,kBAET1mB,EAAOmJ,KAAK,WACd,CACA,WAAAyhB,CAAY1pB,EAAUT,GACpB,MAAMT,EAAS/E,KACfiG,EAAWC,KAAKE,IAAIF,KAAKC,IAAIF,EAAU,GAAI,GAC3C,MAAMG,EAAMrB,EAAOuS,eAEbxR,GADMf,EAAOmT,eACI9R,GAAOH,EAAWG,EACzCrB,EAAOiX,YAAYlW,OAA0B,IAAVN,EAAwB,EAAIA,GAC/DT,EAAOmV,oBACPnV,EAAOkU,qBACT,CACA,oBAAAsT,GACE,MAAMxnB,EAAS/E,KACf,IAAK+E,EAAOQ,OAAOqlB,eAAiB7lB,EAAOrD,GAAI,OAC/C,MAAMkuB,EAAM7qB,EAAOrD,GAAGgN,UAAUvN,MAAM,KAAKC,QAAOsN,GACT,IAAhCA,EAAUzK,QAAQ,WAA+E,IAA5DyK,EAAUzK,QAAQc,EAAOQ,OAAO0Q,0BAE9ElR,EAAOmJ,KAAK,oBAAqB0hB,EAAIptB,KAAK,KAC5C,CACA,eAAAqtB,CAAgBjpB,GACd,MAAM7B,EAAS/E,KACf,OAAI+E,EAAOkI,UAAkB,GACtBrG,EAAQ8H,UAAUvN,MAAM,KAAKC,QAAOsN,GACI,IAAtCA,EAAUzK,QAAQ,iBAAyE,IAAhDyK,EAAUzK,QAAQc,EAAOQ,OAAO2J,cACjF1M,KAAK,IACV,CACA,iBAAAyX,GACE,MAAMlV,EAAS/E,KACf,IAAK+E,EAAOQ,OAAOqlB,eAAiB7lB,EAAOrD,GAAI,OAC/C,MAAMouB,EAAU,GAChB/qB,EAAOuK,OAAOlS,SAAQwJ,IACpB,MAAMmnB,EAAahpB,EAAO8qB,gBAAgBjpB,GAC1CkpB,EAAQ5oB,KAAK,CACXN,UACAmnB,eAEFhpB,EAAOmJ,KAAK,cAAetH,EAASmnB,EAAW,IAEjDhpB,EAAOmJ,KAAK,gBAAiB4hB,EAC/B,CACA,oBAAAlgB,CAAqBmgB,EAAMC,QACZ,IAATD,IACFA,EAAO,gBAEK,IAAVC,IACFA,GAAQ,GAEV,MACMzqB,OACJA,EAAM+J,OACNA,EAAM4C,WACNA,EAAUC,gBACVA,EACA5I,KAAMiI,EAAU1B,YAChBA,GAPa9P,KASf,IAAIiwB,EAAM,EACV,GAAoC,iBAAzB1qB,EAAOoK,cAA4B,OAAOpK,EAAOoK,cAC5D,GAAIpK,EAAO2N,eAAgB,CACzB,IACIgd,EADA7c,EAAY/D,EAAOQ,GAAe5J,KAAK2J,KAAKP,EAAOQ,GAAasE,iBAAmB,EAEvF,IAAK,IAAIzQ,EAAImM,EAAc,EAAGnM,EAAI2L,EAAOhS,OAAQqG,GAAK,EAChD2L,EAAO3L,KAAOusB,IAChB7c,GAAanN,KAAK2J,KAAKP,EAAO3L,GAAGyQ,iBACjC6b,GAAO,EACH5c,EAAY7B,IAAY0e,GAAY,IAG5C,IAAK,IAAIvsB,EAAImM,EAAc,EAAGnM,GAAK,EAAGA,GAAK,EACrC2L,EAAO3L,KAAOusB,IAChB7c,GAAa/D,EAAO3L,GAAGyQ,gBACvB6b,GAAO,EACH5c,EAAY7B,IAAY0e,GAAY,GAG9C,MAEE,GAAa,YAATH,EACF,IAAK,IAAIpsB,EAAImM,EAAc,EAAGnM,EAAI2L,EAAOhS,OAAQqG,GAAK,EAAG,EACnCqsB,EAAQ9d,EAAWvO,GAAKwO,EAAgBxO,GAAKuO,EAAWpC,GAAe0B,EAAaU,EAAWvO,GAAKuO,EAAWpC,GAAe0B,KAEhJye,GAAO,EAEX,MAGA,IAAK,IAAItsB,EAAImM,EAAc,EAAGnM,GAAK,EAAGA,GAAK,EAAG,CACxBuO,EAAWpC,GAAeoC,EAAWvO,GAAK6N,IAE5Dye,GAAO,EAEX,CAGJ,OAAOA,CACT,CACA,MAAAvf,GACE,MAAM3L,EAAS/E,KACf,IAAK+E,GAAUA,EAAOkI,UAAW,OACjC,MAAMgF,SACJA,EAAQ1M,OACRA,GACER,EAcJ,SAAS2W,IACP,MAAMyU,EAAiBprB,EAAO0M,cAAmC,EAApB1M,EAAOI,UAAiBJ,EAAOI,UACtEmX,EAAepW,KAAKE,IAAIF,KAAKC,IAAIgqB,EAAgBprB,EAAOmT,gBAAiBnT,EAAOuS,gBACtFvS,EAAO2W,aAAaY,GACpBvX,EAAOmV,oBACPnV,EAAOkU,qBACT,CACA,IAAImX,EACJ,GApBI7qB,EAAOkO,aACT1O,EAAO4jB,gBAET,IAAI5jB,EAAOrD,GAAG3D,iBAAiB,qBAAqBX,SAAQ2R,IACtDA,EAAQshB,UACVvhB,EAAqB/J,EAAQgK,EAC/B,IAEFhK,EAAO4L,aACP5L,EAAOoM,eACPpM,EAAOgT,iBACPhT,EAAOkU,sBASH1T,EAAO2f,UAAY3f,EAAO2f,SAASpT,UAAYvM,EAAO4N,QACxDuI,IACInW,EAAOyT,YACTjU,EAAOqR,uBAEJ,CACL,IAA8B,SAAzB7Q,EAAOoK,eAA4BpK,EAAOoK,cAAgB,IAAM5K,EAAOqT,QAAU7S,EAAO2N,eAAgB,CAC3G,MAAM5D,EAASvK,EAAO8M,SAAWtM,EAAOsM,QAAQC,QAAU/M,EAAO8M,QAAQvC,OAASvK,EAAOuK,OACzF8gB,EAAarrB,EAAO8X,QAAQvN,EAAOhS,OAAS,EAAG,GAAG,GAAO,EAC3D,MACE8yB,EAAarrB,EAAO8X,QAAQ9X,EAAO+K,YAAa,GAAG,GAAO,GAEvDsgB,GACH1U,GAEJ,CACInW,EAAOqQ,eAAiB3D,IAAalN,EAAOkN,UAC9ClN,EAAO8Q,gBAET9Q,EAAOmJ,KAAK,SACd,CACA,eAAA6e,CAAgBuD,EAAcC,QACT,IAAfA,IACFA,GAAa,GAEf,MAAMxrB,EAAS/E,KACTwwB,EAAmBzrB,EAAOQ,OAAOoX,UAKvC,OAJK2T,IAEHA,EAAoC,eAArBE,EAAoC,WAAa,cAE9DF,IAAiBE,GAAqC,eAAjBF,GAAkD,aAAjBA,IAG1EvrB,EAAOrD,GAAGiG,UAAUiH,OAAO,GAAG7J,EAAOQ,OAAO0Q,yBAAyBua,KACrEzrB,EAAOrD,GAAGiG,UAAUC,IAAI,GAAG7C,EAAOQ,OAAO0Q,yBAAyBqa,KAClEvrB,EAAOwnB,uBACPxnB,EAAOQ,OAAOoX,UAAY2T,EAC1BvrB,EAAOuK,OAAOlS,SAAQwJ,IACC,aAAjB0pB,EACF1pB,EAAQtI,MAAM2M,MAAQ,GAEtBrE,EAAQtI,MAAM6M,OAAS,EACzB,IAEFpG,EAAOmJ,KAAK,mBACRqiB,GAAYxrB,EAAO2L,UAdd3L,CAgBX,CACA,uBAAA0rB,CAAwB9T,GACtB,MAAM5X,EAAS/E,KACX+E,EAAO2M,KAAqB,QAAdiL,IAAwB5X,EAAO2M,KAAqB,QAAdiL,IACxD5X,EAAO2M,IAAoB,QAAdiL,EACb5X,EAAO0M,aAA2C,eAA5B1M,EAAOQ,OAAOoX,WAA8B5X,EAAO2M,IACrE3M,EAAO2M,KACT3M,EAAOrD,GAAGiG,UAAUC,IAAI,GAAG7C,EAAOQ,OAAO0Q,6BACzClR,EAAOrD,GAAGkE,IAAM,QAEhBb,EAAOrD,GAAGiG,UAAUiH,OAAO,GAAG7J,EAAOQ,OAAO0Q,6BAC5ClR,EAAOrD,GAAGkE,IAAM,OAElBb,EAAO2L,SACT,CACA,KAAAggB,CAAM3pB,GACJ,MAAMhC,EAAS/E,KACf,GAAI+E,EAAO4rB,QAAS,OAAO,EAG3B,IAAIjvB,EAAKqF,GAAWhC,EAAOQ,OAAO7D,GAIlC,GAHkB,iBAAPA,IACTA,EAAKpC,SAASxB,cAAc4D,KAEzBA,EACH,OAAO,EAETA,EAAGqD,OAASA,EACRrD,EAAGkvB,YAAclvB,EAAGkvB,WAAW/xB,MAAQ6C,EAAGkvB,WAAW/xB,KAAKhB,WAAakH,EAAOQ,OAAO4kB,sBAAsB0G,gBAC7G9rB,EAAOkK,WAAY,GAErB,MAAM6hB,EAAqB,IAClB,KAAK/rB,EAAOQ,OAAOolB,cAAgB,IAAIzpB,OAAOC,MAAM,KAAKqB,KAAK,OAWvE,IAAIiD,EATe,MACjB,GAAI/D,GAAMA,EAAGmF,YAAcnF,EAAGmF,WAAW/I,cAAe,CAGtD,OAFY4D,EAAGmF,WAAW/I,cAAcgzB,IAG1C,CACA,OAAOhqB,EAAgBpF,EAAIovB,KAAsB,EAAE,EAGrCC,GAmBhB,OAlBKtrB,GAAaV,EAAOQ,OAAO8kB,iBAC9B5kB,EAAYtH,EAAc,MAAO4G,EAAOQ,OAAOolB,cAC/CjpB,EAAGoe,OAAOra,GACVqB,EAAgBpF,EAAI,IAAIqD,EAAOQ,OAAO2J,cAAc9R,SAAQwJ,IAC1DnB,EAAUqa,OAAOlZ,EAAQ,KAG7B7J,OAAOmU,OAAOnM,EAAQ,CACpBrD,KACA+D,YACA8L,SAAUxM,EAAOkK,YAAcvN,EAAGkvB,WAAW/xB,KAAKmyB,WAAatvB,EAAGkvB,WAAW/xB,KAAO4G,EACpFwrB,OAAQlsB,EAAOkK,UAAYvN,EAAGkvB,WAAW/xB,KAAO6C,EAChDivB,SAAS,EAETjf,IAA8B,QAAzBhQ,EAAGkE,IAAImG,eAA6D,QAAlCrD,EAAahH,EAAI,aACxD+P,aAA0C,eAA5B1M,EAAOQ,OAAOoX,YAAwD,QAAzBjb,EAAGkE,IAAImG,eAA6D,QAAlCrD,EAAahH,EAAI,cAC9GiQ,SAAiD,gBAAvCjJ,EAAajD,EAAW,cAE7B,CACT,CACA,IAAAykB,CAAKxoB,GACH,MAAMqD,EAAS/E,KACf,GAAI+E,EAAOgW,YAAa,OAAOhW,EAE/B,IAAgB,IADAA,EAAO2rB,MAAMhvB,GACN,OAAOqD,EAC9BA,EAAOmJ,KAAK,cAGRnJ,EAAOQ,OAAOkO,aAChB1O,EAAO4jB,gBAIT5jB,EAAO+oB,aAGP/oB,EAAO4L,aAGP5L,EAAOoM,eACHpM,EAAOQ,OAAOqQ,eAChB7Q,EAAO8Q,gBAIL9Q,EAAOQ,OAAO0hB,YAAcliB,EAAO+M,SACrC/M,EAAOmiB,gBAILniB,EAAOQ,OAAOiL,MAAQzL,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAChE/M,EAAO8X,QAAQ9X,EAAOQ,OAAOkY,aAAe1Y,EAAO8M,QAAQgD,aAAc,EAAG9P,EAAOQ,OAAOyV,oBAAoB,GAAO,GAErHjW,EAAO8X,QAAQ9X,EAAOQ,OAAOkY,aAAc,EAAG1Y,EAAOQ,OAAOyV,oBAAoB,GAAO,GAIrFjW,EAAOQ,OAAOiL,MAChBzL,EAAOya,aAITza,EAAO2mB,eACP,MAAMwF,EAAe,IAAInsB,EAAOrD,GAAG3D,iBAAiB,qBAsBpD,OArBIgH,EAAOkK,WACTiiB,EAAahqB,QAAQnC,EAAOksB,OAAOlzB,iBAAiB,qBAEtDmzB,EAAa9zB,SAAQ2R,IACfA,EAAQshB,SACVvhB,EAAqB/J,EAAQgK,GAE7BA,EAAQtR,iBAAiB,QAAQ4L,IAC/ByF,EAAqB/J,EAAQsE,EAAEpM,OAAO,GAE1C,IAEFuS,EAAQzK,GAGRA,EAAOgW,aAAc,EACrBvL,EAAQzK,GAGRA,EAAOmJ,KAAK,QACZnJ,EAAOmJ,KAAK,aACLnJ,CACT,CACA,OAAAosB,CAAQC,EAAgBC,QACC,IAAnBD,IACFA,GAAiB,QAEC,IAAhBC,IACFA,GAAc,GAEhB,MAAMtsB,EAAS/E,MACTuF,OACJA,EAAM7D,GACNA,EAAE+D,UACFA,EAAS6J,OACTA,GACEvK,EACJ,YAA6B,IAAlBA,EAAOQ,QAA0BR,EAAOkI,YAGnDlI,EAAOmJ,KAAK,iBAGZnJ,EAAOgW,aAAc,EAGrBhW,EAAO6mB,eAGHrmB,EAAOiL,MACTzL,EAAOwc,cAIL8P,IACFtsB,EAAOypB,gBACH9sB,GAAoB,iBAAPA,GACfA,EAAG6N,gBAAgB,SAEjB9J,GACFA,EAAU8J,gBAAgB,SAExBD,GAAUA,EAAOhS,QACnBgS,EAAOlS,SAAQwJ,IACbA,EAAQe,UAAUiH,OAAOrJ,EAAOqS,kBAAmBrS,EAAOsS,uBAAwBtS,EAAOuU,iBAAkBvU,EAAOwU,eAAgBxU,EAAOyU,gBACzIpT,EAAQ2I,gBAAgB,SACxB3I,EAAQ2I,gBAAgB,0BAA0B,KAIxDxK,EAAOmJ,KAAK,WAGZnR,OAAOI,KAAK4H,EAAOiI,iBAAiB5P,SAAQ+xB,IAC1CpqB,EAAOuI,IAAI6hB,EAAU,KAEA,IAAnBiC,IACErsB,EAAOrD,IAA2B,iBAAdqD,EAAOrD,KAC7BqD,EAAOrD,GAAGqD,OAAS,MAzkI3B,SAAqBlI,GACnB,MAAMy0B,EAASz0B,EACfE,OAAOI,KAAKm0B,GAAQl0B,SAAQC,IAC1B,IACEi0B,EAAOj0B,GAAO,IAChB,CAAE,MAAOgM,GAET,CACA,WACSioB,EAAOj0B,EAChB,CAAE,MAAOgM,GAET,IAEJ,CA6jIMkoB,CAAYxsB,IAEdA,EAAOkI,WAAY,GA5CV,IA8CX,CACA,qBAAOukB,CAAeC,GACpBnuB,EAASmrB,GAAkBgD,EAC7B,CACA,2BAAWhD,GACT,OAAOA,EACT,CACA,mBAAWxE,GACT,OAAOA,EACT,CACA,oBAAOyH,CAAc3C,GACdL,GAAOvrB,UAAU2rB,cAAaJ,GAAOvrB,UAAU2rB,YAAc,IAClE,MAAMD,EAAUH,GAAOvrB,UAAU2rB,YACd,mBAARC,GAAsBF,EAAQ5qB,QAAQ8qB,GAAO,GACtDF,EAAQ3nB,KAAK6nB,EAEjB,CACA,UAAO4C,CAAIC,GACT,OAAI/pB,MAAMC,QAAQ8pB,IAChBA,EAAOx0B,SAAQy0B,GAAKnD,GAAOgD,cAAcG,KAClCnD,KAETA,GAAOgD,cAAcE,GACdlD,GACT,EAw1BF,SAASoD,GAA0B/sB,EAAQknB,EAAgB1mB,EAAQwsB,GAejE,OAdIhtB,EAAOQ,OAAO8kB,gBAChBttB,OAAOI,KAAK40B,GAAY30B,SAAQC,IAC9B,IAAKkI,EAAOlI,KAAwB,IAAhBkI,EAAO0lB,KAAe,CACxC,IAAIlkB,EAAUD,EAAgB/B,EAAOrD,GAAI,IAAIqwB,EAAW10B,MAAQ,GAC3D0J,IACHA,EAAU5I,EAAc,MAAO4zB,EAAW10B,IAC1C0J,EAAQ2H,UAAYqjB,EAAW10B,GAC/B0H,EAAOrD,GAAGoe,OAAO/Y,IAEnBxB,EAAOlI,GAAO0J,EACdklB,EAAe5uB,GAAO0J,CACxB,KAGGxB,CACT,CAsMA,SAASysB,GAAkB/wB,GAIzB,YAHgB,IAAZA,IACFA,EAAU,IAEL,IAAIA,EAAQC,OAAOqB,QAAQ,eAAgB,QACnDA,QAAQ,KAAM,MACf,CAioGA,SAAS0vB,GAAY3iB,GACnB,MAAMvK,EAAS/E,MACTuF,OACJA,EAAMgM,SACNA,GACExM,EACAQ,EAAOiL,MACTzL,EAAOwc,cAET,MAAM2Q,EAAgBtrB,IACpB,GAAuB,iBAAZA,EAAsB,CAC/B,MAAMurB,EAAU7yB,SAASnB,cAAc,OACvCg0B,EAAQC,UAAYxrB,EACpB2K,EAASuO,OAAOqS,EAAQ/zB,SAAS,IACjC+zB,EAAQC,UAAY,EACtB,MACE7gB,EAASuO,OAAOlZ,EAClB,EAEF,GAAsB,iBAAX0I,GAAuB,WAAYA,EAC5C,IAAK,IAAI3L,EAAI,EAAGA,EAAI2L,EAAOhS,OAAQqG,GAAK,EAClC2L,EAAO3L,IAAIuuB,EAAc5iB,EAAO3L,SAGtCuuB,EAAc5iB,GAEhBvK,EAAOib,eACHza,EAAOiL,MACTzL,EAAOya,aAEJja,EAAO8sB,WAAYttB,EAAOkK,WAC7BlK,EAAO2L,QAEX,CAEA,SAAS4hB,GAAahjB,GACpB,MAAMvK,EAAS/E,MACTuF,OACJA,EAAMuK,YACNA,EAAWyB,SACXA,GACExM,EACAQ,EAAOiL,MACTzL,EAAOwc,cAET,IAAIpH,EAAiBrK,EAAc,EACnC,MAAMyiB,EAAiB3rB,IACrB,GAAuB,iBAAZA,EAAsB,CAC/B,MAAMurB,EAAU7yB,SAASnB,cAAc,OACvCg0B,EAAQC,UAAYxrB,EACpB2K,EAASuP,QAAQqR,EAAQ/zB,SAAS,IAClC+zB,EAAQC,UAAY,EACtB,MACE7gB,EAASuP,QAAQla,EACnB,EAEF,GAAsB,iBAAX0I,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAI3L,EAAI,EAAGA,EAAI2L,EAAOhS,OAAQqG,GAAK,EAClC2L,EAAO3L,IAAI4uB,EAAejjB,EAAO3L,IAEvCwW,EAAiBrK,EAAcR,EAAOhS,MACxC,MACEi1B,EAAejjB,GAEjBvK,EAAOib,eACHza,EAAOiL,MACTzL,EAAOya,aAEJja,EAAO8sB,WAAYttB,EAAOkK,WAC7BlK,EAAO2L,SAET3L,EAAO8X,QAAQ1C,EAAgB,GAAG,EACpC,CAEA,SAASqY,GAASzkB,EAAOuB,GACvB,MAAMvK,EAAS/E,MACTuF,OACJA,EAAMuK,YACNA,EAAWyB,SACXA,GACExM,EACJ,IAAI0tB,EAAoB3iB,EACpBvK,EAAOiL,OACTiiB,GAAqB1tB,EAAOua,aAC5Bva,EAAOwc,cACPxc,EAAOib,gBAET,MAAM0S,EAAa3tB,EAAOuK,OAAOhS,OACjC,GAAIyQ,GAAS,EAEX,YADAhJ,EAAOutB,aAAahjB,GAGtB,GAAIvB,GAAS2kB,EAEX,YADA3tB,EAAOktB,YAAY3iB,GAGrB,IAAI6K,EAAiBsY,EAAoB1kB,EAAQ0kB,EAAoB,EAAIA,EACzE,MAAME,EAAe,GACrB,IAAK,IAAIhvB,EAAI+uB,EAAa,EAAG/uB,GAAKoK,EAAOpK,GAAK,EAAG,CAC/C,MAAMivB,EAAe7tB,EAAOuK,OAAO3L,GACnCivB,EAAahkB,SACb+jB,EAAapkB,QAAQqkB,EACvB,CACA,GAAsB,iBAAXtjB,GAAuB,WAAYA,EAAQ,CACpD,IAAK,IAAI3L,EAAI,EAAGA,EAAI2L,EAAOhS,OAAQqG,GAAK,EAClC2L,EAAO3L,IAAI4N,EAASuO,OAAOxQ,EAAO3L,IAExCwW,EAAiBsY,EAAoB1kB,EAAQ0kB,EAAoBnjB,EAAOhS,OAASm1B,CACnF,MACElhB,EAASuO,OAAOxQ,GAElB,IAAK,IAAI3L,EAAI,EAAGA,EAAIgvB,EAAar1B,OAAQqG,GAAK,EAC5C4N,EAASuO,OAAO6S,EAAahvB,IAE/BoB,EAAOib,eACHza,EAAOiL,MACTzL,EAAOya,aAEJja,EAAO8sB,WAAYttB,EAAOkK,WAC7BlK,EAAO2L,SAELnL,EAAOiL,KACTzL,EAAO8X,QAAQ1C,EAAiBpV,EAAOua,aAAc,GAAG,GAExDva,EAAO8X,QAAQ1C,EAAgB,GAAG,EAEtC,CAEA,SAAS0Y,GAAYC,GACnB,MAAM/tB,EAAS/E,MACTuF,OACJA,EAAMuK,YACNA,GACE/K,EACJ,IAAI0tB,EAAoB3iB,EACpBvK,EAAOiL,OACTiiB,GAAqB1tB,EAAOua,aAC5Bva,EAAOwc,eAET,IACIwR,EADA5Y,EAAiBsY,EAErB,GAA6B,iBAAlBK,GAA8B,WAAYA,EAAe,CAClE,IAAK,IAAInvB,EAAI,EAAGA,EAAImvB,EAAcx1B,OAAQqG,GAAK,EAC7CovB,EAAgBD,EAAcnvB,GAC1BoB,EAAOuK,OAAOyjB,IAAgBhuB,EAAOuK,OAAOyjB,GAAenkB,SAC3DmkB,EAAgB5Y,IAAgBA,GAAkB,GAExDA,EAAiBjU,KAAKC,IAAIgU,EAAgB,EAC5C,MACE4Y,EAAgBD,EACZ/tB,EAAOuK,OAAOyjB,IAAgBhuB,EAAOuK,OAAOyjB,GAAenkB,SAC3DmkB,EAAgB5Y,IAAgBA,GAAkB,GACtDA,EAAiBjU,KAAKC,IAAIgU,EAAgB,GAE5CpV,EAAOib,eACHza,EAAOiL,MACTzL,EAAOya,aAEJja,EAAO8sB,WAAYttB,EAAOkK,WAC7BlK,EAAO2L,SAELnL,EAAOiL,KACTzL,EAAO8X,QAAQ1C,EAAiBpV,EAAOua,aAAc,GAAG,GAExDva,EAAO8X,QAAQ1C,EAAgB,GAAG,EAEtC,CAEA,SAAS6Y,KACP,MAAMjuB,EAAS/E,KACT8yB,EAAgB,GACtB,IAAK,IAAInvB,EAAI,EAAGA,EAAIoB,EAAOuK,OAAOhS,OAAQqG,GAAK,EAC7CmvB,EAAc5rB,KAAKvD,GAErBoB,EAAO8tB,YAAYC,EACrB,CAeA,SAASG,GAAW1tB,GAClB,MAAMgP,OACJA,EAAMxP,OACNA,EAAM4H,GACNA,EAAE+O,aACFA,EAAYnF,cACZA,EAAa2c,gBACbA,EAAeC,YACfA,EAAWC,gBACXA,EAAeC,gBACfA,GACE9tB,EA+BJ,IAAI+tB,EA9BJ3mB,EAAG,cAAc,KACf,GAAI5H,EAAOQ,OAAOgP,SAAWA,EAAQ,OACrCxP,EAAOgpB,WAAW7mB,KAAK,GAAGnC,EAAOQ,OAAO0Q,yBAAyB1B,KAC7D4e,GAAeA,KACjBpuB,EAAOgpB,WAAW7mB,KAAK,GAAGnC,EAAOQ,OAAO0Q,4BAE1C,MAAMsd,EAAwBL,EAAkBA,IAAoB,CAAC,EACrEn2B,OAAOmU,OAAOnM,EAAOQ,OAAQguB,GAC7Bx2B,OAAOmU,OAAOnM,EAAOknB,eAAgBsH,EAAsB,IAE7D5mB,EAAG,gBAAgB,KACb5H,EAAOQ,OAAOgP,SAAWA,GAC7BmH,GAAc,IAEhB/O,EAAG,iBAAiB,CAAC6mB,EAAIluB,KACnBP,EAAOQ,OAAOgP,SAAWA,GAC7BgC,EAAcjR,EAAS,IAEzBqH,EAAG,iBAAiB,KAClB,GAAI5H,EAAOQ,OAAOgP,SAAWA,GACzB6e,EAAiB,CACnB,IAAKC,IAAoBA,IAAkBI,aAAc,OAEzD1uB,EAAOuK,OAAOlS,SAAQwJ,IACpBA,EAAQ7I,iBAAiB,gHAAgHX,SAAQs2B,GAAYA,EAAS9kB,UAAS,IAGjLwkB,GACF,KAGFzmB,EAAG,iBAAiB,KACd5H,EAAOQ,OAAOgP,SAAWA,IACxBxP,EAAOuK,OAAOhS,SACjBg2B,GAAyB,GAE3B7yB,uBAAsB,KAChB6yB,GAA0BvuB,EAAOuK,QAAUvK,EAAOuK,OAAOhS,SAC3Doe,IACA4X,GAAyB,EAC3B,IACA,GAEN,CAEA,SAASK,GAAaC,EAAchtB,GAClC,MAAMitB,EAAcltB,EAAoBC,GAKxC,OAJIitB,IAAgBjtB,IAClBitB,EAAYv1B,MAAMw1B,mBAAqB,SACvCD,EAAYv1B,MAAM,+BAAiC,UAE9Cu1B,CACT,CAEA,SAASE,GAA2BjvB,GAClC,IAAIC,OACFA,EAAMO,SACNA,EAAQ0uB,kBACRA,EAAiBC,UACjBA,GACEnvB,EACJ,MAAMgL,YACJA,GACE/K,EASJ,GAAIA,EAAOQ,OAAOiW,kBAAiC,IAAblW,EAAgB,CACpD,IACI4uB,EADAC,GAAiB,EAGnBD,EADED,EACoBD,EAEAA,EAAkB5yB,QAAOyyB,IAC7C,MAAMnyB,EAAKmyB,EAAYlsB,UAAUgH,SAAS,0BAf/BjN,KACf,IAAKA,EAAGwH,cAGN,OADcnE,EAAOuK,OAAOlO,QAAOwF,GAAWA,EAAQC,YAAcD,EAAQC,aAAenF,EAAGkvB,aAAY,GAG5G,OAAOlvB,EAAGwH,aAAa,EASmDkrB,CAASP,GAAeA,EAC9F,OAAO9uB,EAAOwa,cAAc7d,KAAQoO,CAAW,IAGnDokB,EAAoB92B,SAAQsE,IAC1ByH,EAAqBzH,GAAI,KACvB,GAAIyyB,EAAgB,OACpB,IAAKpvB,GAAUA,EAAOkI,UAAW,OACjCknB,GAAiB,EACjBpvB,EAAOqX,WAAY,EACnB,MAAMuK,EAAM,IAAI5lB,OAAOhB,YAAY,gBAAiB,CAClD6mB,SAAS,EACTZ,YAAY,IAEdjhB,EAAOU,UAAUshB,cAAcJ,EAAI,GACnC,GAEN,CACF,CAwOA,SAAS0N,GAAaC,EAAQ1tB,EAAS3B,GACrC,MAAMsvB,EAAc,sBAAsBtvB,EAAO,IAAIA,IAAS,KAAKqvB,EAAS,wBAAwBA,IAAW,KACzGE,EAAkB7tB,EAAoBC,GAC5C,IAAI8sB,EAAWc,EAAgB12B,cAAc,IAAIy2B,EAAYpzB,MAAM,KAAKqB,KAAK,QAK7E,OAJKkxB,IACHA,EAAWv1B,EAAc,MAAOo2B,EAAYpzB,MAAM,MAClDqzB,EAAgB1U,OAAO4T,IAElBA,CACT,CA/sJA32B,OAAOI,KAAK+tB,IAAY9tB,SAAQq3B,IAC9B13B,OAAOI,KAAK+tB,GAAWuJ,IAAiBr3B,SAAQs3B,IAC9ChG,GAAOvrB,UAAUuxB,GAAexJ,GAAWuJ,GAAgBC,EAAY,GACvE,IAEJhG,GAAOiD,IAAI,CAvtHX,SAAgB7sB,GACd,IAAIC,OACFA,EAAM4H,GACNA,EAAEuB,KACFA,GACEpJ,EACJ,MAAM/D,EAASF,IACf,IAAIwxB,EAAW,KACXsC,EAAiB,KACrB,MAAMC,EAAgB,KACf7vB,IAAUA,EAAOkI,WAAclI,EAAOgW,cAC3C7M,EAAK,gBACLA,EAAK,UAAS,EAsCV2mB,EAA2B,KAC1B9vB,IAAUA,EAAOkI,WAAclI,EAAOgW,aAC3C7M,EAAK,oBAAoB,EAE3BvB,EAAG,QAAQ,KACL5H,EAAOQ,OAAO6kB,qBAAmD,IAA1BrpB,EAAO+zB,eAxC7C/vB,IAAUA,EAAOkI,WAAclI,EAAOgW,cAC3CsX,EAAW,IAAIyC,gBAAe7G,IAC5B0G,EAAiB5zB,EAAON,uBAAsB,KAC5C,MAAMwK,MACJA,EAAKE,OACLA,GACEpG,EACJ,IAAIgwB,EAAW9pB,EACXqL,EAAYnL,EAChB8iB,EAAQ7wB,SAAQ43B,IACd,IAAIC,eACFA,EAAcC,YACdA,EAAWj4B,OACXA,GACE+3B,EACA/3B,GAAUA,IAAW8H,EAAOrD,KAChCqzB,EAAWG,EAAcA,EAAYjqB,OAASgqB,EAAe,IAAMA,GAAgBE,WACnF7e,EAAY4e,EAAcA,EAAY/pB,QAAU8pB,EAAe,IAAMA,GAAgBG,UAAS,IAE5FL,IAAa9pB,GAASqL,IAAcnL,GACtCypB,GACF,GACA,IAEJvC,EAASgD,QAAQtwB,EAAOrD,MAoBxBX,EAAOtD,iBAAiB,SAAUm3B,GAClC7zB,EAAOtD,iBAAiB,oBAAqBo3B,GAAyB,IAExEloB,EAAG,WAAW,KApBRgoB,GACF5zB,EAAOJ,qBAAqBg0B,GAE1BtC,GAAYA,EAASiD,WAAavwB,EAAOrD,KAC3C2wB,EAASiD,UAAUvwB,EAAOrD,IAC1B2wB,EAAW,MAiBbtxB,EAAOrD,oBAAoB,SAAUk3B,GACrC7zB,EAAOrD,oBAAoB,oBAAqBm3B,EAAyB,GAE7E,EAEA,SAAkB/vB,GAChB,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,EAAEuB,KACFA,GACEpJ,EACJ,MAAMywB,EAAY,GACZx0B,EAASF,IACT20B,EAAS,SAAUv4B,EAAQw4B,QACf,IAAZA,IACFA,EAAU,CAAC,GAEb,MACMpD,EAAW,IADItxB,EAAO20B,kBAAoB30B,EAAO40B,yBACrBC,IAIhC,GAAI7wB,EAAO6b,oBAAqB,OAChC,GAAyB,IAArBgV,EAAUt4B,OAEZ,YADA4Q,EAAK,iBAAkB0nB,EAAU,IAGnC,MAAMC,EAAiB,WACrB3nB,EAAK,iBAAkB0nB,EAAU,GACnC,EACI70B,EAAON,sBACTM,EAAON,sBAAsBo1B,GAE7B90B,EAAOT,WAAWu1B,EAAgB,EACpC,IAEFxD,EAASgD,QAAQp4B,EAAQ,CACvB64B,gBAA0C,IAAvBL,EAAQK,YAAoCL,EAAQK,WACvEC,UAAWhxB,EAAOkK,iBAA2C,IAAtBwmB,EAAQM,WAAmCN,GAASM,UAC3FC,mBAAgD,IAA1BP,EAAQO,eAAuCP,EAAQO,gBAE/ET,EAAUruB,KAAKmrB,EACjB,EAyBArD,EAAa,CACXqD,UAAU,EACV4D,gBAAgB,EAChBC,sBAAsB,IAExBvpB,EAAG,QA7BU,KACX,GAAK5H,EAAOQ,OAAO8sB,SAAnB,CACA,GAAIttB,EAAOQ,OAAO0wB,eAAgB,CAChC,MAAME,EAAmBptB,EAAehE,EAAOksB,QAC/C,IAAK,IAAIttB,EAAI,EAAGA,EAAIwyB,EAAiB74B,OAAQqG,GAAK,EAChD6xB,EAAOW,EAAiBxyB,GAE5B,CAEA6xB,EAAOzwB,EAAOksB,OAAQ,CACpB8E,UAAWhxB,EAAOQ,OAAO2wB,uBAI3BV,EAAOzwB,EAAOU,UAAW,CACvBqwB,YAAY,GAdqB,CAejC,IAcJnpB,EAAG,WAZa,KACd4oB,EAAUn4B,SAAQi1B,IAChBA,EAAS+D,YAAY,IAEvBb,EAAUvnB,OAAO,EAAGunB,EAAUj4B,OAAO,GASzC,IAivRA,MAAMuxB,GAAU,CAnqKhB,SAAiB/pB,GACf,IAkBIuxB,GAlBAtxB,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,EAAEuB,KACFA,GACEpJ,EACJkqB,EAAa,CACXnd,QAAS,CACPC,SAAS,EACTxC,OAAQ,GACRgnB,OAAO,EACPC,YAAa,KACbC,eAAgB,KAChBC,sBAAsB,EACtBC,gBAAiB,EACjBC,eAAgB,KAIpB,MAAMr3B,EAAWF,IACjB2F,EAAO8M,QAAU,CACfykB,MAAO,CAAC,EACRnmB,UAAM1M,EACNF,QAAIE,EACJ6L,OAAQ,GACRsnB,OAAQ,EACR1kB,WAAY,IAEd,MAAMigB,EAAU7yB,EAASnB,cAAc,OACvC,SAASo4B,EAAY7iB,EAAO3F,GAC1B,MAAMxI,EAASR,EAAOQ,OAAOsM,QAC7B,GAAItM,EAAO+wB,OAASvxB,EAAO8M,QAAQykB,MAAMvoB,GACvC,OAAOhJ,EAAO8M,QAAQykB,MAAMvoB,GAG9B,IAAInH,EAmBJ,OAlBIrB,EAAOgxB,aACT3vB,EAAUrB,EAAOgxB,YAAYnzB,KAAK2B,EAAQ2O,EAAO3F,GAC1B,iBAAZnH,IACTurB,EAAQC,UAAYxrB,EACpBA,EAAUurB,EAAQ/zB,SAAS,KAG7BwI,EADS7B,EAAOkK,UACN9Q,EAAc,gBAEdA,EAAc,MAAO4G,EAAOQ,OAAO2J,YAE/CtI,EAAQrI,aAAa,0BAA2BwP,GAC3CxI,EAAOgxB,cACV3vB,EAAQwrB,UAAY1e,GAElBnO,EAAO+wB,QACTvxB,EAAO8M,QAAQykB,MAAMvoB,GAASnH,GAEzBA,CACT,CACA,SAAS8J,EAAOmmB,EAAOC,GACrB,MAAMnnB,cACJA,EAAa0E,eACbA,EAAcnB,eACdA,EACA1C,KAAMiW,EAAMhJ,aACZA,GACE1Y,EAAOQ,OACX,GAAIuxB,IAAerQ,GAAUhJ,EAAe,EAC1C,OAEF,MAAMiZ,gBACJA,EAAeC,eACfA,GACE5xB,EAAOQ,OAAOsM,SAEhB1B,KAAM4mB,EACNxzB,GAAIyzB,EAAU1nB,OACdA,EACA4C,WAAY+kB,EACZL,OAAQM,GACNnyB,EAAO8M,QACN9M,EAAOQ,OAAO4N,SACjBpO,EAAOmV,oBAET,MAAMpK,EAAc/K,EAAO+K,aAAe,EAC1C,IAAIqnB,EAEAriB,EACAD,EAFqBsiB,EAArBpyB,EAAO0M,aAA2B,QAA0B1M,EAAO+L,eAAiB,OAAS,MAG7FoC,GACF4B,EAAc5O,KAAKiO,MAAMxE,EAAgB,GAAK0E,EAAiBsiB,EAC/D9hB,EAAe3O,KAAKiO,MAAMxE,EAAgB,GAAK0E,EAAiBqiB,IAEhE5hB,EAAcnF,GAAiB0E,EAAiB,GAAKsiB,EACrD9hB,GAAgB4R,EAAS9W,EAAgB0E,GAAkBqiB,GAE7D,IAAIvmB,EAAOL,EAAc+E,EACrBtR,EAAKuM,EAAcgF,EAClB2R,IACHtW,EAAOjK,KAAKC,IAAIgK,EAAM,GACtB5M,EAAK2C,KAAKE,IAAI7C,EAAI+L,EAAOhS,OAAS,IAEpC,IAAIs5B,GAAU7xB,EAAOmN,WAAW/B,IAAS,IAAMpL,EAAOmN,WAAW,IAAM,GAgBvE,SAASklB,IACPryB,EAAOoM,eACPpM,EAAOgT,iBACPhT,EAAOkU,sBACP/K,EAAK,gBACP,CACA,GArBIuY,GAAU3W,GAAe+E,GAC3B1E,GAAQ0E,EACH3B,IAAgB0jB,GAAU7xB,EAAOmN,WAAW,KACxCuU,GAAU3W,EAAc+E,IACjC1E,GAAQ0E,EACJ3B,IAAgB0jB,GAAU7xB,EAAOmN,WAAW,KAElDnV,OAAOmU,OAAOnM,EAAO8M,QAAS,CAC5B1B,OACA5M,KACAqzB,SACA1kB,WAAYnN,EAAOmN,WACnB2C,eACAC,gBAQEiiB,IAAiB5mB,GAAQ6mB,IAAezzB,IAAOszB,EAQjD,OAPI9xB,EAAOmN,aAAe+kB,GAAsBL,IAAWM,GACzDnyB,EAAOuK,OAAOlS,SAAQwJ,IACpBA,EAAQtI,MAAM64B,GAAiBP,EAAS1wB,KAAK2D,IAAI9E,EAAOiS,yBAA5B,IAAwD,IAGxFjS,EAAOgT,sBACP7J,EAAK,iBAGP,GAAInJ,EAAOQ,OAAOsM,QAAQ2kB,eAkBxB,OAjBAzxB,EAAOQ,OAAOsM,QAAQ2kB,eAAepzB,KAAK2B,EAAQ,CAChD6xB,SACAzmB,OACA5M,KACA+L,OAAQ,WACN,MAAM+nB,EAAiB,GACvB,IAAK,IAAI1zB,EAAIwM,EAAMxM,GAAKJ,EAAII,GAAK,EAC/B0zB,EAAenwB,KAAKoI,EAAO3L,IAE7B,OAAO0zB,CACT,CANQ,UAQNtyB,EAAOQ,OAAOsM,QAAQ4kB,qBACxBW,IAEAlpB,EAAK,kBAIT,MAAMopB,EAAiB,GACjBC,EAAgB,GAChBhY,EAAgBxR,IACpB,IAAIiH,EAAajH,EAOjB,OANIA,EAAQ,EACViH,EAAa1F,EAAOhS,OAASyQ,EACpBiH,GAAc1F,EAAOhS,SAE9B0X,GAA0B1F,EAAOhS,QAE5B0X,CAAU,EAEnB,GAAI6hB,EACF9xB,EAAOuK,OAAOlO,QAAOM,GAAMA,EAAG0F,QAAQ,IAAIrC,EAAOQ,OAAO2J,8BAA6B9R,SAAQwJ,IAC3FA,EAAQgI,QAAQ,SAGlB,IAAK,IAAIjL,EAAIozB,EAAcpzB,GAAKqzB,EAAYrzB,GAAK,EAC/C,GAAIA,EAAIwM,GAAQxM,EAAIJ,EAAI,CACtB,MAAMyR,EAAauK,EAAc5b,GACjCoB,EAAOuK,OAAOlO,QAAOM,GAAMA,EAAG0F,QAAQ,IAAIrC,EAAOQ,OAAO2J,uCAAuC8F,8CAAuDA,SAAiB5X,SAAQwJ,IAC7KA,EAAQgI,QAAQ,GAEpB,CAGJ,MAAM4oB,EAAW/Q,GAAUnX,EAAOhS,OAAS,EACrCm6B,EAAShR,EAAyB,EAAhBnX,EAAOhS,OAAagS,EAAOhS,OACnD,IAAK,IAAIqG,EAAI6zB,EAAU7zB,EAAI8zB,EAAQ9zB,GAAK,EACtC,GAAIA,GAAKwM,GAAQxM,GAAKJ,EAAI,CACxB,MAAMyR,EAAauK,EAAc5b,QACP,IAAfqzB,GAA8BH,EACvCU,EAAcrwB,KAAK8N,IAEfrR,EAAIqzB,GAAYO,EAAcrwB,KAAK8N,GACnCrR,EAAIozB,GAAcO,EAAepwB,KAAK8N,GAE9C,CAKF,GAHAuiB,EAAcn6B,SAAQ2Q,IACpBhJ,EAAOwM,SAASuO,OAAOyW,EAAYjnB,EAAOvB,GAAQA,GAAO,IAEvD0Y,EACF,IAAK,IAAI9iB,EAAI2zB,EAAeh6B,OAAS,EAAGqG,GAAK,EAAGA,GAAK,EAAG,CACtD,MAAMoK,EAAQupB,EAAe3zB,GAC7BoB,EAAOwM,SAASuP,QAAQyV,EAAYjnB,EAAOvB,GAAQA,GACrD,MAEAupB,EAAe5J,MAAK,CAACprB,EAAGqrB,IAAMA,EAAIrrB,IAClCg1B,EAAel6B,SAAQ2Q,IACrBhJ,EAAOwM,SAASuP,QAAQyV,EAAYjnB,EAAOvB,GAAQA,GAAO,IAG9DjH,EAAgB/B,EAAOwM,SAAU,+BAA+BnU,SAAQwJ,IACtEA,EAAQtI,MAAM64B,GAAiBP,EAAS1wB,KAAK2D,IAAI9E,EAAOiS,yBAA5B,IAAwD,IAEtFogB,GACF,CAuFAzqB,EAAG,cAAc,KACf,IAAK5H,EAAOQ,OAAOsM,QAAQC,QAAS,OACpC,IAAI4lB,EACJ,QAAkD,IAAvC3yB,EAAOmqB,aAAard,QAAQvC,OAAwB,CAC7D,MAAMA,EAAS,IAAIvK,EAAOwM,SAASnT,UAAUgD,QAAOM,GAAMA,EAAG0F,QAAQ,IAAIrC,EAAOQ,OAAO2J,8BACnFI,GAAUA,EAAOhS,SACnByH,EAAO8M,QAAQvC,OAAS,IAAIA,GAC5BooB,GAAoB,EACpBpoB,EAAOlS,SAAQ,CAACwJ,EAASoO,KACvBpO,EAAQrI,aAAa,0BAA2ByW,GAChDjQ,EAAO8M,QAAQykB,MAAMthB,GAAcpO,EACnCA,EAAQgI,QAAQ,IAGtB,CACK8oB,IACH3yB,EAAO8M,QAAQvC,OAASvK,EAAOQ,OAAOsM,QAAQvC,QAEhDvK,EAAOgpB,WAAW7mB,KAAK,GAAGnC,EAAOQ,OAAO0Q,iCACxClR,EAAOQ,OAAOuQ,qBAAsB,EACpC/Q,EAAOknB,eAAenW,qBAAsB,EAC5CpF,GAAO,GAAO,EAAK,IAErB/D,EAAG,gBAAgB,KACZ5H,EAAOQ,OAAOsM,QAAQC,UACvB/M,EAAOQ,OAAO4N,UAAYpO,EAAOwY,mBACnChd,aAAa81B,GACbA,EAAiB/1B,YAAW,KAC1BoQ,GAAQ,GACP,MAEHA,IACF,IAEF/D,EAAG,sBAAsB,KAClB5H,EAAOQ,OAAOsM,QAAQC,SACvB/M,EAAOQ,OAAO4N,SAChB1O,EAAeM,EAAOU,UAAW,wBAAyB,GAAGV,EAAO8N,gBACtE,IAEF9V,OAAOmU,OAAOnM,EAAO8M,QAAS,CAC5BogB,YA/HF,SAAqB3iB,GACnB,GAAsB,iBAAXA,GAAuB,WAAYA,EAC5C,IAAK,IAAI3L,EAAI,EAAGA,EAAI2L,EAAOhS,OAAQqG,GAAK,EAClC2L,EAAO3L,IAAIoB,EAAO8M,QAAQvC,OAAOpI,KAAKoI,EAAO3L,SAGnDoB,EAAO8M,QAAQvC,OAAOpI,KAAKoI,GAE7BoB,GAAO,EACT,EAuHE4hB,aAtHF,SAAsBhjB,GACpB,MAAMQ,EAAc/K,EAAO+K,YAC3B,IAAIqK,EAAiBrK,EAAc,EAC/B6nB,EAAoB,EACxB,GAAI9vB,MAAMC,QAAQwH,GAAS,CACzB,IAAK,IAAI3L,EAAI,EAAGA,EAAI2L,EAAOhS,OAAQqG,GAAK,EAClC2L,EAAO3L,IAAIoB,EAAO8M,QAAQvC,OAAOf,QAAQe,EAAO3L,IAEtDwW,EAAiBrK,EAAcR,EAAOhS,OACtCq6B,EAAoBroB,EAAOhS,MAC7B,MACEyH,EAAO8M,QAAQvC,OAAOf,QAAQe,GAEhC,GAAIvK,EAAOQ,OAAOsM,QAAQykB,MAAO,CAC/B,MAAMA,EAAQvxB,EAAO8M,QAAQykB,MACvBsB,EAAW,CAAC,EAClB76B,OAAOI,KAAKm5B,GAAOl5B,SAAQy6B,IACzB,MAAMC,EAAWxB,EAAMuB,GACjBE,EAAgBD,EAAShd,aAAa,2BACxCid,GACFD,EAASv5B,aAAa,0BAA2ByS,SAAS+mB,EAAe,IAAMJ,GAEjFC,EAAS5mB,SAAS6mB,EAAa,IAAMF,GAAqBG,CAAQ,IAEpE/yB,EAAO8M,QAAQykB,MAAQsB,CACzB,CACAlnB,GAAO,GACP3L,EAAO8X,QAAQ1C,EAAgB,EACjC,EA2FE0Y,YA1FF,SAAqBC,GACnB,GAAI,MAAOA,EAAyD,OACpE,IAAIhjB,EAAc/K,EAAO+K,YACzB,GAAIjI,MAAMC,QAAQgrB,GAChB,IAAK,IAAInvB,EAAImvB,EAAcx1B,OAAS,EAAGqG,GAAK,EAAGA,GAAK,EAC9CoB,EAAOQ,OAAOsM,QAAQykB,eACjBvxB,EAAO8M,QAAQykB,MAAMxD,EAAcnvB,IAE1C5G,OAAOI,KAAK4H,EAAO8M,QAAQykB,OAAOl5B,SAAQC,IACpCA,EAAMy1B,IACR/tB,EAAO8M,QAAQykB,MAAMj5B,EAAM,GAAK0H,EAAO8M,QAAQykB,MAAMj5B,GACrD0H,EAAO8M,QAAQykB,MAAMj5B,EAAM,GAAGkB,aAAa,0BAA2BlB,EAAM,UACrE0H,EAAO8M,QAAQykB,MAAMj5B,GAC9B,KAGJ0H,EAAO8M,QAAQvC,OAAOtB,OAAO8kB,EAAcnvB,GAAI,GAC3CmvB,EAAcnvB,GAAKmM,IAAaA,GAAe,GACnDA,EAAc5J,KAAKC,IAAI2J,EAAa,QAGlC/K,EAAOQ,OAAOsM,QAAQykB,eACjBvxB,EAAO8M,QAAQykB,MAAMxD,GAE5B/1B,OAAOI,KAAK4H,EAAO8M,QAAQykB,OAAOl5B,SAAQC,IACpCA,EAAMy1B,IACR/tB,EAAO8M,QAAQykB,MAAMj5B,EAAM,GAAK0H,EAAO8M,QAAQykB,MAAMj5B,GACrD0H,EAAO8M,QAAQykB,MAAMj5B,EAAM,GAAGkB,aAAa,0BAA2BlB,EAAM,UACrE0H,EAAO8M,QAAQykB,MAAMj5B,GAC9B,KAGJ0H,EAAO8M,QAAQvC,OAAOtB,OAAO8kB,EAAe,GACxCA,EAAgBhjB,IAAaA,GAAe,GAChDA,EAAc5J,KAAKC,IAAI2J,EAAa,GAEtCY,GAAO,GACP3L,EAAO8X,QAAQ/M,EAAa,EAC9B,EAqDEkjB,gBApDF,WACEjuB,EAAO8M,QAAQvC,OAAS,GACpBvK,EAAOQ,OAAOsM,QAAQykB,QACxBvxB,EAAO8M,QAAQykB,MAAQ,CAAC,GAE1B5lB,GAAO,GACP3L,EAAO8X,QAAQ,EAAG,EACpB,EA8CEnM,UAEJ,EAGA,SAAkB5L,GAChB,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,EAAEuB,KACFA,GACEpJ,EACJ,MAAMxF,EAAWF,IACX2B,EAASF,IAWf,SAASm3B,EAAO7qB,GACd,IAAKpI,EAAO+M,QAAS,OACrB,MACEL,aAAcC,GACZ3M,EACJ,IAAIsE,EAAI8D,EACJ9D,EAAE4Y,gBAAe5Y,EAAIA,EAAE4Y,eAC3B,MAAMgW,EAAK5uB,EAAE6uB,SAAW7uB,EAAE8uB,SACpBC,EAAarzB,EAAOQ,OAAO8yB,SAASD,WACpCE,EAAWF,GAAqB,KAAPH,EACzBM,EAAaH,GAAqB,KAAPH,EAC3BO,EAAqB,KAAPP,EACdQ,EAAsB,KAAPR,EACfS,EAAmB,KAAPT,EACZU,EAAqB,KAAPV,EAEpB,IAAKlzB,EAAOmY,iBAAmBnY,EAAO+L,gBAAkB2nB,GAAgB1zB,EAAOgM,cAAgB4nB,GAAeJ,GAC5G,OAAO,EAET,IAAKxzB,EAAOoY,iBAAmBpY,EAAO+L,gBAAkB0nB,GAAezzB,EAAOgM,cAAgB2nB,GAAaJ,GACzG,OAAO,EAET,KAAIjvB,EAAEuvB,UAAYvvB,EAAEwvB,QAAUxvB,EAAEyvB,SAAWzvB,EAAE0vB,SAGzCz5B,EAAS3B,eAAiB2B,EAAS3B,cAAcE,WAA+D,UAAlDyB,EAAS3B,cAAcE,SAASkO,eAA+E,aAAlDzM,EAAS3B,cAAcE,SAASkO,gBAA/J,CAGA,GAAIhH,EAAOQ,OAAO8yB,SAASW,iBAAmBV,GAAYC,GAAcC,GAAeC,GAAgBC,GAAaC,GAAc,CAChI,IAAIM,GAAS,EAEb,GAAIlwB,EAAehE,EAAOrD,GAAI,IAAIqD,EAAOQ,OAAO2J,4BAA4B5R,OAAS,GAAgF,IAA3EyL,EAAehE,EAAOrD,GAAI,IAAIqD,EAAOQ,OAAOuU,oBAAoBxc,OACxJ,OAEF,MAAMoE,EAAKqD,EAAOrD,GACZw3B,EAAcx3B,EAAGkP,YACjBuoB,EAAez3B,EAAGmP,aAClBuoB,EAAcr4B,EAAO+gB,WACrBuX,EAAet4B,EAAOqsB,YACtBkM,EAAevxB,EAAcrG,GAC/BgQ,IAAK4nB,EAAa7wB,MAAQ/G,EAAG4G,YACjC,MAAMixB,EAAc,CAAC,CAACD,EAAa7wB,KAAM6wB,EAAa9wB,KAAM,CAAC8wB,EAAa7wB,KAAOywB,EAAaI,EAAa9wB,KAAM,CAAC8wB,EAAa7wB,KAAM6wB,EAAa9wB,IAAM2wB,GAAe,CAACG,EAAa7wB,KAAOywB,EAAaI,EAAa9wB,IAAM2wB,IAC5N,IAAK,IAAIx1B,EAAI,EAAGA,EAAI41B,EAAYj8B,OAAQqG,GAAK,EAAG,CAC9C,MAAM2pB,EAAQiM,EAAY51B,GAC1B,GAAI2pB,EAAM,IAAM,GAAKA,EAAM,IAAM8L,GAAe9L,EAAM,IAAM,GAAKA,EAAM,IAAM+L,EAAc,CACzF,GAAiB,IAAb/L,EAAM,IAAyB,IAAbA,EAAM,GAAU,SACtC2L,GAAS,CACX,CACF,CACA,IAAKA,EAAQ,MACf,CACIl0B,EAAO+L,iBACLwnB,GAAYC,GAAcC,GAAeC,KACvCpvB,EAAE0Y,eAAgB1Y,EAAE0Y,iBAAsB1Y,EAAEmwB,aAAc,KAE3DjB,GAAcE,KAAkB/mB,IAAQ4mB,GAAYE,IAAgB9mB,IAAK3M,EAAOmZ,cAChFoa,GAAYE,KAAiB9mB,IAAQ6mB,GAAcE,IAAiB/mB,IAAK3M,EAAOyZ,eAEjF8Z,GAAYC,GAAcG,GAAaC,KACrCtvB,EAAE0Y,eAAgB1Y,EAAE0Y,iBAAsB1Y,EAAEmwB,aAAc,IAE5DjB,GAAcI,IAAa5zB,EAAOmZ,aAClCoa,GAAYI,IAAW3zB,EAAOyZ,aAEpCtQ,EAAK,WAAY+pB,EArCjB,CAuCF,CACA,SAAStL,IACH5nB,EAAOszB,SAASvmB,UACpBxS,EAAS7B,iBAAiB,UAAWu6B,GACrCjzB,EAAOszB,SAASvmB,SAAU,EAC5B,CACA,SAAS4a,IACF3nB,EAAOszB,SAASvmB,UACrBxS,EAAS5B,oBAAoB,UAAWs6B,GACxCjzB,EAAOszB,SAASvmB,SAAU,EAC5B,CAtFA/M,EAAOszB,SAAW,CAChBvmB,SAAS,GAEXkd,EAAa,CACXqJ,SAAU,CACRvmB,SAAS,EACTknB,gBAAgB,EAChBZ,YAAY,KAgFhBzrB,EAAG,QAAQ,KACL5H,EAAOQ,OAAO8yB,SAASvmB,SACzB6a,GACF,IAEFhgB,EAAG,WAAW,KACR5H,EAAOszB,SAASvmB,SAClB4a,GACF,IAEF3vB,OAAOmU,OAAOnM,EAAOszB,SAAU,CAC7B1L,SACAD,WAEJ,EAGA,SAAoB5nB,GAClB,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,EAAEuB,KACFA,GACEpJ,EACJ,MAAM/D,EAASF,IAiBf,IAAI44B,EAhBJzK,EAAa,CACX0K,WAAY,CACV5nB,SAAS,EACT6nB,gBAAgB,EAChBC,QAAQ,EACRC,aAAa,EACbC,YAAa,EACbC,aAAc,YACdC,eAAgB,KAChBC,cAAe,KACfC,kBAAmB,0BAGvBn1B,EAAO20B,WAAa,CAClB5nB,SAAS,GAGX,IACIqoB,EADAC,EAAiB54B,IAErB,MAAM64B,EAAoB,GAqE1B,SAASC,IACFv1B,EAAO+M,UACZ/M,EAAOw1B,cAAe,EACxB,CACA,SAASC,IACFz1B,EAAO+M,UACZ/M,EAAOw1B,cAAe,EACxB,CACA,SAASE,EAAcC,GACrB,QAAI31B,EAAOQ,OAAOm0B,WAAWM,gBAAkBU,EAASC,MAAQ51B,EAAOQ,OAAOm0B,WAAWM,oBAIrFj1B,EAAOQ,OAAOm0B,WAAWO,eAAiBz4B,IAAQ44B,EAAiBr1B,EAAOQ,OAAOm0B,WAAWO,iBAQ5FS,EAASC,OAAS,GAAKn5B,IAAQ44B,EAAiB,KAgBhDM,EAAS/d,UAAY,EACjB5X,EAAOqT,QAASrT,EAAOQ,OAAOiL,MAAUzL,EAAOqX,YACnDrX,EAAOmZ,YACPhQ,EAAK,SAAUwsB,EAASE,MAEf71B,EAAOoT,cAAepT,EAAOQ,OAAOiL,MAAUzL,EAAOqX,YAChErX,EAAOyZ,YACPtQ,EAAK,SAAUwsB,EAASE,MAG1BR,GAAiB,IAAIr5B,EAAOX,MAAO4F,WAE5B,IACT,CAcA,SAASgyB,EAAO7qB,GACd,IAAI9D,EAAI8D,EACJia,GAAsB,EAC1B,IAAKriB,EAAO+M,QAAS,OAGrB,GAAI3E,EAAMlQ,OAAO+R,QAAQ,IAAIjK,EAAOQ,OAAOm0B,WAAWQ,qBAAsB,OAC5E,MAAM30B,EAASR,EAAOQ,OAAOm0B,WACzB30B,EAAOQ,OAAO4N,SAChB9J,EAAE0Y,iBAEJ,IAAIY,EAAW5d,EAAOrD,GACwB,cAA1CqD,EAAOQ,OAAOm0B,WAAWK,eAC3BpX,EAAWrjB,SAASxB,cAAciH,EAAOQ,OAAOm0B,WAAWK,eAE7D,MAAMc,EAAyBlY,GAAYA,EAAShU,SAAStF,EAAEpM,QAC/D,IAAK8H,EAAOw1B,eAAiBM,IAA2Bt1B,EAAOo0B,eAAgB,OAAO,EAClFtwB,EAAE4Y,gBAAe5Y,EAAIA,EAAE4Y,eAC3B,IAAI0Y,EAAQ,EACZ,MAAMG,EAAY/1B,EAAO0M,cAAgB,EAAI,EACvCtD,EAxJR,SAAmB9E,GAKjB,IAAI0xB,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EAqDT,MAlDI,WAAY7xB,IACd2xB,EAAK3xB,EAAEwd,QAEL,eAAgBxd,IAClB2xB,GAAM3xB,EAAE8xB,WAAa,KAEnB,gBAAiB9xB,IACnB2xB,GAAM3xB,EAAE+xB,YAAc,KAEpB,gBAAiB/xB,IACnB0xB,GAAM1xB,EAAEgyB,YAAc,KAIpB,SAAUhyB,GAAKA,EAAE1H,OAAS0H,EAAEiyB,kBAC9BP,EAAKC,EACLA,EAAK,GAEPC,EA3BmB,GA2BdF,EACLG,EA5BmB,GA4BdF,EACD,WAAY3xB,IACd6xB,EAAK7xB,EAAEkyB,QAEL,WAAYlyB,IACd4xB,EAAK5xB,EAAEmyB,QAELnyB,EAAEuvB,WAAaqC,IAEjBA,EAAKC,EACLA,EAAK,IAEFD,GAAMC,IAAO7xB,EAAEoyB,YACE,IAAhBpyB,EAAEoyB,WAEJR,GA1CgB,GA2ChBC,GA3CgB,KA8ChBD,GA7CgB,IA8ChBC,GA9CgB,MAmDhBD,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEjBC,IAAOF,IACTA,EAAKE,EAAK,GAAK,EAAI,GAEd,CACLQ,MAAOX,EACPY,MAAOX,EACPY,OAAQX,EACRY,OAAQX,EAEZ,CAqFezc,CAAUpV,GACvB,GAAI9D,EAAOs0B,YACT,GAAI90B,EAAO+L,eAAgB,CACzB,KAAI5K,KAAK2D,IAAIsE,EAAKytB,QAAU11B,KAAK2D,IAAIsE,EAAK0tB,SAA+C,OAAO,EAA7ClB,GAASxsB,EAAKytB,OAASd,CAC5E,KAAO,MAAI50B,KAAK2D,IAAIsE,EAAK0tB,QAAU31B,KAAK2D,IAAIsE,EAAKytB,SAAmC,OAAO,EAAjCjB,GAASxsB,EAAK0tB,MAAuB,MAE/FlB,EAAQz0B,KAAK2D,IAAIsE,EAAKytB,QAAU11B,KAAK2D,IAAIsE,EAAK0tB,SAAW1tB,EAAKytB,OAASd,GAAa3sB,EAAK0tB,OAE3F,GAAc,IAAVlB,EAAa,OAAO,EACpBp1B,EAAOq0B,SAAQe,GAASA,GAG5B,IAAImB,EAAY/2B,EAAOtD,eAAiBk5B,EAAQp1B,EAAOu0B,YAavD,GAZIgC,GAAa/2B,EAAOuS,iBAAgBwkB,EAAY/2B,EAAOuS,gBACvDwkB,GAAa/2B,EAAOmT,iBAAgB4jB,EAAY/2B,EAAOmT,gBAS3DkP,IAAsBriB,EAAOQ,OAAOiL,QAAgBsrB,IAAc/2B,EAAOuS,gBAAkBwkB,IAAc/2B,EAAOmT,gBAC5GkP,GAAuBriB,EAAOQ,OAAO2gB,QAAQ7c,EAAE8c,kBAC9CphB,EAAOQ,OAAO2f,UAAangB,EAAOQ,OAAO2f,SAASpT,QAoChD,CAOL,MAAM4oB,EAAW,CACft1B,KAAM5D,IACNm5B,MAAOz0B,KAAK2D,IAAI8wB,GAChBhe,UAAWzW,KAAK61B,KAAKpB,IAEjBqB,EAAoB7B,GAAuBO,EAASt1B,KAAO+0B,EAAoB/0B,KAAO,KAAOs1B,EAASC,OAASR,EAAoBQ,OAASD,EAAS/d,YAAcwd,EAAoBxd,UAC7L,IAAKqf,EAAmB,CACtB7B,OAAsB12B,EACtB,IAAIw4B,EAAWl3B,EAAOtD,eAAiBk5B,EAAQp1B,EAAOu0B,YACtD,MAAMxhB,EAAevT,EAAOoT,YACtBI,EAASxT,EAAOqT,MAiBtB,GAhBI6jB,GAAYl3B,EAAOuS,iBAAgB2kB,EAAWl3B,EAAOuS,gBACrD2kB,GAAYl3B,EAAOmT,iBAAgB+jB,EAAWl3B,EAAOmT,gBACzDnT,EAAOwR,cAAc,GACrBxR,EAAO2W,aAAaugB,GACpBl3B,EAAOgT,iBACPhT,EAAOmV,oBACPnV,EAAOkU,wBACFX,GAAgBvT,EAAOoT,cAAgBI,GAAUxT,EAAOqT,QAC3DrT,EAAOkU,sBAELlU,EAAOQ,OAAOiL,MAChBzL,EAAOiZ,QAAQ,CACbrB,UAAW+d,EAAS/d,UAAY,EAAI,OAAS,OAC7CsD,cAAc,IAGdlb,EAAOQ,OAAO2f,SAASgX,OAAQ,CAYjC37B,aAAak5B,GACbA,OAAUh2B,EACN42B,EAAkB/8B,QAAU,IAC9B+8B,EAAkBlZ,QAGpB,MAAMgb,EAAY9B,EAAkB/8B,OAAS+8B,EAAkBA,EAAkB/8B,OAAS,QAAKmG,EACzF24B,EAAa/B,EAAkB,GAErC,GADAA,EAAkBnzB,KAAKwzB,GACnByB,IAAczB,EAASC,MAAQwB,EAAUxB,OAASD,EAAS/d,YAAcwf,EAAUxf,WAErF0d,EAAkBrsB,OAAO,QACpB,GAAIqsB,EAAkB/8B,QAAU,IAAMo9B,EAASt1B,KAAOg3B,EAAWh3B,KAAO,KAAOg3B,EAAWzB,MAAQD,EAASC,OAAS,GAAKD,EAASC,OAAS,EAAG,CAOnJ,MAAM0B,EAAkB1B,EAAQ,EAAI,GAAM,GAC1CR,EAAsBO,EACtBL,EAAkBrsB,OAAO,GACzByrB,EAAUn4B,GAAS,KACjByD,EAAOka,eAAela,EAAOQ,OAAOC,OAAO,OAAM/B,EAAW44B,EAAgB,GAC3E,EACL,CAEK5C,IAIHA,EAAUn4B,GAAS,KAEjB64B,EAAsBO,EACtBL,EAAkBrsB,OAAO,GACzBjJ,EAAOka,eAAela,EAAOQ,OAAOC,OAAO,OAAM/B,EAHzB,GAGoD,GAC3E,KAEP,CAQA,GALKu4B,GAAmB9tB,EAAK,SAAU7E,GAGnCtE,EAAOQ,OAAOsjB,UAAY9jB,EAAOQ,OAAO+2B,8BAA8Bv3B,EAAO8jB,SAAS0T,OAEtFh3B,EAAOo0B,iBAAmBsC,IAAal3B,EAAOuS,gBAAkB2kB,IAAal3B,EAAOmT,gBACtF,OAAO,CAEX,CACF,KApIgE,CAE9D,MAAMwiB,EAAW,CACft1B,KAAM5D,IACNm5B,MAAOz0B,KAAK2D,IAAI8wB,GAChBhe,UAAWzW,KAAK61B,KAAKpB,GACrBC,IAAKztB,GAIHktB,EAAkB/8B,QAAU,GAC9B+8B,EAAkBlZ,QAGpB,MAAMgb,EAAY9B,EAAkB/8B,OAAS+8B,EAAkBA,EAAkB/8B,OAAS,QAAKmG,EAmB/F,GAlBA42B,EAAkBnzB,KAAKwzB,GAQnByB,GACEzB,EAAS/d,YAAcwf,EAAUxf,WAAa+d,EAASC,MAAQwB,EAAUxB,OAASD,EAASt1B,KAAO+2B,EAAU/2B,KAAO,MACrHq1B,EAAcC,GAGhBD,EAAcC,GAtFpB,SAAuBA,GACrB,MAAMn1B,EAASR,EAAOQ,OAAOm0B,WAC7B,GAAIgB,EAAS/d,UAAY,GACvB,GAAI5X,EAAOqT,QAAUrT,EAAOQ,OAAOiL,MAAQjL,EAAOo0B,eAEhD,OAAO,OAEJ,GAAI50B,EAAOoT,cAAgBpT,EAAOQ,OAAOiL,MAAQjL,EAAOo0B,eAE7D,OAAO,EAET,OAAO,CACT,CA+EQ6C,CAAc9B,GAChB,OAAO,CAEX,CAkGA,OADIrxB,EAAE0Y,eAAgB1Y,EAAE0Y,iBAAsB1Y,EAAEmwB,aAAc,GACvD,CACT,CACA,SAAS5sB,EAAOM,GACd,IAAIyV,EAAW5d,EAAOrD,GACwB,cAA1CqD,EAAOQ,OAAOm0B,WAAWK,eAC3BpX,EAAWrjB,SAASxB,cAAciH,EAAOQ,OAAOm0B,WAAWK,eAE7DpX,EAASzV,GAAQ,aAAcotB,GAC/B3X,EAASzV,GAAQ,aAAcstB,GAC/B7X,EAASzV,GAAQ,QAAS8qB,EAC5B,CACA,SAASrL,IACP,OAAI5nB,EAAOQ,OAAO4N,SAChBpO,EAAOU,UAAU/H,oBAAoB,QAASs6B,IACvC,IAELjzB,EAAO20B,WAAW5nB,UACtBlF,EAAO,oBACP7H,EAAO20B,WAAW5nB,SAAU,GACrB,EACT,CACA,SAAS4a,IACP,OAAI3nB,EAAOQ,OAAO4N,SAChBpO,EAAOU,UAAUhI,iBAAiB0P,MAAO6qB,IAClC,KAEJjzB,EAAO20B,WAAW5nB,UACvBlF,EAAO,uBACP7H,EAAO20B,WAAW5nB,SAAU,GACrB,EACT,CACAnF,EAAG,QAAQ,MACJ5H,EAAOQ,OAAOm0B,WAAW5nB,SAAW/M,EAAOQ,OAAO4N,SACrDuZ,IAEE3nB,EAAOQ,OAAOm0B,WAAW5nB,SAAS6a,GAAQ,IAEhDhgB,EAAG,WAAW,KACR5H,EAAOQ,OAAO4N,SAChBwZ,IAEE5nB,EAAO20B,WAAW5nB,SAAS4a,GAAS,IAE1C3vB,OAAOmU,OAAOnM,EAAO20B,WAAY,CAC/B/M,SACAD,WAEJ,EAoBA,SAAoB5nB,GAClB,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,EAAEuB,KACFA,GACEpJ,EAgBJ,SAAS23B,EAAM/6B,GACb,IAAIg7B,EACJ,OAAIh7B,GAAoB,iBAAPA,GAAmBqD,EAAOkK,YACzCytB,EAAM33B,EAAOrD,GAAG5D,cAAc4D,GAC1Bg7B,GAAYA,GAEdh7B,IACgB,iBAAPA,IAAiBg7B,EAAM,IAAIp9B,SAASvB,iBAAiB2D,KAC5DqD,EAAOQ,OAAOklB,mBAAmC,iBAAP/oB,GAAmBg7B,GAAOA,EAAIp/B,OAAS,GAA+C,IAA1CyH,EAAOrD,GAAG3D,iBAAiB2D,GAAIpE,OACvHo/B,EAAM33B,EAAOrD,GAAG5D,cAAc4D,GACrBg7B,GAAsB,IAAfA,EAAIp/B,SACpBo/B,EAAMA,EAAI,KAGVh7B,IAAOg7B,EAAYh7B,EAEhBg7B,EACT,CACA,SAASC,EAASj7B,EAAIk7B,GACpB,MAAMr3B,EAASR,EAAOQ,OAAOgjB,YAC7B7mB,EAAKgI,EAAkBhI,IACpBtE,SAAQy/B,IACLA,IACFA,EAAMl1B,UAAUi1B,EAAW,MAAQ,aAAar3B,EAAOu3B,cAAc37B,MAAM,MACrD,WAAlB07B,EAAME,UAAsBF,EAAMD,SAAWA,GAC7C73B,EAAOQ,OAAOqQ,eAAiB7Q,EAAO+M,SACxC+qB,EAAMl1B,UAAU5C,EAAOwmB,SAAW,MAAQ,UAAUhmB,EAAOy3B,WAE/D,GAEJ,CACA,SAAStsB,IAEP,MAAM8X,OACJA,EAAMC,OACNA,GACE1jB,EAAOwjB,WACX,GAAIxjB,EAAOQ,OAAOiL,KAGhB,OAFAmsB,EAASlU,GAAQ,QACjBkU,EAASnU,GAAQ,GAGnBmU,EAASlU,EAAQ1jB,EAAOoT,cAAgBpT,EAAOQ,OAAOgL,QACtDosB,EAASnU,EAAQzjB,EAAOqT,QAAUrT,EAAOQ,OAAOgL,OAClD,CACA,SAAS0sB,EAAY5zB,GACnBA,EAAE0Y,mBACEhd,EAAOoT,aAAgBpT,EAAOQ,OAAOiL,MAASzL,EAAOQ,OAAOgL,UAChExL,EAAOyZ,YACPtQ,EAAK,kBACP,CACA,SAASgvB,EAAY7zB,GACnBA,EAAE0Y,mBACEhd,EAAOqT,OAAUrT,EAAOQ,OAAOiL,MAASzL,EAAOQ,OAAOgL,UAC1DxL,EAAOmZ,YACPhQ,EAAK,kBACP,CACA,SAASgc,IACP,MAAM3kB,EAASR,EAAOQ,OAAOgjB,WAK7B,GAJAxjB,EAAOQ,OAAOgjB,WAAauJ,GAA0B/sB,EAAQA,EAAOknB,eAAe1D,WAAYxjB,EAAOQ,OAAOgjB,WAAY,CACvHC,OAAQ,qBACRC,OAAQ,wBAEJljB,EAAOijB,SAAUjjB,EAAOkjB,OAAS,OACvC,IAAID,EAASiU,EAAMl3B,EAAOijB,QACtBC,EAASgU,EAAMl3B,EAAOkjB,QAC1B1rB,OAAOmU,OAAOnM,EAAOwjB,WAAY,CAC/BC,SACAC,WAEFD,EAAS9e,EAAkB8e,GAC3BC,EAAS/e,EAAkB+e,GAC3B,MAAM0U,EAAa,CAACz7B,EAAIkE,KAClBlE,GACFA,EAAGjE,iBAAiB,QAAiB,SAARmI,EAAiBs3B,EAAcD,IAEzDl4B,EAAO+M,SAAWpQ,GACrBA,EAAGiG,UAAUC,OAAOrC,EAAOy3B,UAAU77B,MAAM,KAC7C,EAEFqnB,EAAOprB,SAAQsE,GAAMy7B,EAAWz7B,EAAI,UACpC+mB,EAAOrrB,SAAQsE,GAAMy7B,EAAWz7B,EAAI,SACtC,CACA,SAASyvB,IACP,IAAI3I,OACFA,EAAMC,OACNA,GACE1jB,EAAOwjB,WACXC,EAAS9e,EAAkB8e,GAC3BC,EAAS/e,EAAkB+e,GAC3B,MAAM2U,EAAgB,CAAC17B,EAAIkE,KACzBlE,EAAGhE,oBAAoB,QAAiB,SAARkI,EAAiBs3B,EAAcD,GAC/Dv7B,EAAGiG,UAAUiH,UAAU7J,EAAOQ,OAAOgjB,WAAWuU,cAAc37B,MAAM,KAAK,EAE3EqnB,EAAOprB,SAAQsE,GAAM07B,EAAc17B,EAAI,UACvC+mB,EAAOrrB,SAAQsE,GAAM07B,EAAc17B,EAAI,SACzC,CA/GAstB,EAAa,CACXzG,WAAY,CACVC,OAAQ,KACRC,OAAQ,KACR4U,aAAa,EACbP,cAAe,yBACfQ,YAAa,uBACbN,UAAW,qBACXO,wBAAyB,gCAG7Bx4B,EAAOwjB,WAAa,CAClBC,OAAQ,KACRC,OAAQ,MAmGV9b,EAAG,QAAQ,MACgC,IAArC5H,EAAOQ,OAAOgjB,WAAWzW,QAE3B4a,KAEAxC,IACAxZ,IACF,IAEF/D,EAAG,+BAA+B,KAChC+D,GAAQ,IAEV/D,EAAG,WAAW,KACZwkB,GAAS,IAEXxkB,EAAG,kBAAkB,KACnB,IAAI6b,OACFA,EAAMC,OACNA,GACE1jB,EAAOwjB,WACXC,EAAS9e,EAAkB8e,GAC3BC,EAAS/e,EAAkB+e,GACvB1jB,EAAO+M,QACTpB,IAGF,IAAI8X,KAAWC,GAAQrnB,QAAOM,KAAQA,IAAItE,SAAQsE,GAAMA,EAAGiG,UAAUC,IAAI7C,EAAOQ,OAAOgjB,WAAWyU,YAAW,IAE/GrwB,EAAG,SAAS,CAAC6mB,EAAInqB,KACf,IAAImf,OACFA,EAAMC,OACNA,GACE1jB,EAAOwjB,WACXC,EAAS9e,EAAkB8e,GAC3BC,EAAS/e,EAAkB+e,GAC3B,MAAM9F,EAAWtZ,EAAEpM,OACnB,IAAIugC,EAAiB/U,EAAOxc,SAAS0W,IAAa6F,EAAOvc,SAAS0W,GAClE,GAAI5d,EAAOkK,YAAcuuB,EAAgB,CACvC,MAAMtiB,EAAO7R,EAAE6R,MAAQ7R,EAAEia,cAAgBja,EAAEia,eACvCpI,IACFsiB,EAAiBtiB,EAAKuiB,MAAKtiB,GAAUqN,EAAOvc,SAASkP,IAAWsN,EAAOxc,SAASkP,KAEpF,CACA,GAAIpW,EAAOQ,OAAOgjB,WAAW8U,cAAgBG,EAAgB,CAC3D,GAAIz4B,EAAO24B,YAAc34B,EAAOQ,OAAOm4B,YAAc34B,EAAOQ,OAAOm4B,WAAWC,YAAc54B,EAAO24B,WAAWh8B,KAAOihB,GAAY5d,EAAO24B,WAAWh8B,GAAGiN,SAASgU,IAAY,OAC3K,IAAIib,EACApV,EAAOlrB,OACTsgC,EAAWpV,EAAO,GAAG7gB,UAAUgH,SAAS5J,EAAOQ,OAAOgjB,WAAW+U,aACxD7U,EAAOnrB,SAChBsgC,EAAWnV,EAAO,GAAG9gB,UAAUgH,SAAS5J,EAAOQ,OAAOgjB,WAAW+U,cAGjEpvB,GADe,IAAb0vB,EACG,iBAEA,kBAEP,IAAIpV,KAAWC,GAAQrnB,QAAOM,KAAQA,IAAItE,SAAQsE,GAAMA,EAAGiG,UAAUk2B,OAAO94B,EAAOQ,OAAOgjB,WAAW+U,cACvG,KAEF,MAKM5Q,EAAU,KACd3nB,EAAOrD,GAAGiG,UAAUC,OAAO7C,EAAOQ,OAAOgjB,WAAWgV,wBAAwBp8B,MAAM,MAClFgwB,GAAS,EAEXp0B,OAAOmU,OAAOnM,EAAOwjB,WAAY,CAC/BoE,OAVa,KACb5nB,EAAOrD,GAAGiG,UAAUiH,UAAU7J,EAAOQ,OAAOgjB,WAAWgV,wBAAwBp8B,MAAM,MACrF+oB,IACAxZ,GAAQ,EAQRgc,UACAhc,SACAwZ,OACAiH,WAEJ,EAUA,SAAoBrsB,GAClB,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,EAAEuB,KACFA,GACEpJ,EACJ,MAAMg5B,EAAM,oBAqCZ,IAAIC,EApCJ/O,EAAa,CACX0O,WAAY,CACVh8B,GAAI,KACJs8B,cAAe,OACfL,WAAW,EACXN,aAAa,EACbY,aAAc,KACdC,kBAAmB,KACnBC,eAAgB,KAChBC,aAAc,KACdC,qBAAqB,EACrBnc,KAAM,UAENoc,gBAAgB,EAChBC,mBAAoB,EACpBC,sBAAuBC,GAAUA,EACjCC,oBAAqBD,GAAUA,EAC/BE,YAAa,GAAGb,WAChBc,kBAAmB,GAAGd,kBACtBe,cAAe,GAAGf,KAClBgB,aAAc,GAAGhB,YACjBiB,WAAY,GAAGjB,UACfR,YAAa,GAAGQ,WAChBkB,qBAAsB,GAAGlB,qBACzBmB,yBAA0B,GAAGnB,yBAC7BoB,eAAgB,GAAGpB,cACnBd,UAAW,GAAGc,SACdqB,gBAAiB,GAAGrB,eACpBsB,cAAe,GAAGtB,aAClBuB,wBAAyB,GAAGvB,gBAGhC/4B,EAAO24B,WAAa,CAClBh8B,GAAI,KACJ49B,QAAS,IAGX,IAAIC,EAAqB,EACzB,SAASC,IACP,OAAQz6B,EAAOQ,OAAOm4B,WAAWh8B,KAAOqD,EAAO24B,WAAWh8B,IAAMmG,MAAMC,QAAQ/C,EAAO24B,WAAWh8B,KAAuC,IAAhCqD,EAAO24B,WAAWh8B,GAAGpE,MAC9H,CACA,SAASmiC,EAAeC,EAAUzD,GAChC,MAAM2C,kBACJA,GACE75B,EAAOQ,OAAOm4B,WACbgC,IACLA,EAAWA,GAAyB,SAAbzD,EAAsB,WAAa,QAAtC,qBAElByD,EAAS/3B,UAAUC,IAAI,GAAGg3B,KAAqB3C,MAC/CyD,EAAWA,GAAyB,SAAbzD,EAAsB,WAAa,QAAtC,oBAElByD,EAAS/3B,UAAUC,IAAI,GAAGg3B,KAAqB3C,KAAYA,KAGjE,CACA,SAAS0D,EAAct2B,GACrB,MAAMq2B,EAAWr2B,EAAEpM,OAAO+R,QAAQgjB,GAAkBjtB,EAAOQ,OAAOm4B,WAAWiB,cAC7E,IAAKe,EACH,OAEFr2B,EAAE0Y,iBACF,MAAMhU,EAAQnF,EAAa82B,GAAY36B,EAAOQ,OAAO8O,eACrD,GAAItP,EAAOQ,OAAOiL,KAAM,CACtB,GAAIzL,EAAO0L,YAAc1C,EAAO,OAChChJ,EAAO4Y,YAAY5P,EACrB,MACEhJ,EAAO8X,QAAQ9O,EAEnB,CACA,SAAS2C,IAEP,MAAMgB,EAAM3M,EAAO2M,IACbnM,EAASR,EAAOQ,OAAOm4B,WAC7B,GAAI8B,IAAwB,OAC5B,IAGI15B,EACAsU,EAJA1Y,EAAKqD,EAAO24B,WAAWh8B,GAC3BA,EAAKgI,EAAkBhI,GAIvB,MAAMsQ,EAAejN,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAAU/M,EAAO8M,QAAQvC,OAAOhS,OAASyH,EAAOuK,OAAOhS,OAC9GsiC,EAAQ76B,EAAOQ,OAAOiL,KAAOtK,KAAK2J,KAAKmC,EAAejN,EAAOQ,OAAO8O,gBAAkBtP,EAAOkN,SAAS3U,OAY5G,GAXIyH,EAAOQ,OAAOiL,MAChB4J,EAAgBrV,EAAOsV,mBAAqB,EAC5CvU,EAAUf,EAAOQ,OAAO8O,eAAiB,EAAInO,KAAKiO,MAAMpP,EAAO0L,UAAY1L,EAAOQ,OAAO8O,gBAAkBtP,EAAO0L,gBAC7E,IAArB1L,EAAO0Q,WACvB3P,EAAUf,EAAO0Q,UACjB2E,EAAgBrV,EAAOuV,oBAEvBF,EAAgBrV,EAAOqV,eAAiB,EACxCtU,EAAUf,EAAO+K,aAAe,GAGd,YAAhBvK,EAAO2c,MAAsBnd,EAAO24B,WAAW4B,SAAWv6B,EAAO24B,WAAW4B,QAAQhiC,OAAS,EAAG,CAClG,MAAMgiC,EAAUv6B,EAAO24B,WAAW4B,QAClC,IAAIO,EACA9gB,EACA+gB,EAsBJ,GArBIv6B,EAAO+4B,iBACTP,EAAaz0B,EAAiBg2B,EAAQ,GAAIv6B,EAAO+L,eAAiB,QAAU,UAAU,GACtFpP,EAAGtE,SAAQy/B,IACTA,EAAMv+B,MAAMyG,EAAO+L,eAAiB,QAAU,UAAeitB,GAAcx4B,EAAOg5B,mBAAqB,GAA7C,IAAmD,IAE3Gh5B,EAAOg5B,mBAAqB,QAAuB96B,IAAlB2W,IACnCmlB,GAAsBz5B,GAAWsU,GAAiB,GAC9CmlB,EAAqBh6B,EAAOg5B,mBAAqB,EACnDgB,EAAqBh6B,EAAOg5B,mBAAqB,EACxCgB,EAAqB,IAC9BA,EAAqB,IAGzBM,EAAa35B,KAAKC,IAAIL,EAAUy5B,EAAoB,GACpDxgB,EAAY8gB,GAAc35B,KAAKE,IAAIk5B,EAAQhiC,OAAQiI,EAAOg5B,oBAAsB,GAChFuB,GAAY/gB,EAAY8gB,GAAc,GAExCP,EAAQliC,SAAQsiC,IACd,MAAMK,EAAkB,IAAI,CAAC,GAAI,QAAS,aAAc,QAAS,aAAc,SAAS19B,KAAIiyB,GAAU,GAAG/uB,EAAOq5B,oBAAoBtK,OAAWjyB,KAAI29B,GAAkB,iBAANA,GAAkBA,EAAE/zB,SAAS,KAAO+zB,EAAE7+B,MAAM,KAAO6+B,IAAGC,OACrNP,EAAS/3B,UAAUiH,UAAUmxB,EAAgB,IAE3Cr+B,EAAGpE,OAAS,EACdgiC,EAAQliC,SAAQ8iC,IACd,MAAMC,EAAcv3B,EAAas3B,GAC7BC,IAAgBr6B,EAClBo6B,EAAOv4B,UAAUC,OAAOrC,EAAOq5B,kBAAkBz9B,MAAM,MAC9C4D,EAAOkK,WAChBixB,EAAO3hC,aAAa,OAAQ,UAE1BgH,EAAO+4B,iBACL6B,GAAeN,GAAcM,GAAephB,GAC9CmhB,EAAOv4B,UAAUC,OAAO,GAAGrC,EAAOq5B,yBAAyBz9B,MAAM,MAE/Dg/B,IAAgBN,GAClBJ,EAAeS,EAAQ,QAErBC,IAAgBphB,GAClB0gB,EAAeS,EAAQ,QAE3B,QAEG,CACL,MAAMA,EAASZ,EAAQx5B,GASvB,GARIo6B,GACFA,EAAOv4B,UAAUC,OAAOrC,EAAOq5B,kBAAkBz9B,MAAM,MAErD4D,EAAOkK,WACTqwB,EAAQliC,SAAQ,CAACsiC,EAAUS,KACzBT,EAASnhC,aAAa,OAAQ4hC,IAAgBr6B,EAAU,gBAAkB,SAAS,IAGnFP,EAAO+4B,eAAgB,CACzB,MAAM8B,EAAuBd,EAAQO,GAC/BQ,EAAsBf,EAAQvgB,GACpC,IAAK,IAAIpb,EAAIk8B,EAAYl8B,GAAKob,EAAWpb,GAAK,EACxC27B,EAAQ37B,IACV27B,EAAQ37B,GAAGgE,UAAUC,OAAO,GAAGrC,EAAOq5B,yBAAyBz9B,MAAM,MAGzEs+B,EAAeW,EAAsB,QACrCX,EAAeY,EAAqB,OACtC,CACF,CACA,GAAI96B,EAAO+4B,eAAgB,CACzB,MAAMgC,EAAuBp6B,KAAKE,IAAIk5B,EAAQhiC,OAAQiI,EAAOg5B,mBAAqB,GAC5EgC,GAAiBxC,EAAauC,EAAuBvC,GAAc,EAAI+B,EAAW/B,EAClF5G,EAAazlB,EAAM,QAAU,OACnC4tB,EAAQliC,SAAQ8iC,IACdA,EAAO5hC,MAAMyG,EAAO+L,eAAiBqmB,EAAa,OAAS,GAAGoJ,KAAiB,GAEnF,CACF,CACA7+B,EAAGtE,SAAQ,CAACy/B,EAAO2D,KASjB,GARoB,aAAhBj7B,EAAO2c,OACT2a,EAAM9+B,iBAAiBi0B,GAAkBzsB,EAAOu5B,eAAe1hC,SAAQqjC,IACrEA,EAAWC,YAAcn7B,EAAOi5B,sBAAsB14B,EAAU,EAAE,IAEpE+2B,EAAM9+B,iBAAiBi0B,GAAkBzsB,EAAOw5B,aAAa3hC,SAAQujC,IACnEA,EAAQD,YAAcn7B,EAAOm5B,oBAAoBkB,EAAM,KAGvC,gBAAhBr6B,EAAO2c,KAAwB,CACjC,IAAI0e,EAEFA,EADEr7B,EAAO84B,oBACct5B,EAAO+L,eAAiB,WAAa,aAErC/L,EAAO+L,eAAiB,aAAe,WAEhE,MAAM+vB,GAAS/6B,EAAU,GAAK85B,EAC9B,IAAIkB,EAAS,EACTC,EAAS,EACgB,eAAzBH,EACFE,EAASD,EAETE,EAASF,EAEXhE,EAAM9+B,iBAAiBi0B,GAAkBzsB,EAAOy5B,uBAAuB5hC,SAAQ4jC,IAC7EA,EAAW1iC,MAAM6D,UAAY,6BAA6B2+B,aAAkBC,KAC5EC,EAAW1iC,MAAM8sB,mBAAqB,GAAGrmB,EAAOQ,OAAOC,SAAS,GAEpE,CACoB,WAAhBD,EAAO2c,MAAqB3c,EAAO64B,cACrCvB,EAAMzK,UAAY7sB,EAAO64B,aAAar5B,EAAQe,EAAU,EAAG85B,GACxC,IAAfY,GAAkBtyB,EAAK,mBAAoB2uB,KAE5B,IAAf2D,GAAkBtyB,EAAK,mBAAoB2uB,GAC/C3uB,EAAK,mBAAoB2uB,IAEvB93B,EAAOQ,OAAOqQ,eAAiB7Q,EAAO+M,SACxC+qB,EAAMl1B,UAAU5C,EAAOwmB,SAAW,MAAQ,UAAUhmB,EAAOy3B,UAC7D,GAEJ,CACA,SAASiE,IAEP,MAAM17B,EAASR,EAAOQ,OAAOm4B,WAC7B,GAAI8B,IAAwB,OAC5B,MAAMxtB,EAAejN,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAAU/M,EAAO8M,QAAQvC,OAAOhS,OAASyH,EAAOgL,MAAQhL,EAAOQ,OAAOwK,KAAKC,KAAO,EAAIjL,EAAOuK,OAAOhS,OAAS4I,KAAK2J,KAAK9K,EAAOQ,OAAOwK,KAAKC,MAAQjL,EAAOuK,OAAOhS,OAC7N,IAAIoE,EAAKqD,EAAO24B,WAAWh8B,GAC3BA,EAAKgI,EAAkBhI,GACvB,IAAIw/B,EAAiB,GACrB,GAAoB,YAAhB37B,EAAO2c,KAAoB,CAC7B,IAAIif,EAAkBp8B,EAAOQ,OAAOiL,KAAOtK,KAAK2J,KAAKmC,EAAejN,EAAOQ,OAAO8O,gBAAkBtP,EAAOkN,SAAS3U,OAChHyH,EAAOQ,OAAO2f,UAAYngB,EAAOQ,OAAO2f,SAASpT,SAAWqvB,EAAkBnvB,IAChFmvB,EAAkBnvB,GAEpB,IAAK,IAAIrO,EAAI,EAAGA,EAAIw9B,EAAiBx9B,GAAK,EACpC4B,EAAO04B,aACTiD,GAAkB37B,EAAO04B,aAAa76B,KAAK2B,EAAQpB,EAAG4B,EAAOo5B,aAG7DuC,GAAkB,IAAI37B,EAAOy4B,iBAAiBj5B,EAAOkK,UAAY,gBAAkB,aAAa1J,EAAOo5B,kBAAkBp5B,EAAOy4B,gBAGtI,CACoB,aAAhBz4B,EAAO2c,OAEPgf,EADE37B,EAAO44B,eACQ54B,EAAO44B,eAAe/6B,KAAK2B,EAAQQ,EAAOu5B,aAAcv5B,EAAOw5B,YAE/D,gBAAgBx5B,EAAOu5B,wCAAkDv5B,EAAOw5B,uBAGjF,gBAAhBx5B,EAAO2c,OAEPgf,EADE37B,EAAO24B,kBACQ34B,EAAO24B,kBAAkB96B,KAAK2B,EAAQQ,EAAOy5B,sBAE7C,gBAAgBz5B,EAAOy5B,iCAG5Cj6B,EAAO24B,WAAW4B,QAAU,GAC5B59B,EAAGtE,SAAQy/B,IACW,WAAhBt3B,EAAO2c,OACT2a,EAAMzK,UAAY8O,GAAkB,IAElB,YAAhB37B,EAAO2c,MACTnd,EAAO24B,WAAW4B,QAAQp4B,QAAQ21B,EAAM9+B,iBAAiBi0B,GAAkBzsB,EAAOo5B,cACpF,IAEkB,WAAhBp5B,EAAO2c,MACThU,EAAK,mBAAoBxM,EAAG,GAEhC,CACA,SAASwoB,IACPnlB,EAAOQ,OAAOm4B,WAAa5L,GAA0B/sB,EAAQA,EAAOknB,eAAeyR,WAAY34B,EAAOQ,OAAOm4B,WAAY,CACvHh8B,GAAI,sBAEN,MAAM6D,EAASR,EAAOQ,OAAOm4B,WAC7B,IAAKn4B,EAAO7D,GAAI,OAChB,IAAIA,EACqB,iBAAd6D,EAAO7D,IAAmBqD,EAAOkK,YAC1CvN,EAAKqD,EAAOrD,GAAG5D,cAAcyH,EAAO7D,KAEjCA,GAA2B,iBAAd6D,EAAO7D,KACvBA,EAAK,IAAIpC,SAASvB,iBAAiBwH,EAAO7D,MAEvCA,IACHA,EAAK6D,EAAO7D,IAETA,GAAoB,IAAdA,EAAGpE,SACVyH,EAAOQ,OAAOklB,mBAA0C,iBAAdllB,EAAO7D,IAAmBmG,MAAMC,QAAQpG,IAAOA,EAAGpE,OAAS,IACvGoE,EAAK,IAAIqD,EAAOrD,GAAG3D,iBAAiBwH,EAAO7D,KAEvCA,EAAGpE,OAAS,IACdoE,EAAKA,EAAGN,QAAOy7B,GACT9zB,EAAe8zB,EAAO,WAAW,KAAO93B,EAAOrD,KAElD,KAGHmG,MAAMC,QAAQpG,IAAqB,IAAdA,EAAGpE,SAAcoE,EAAKA,EAAG,IAClD3E,OAAOmU,OAAOnM,EAAO24B,WAAY,CAC/Bh8B,OAEFA,EAAKgI,EAAkBhI,GACvBA,EAAGtE,SAAQy/B,IACW,YAAhBt3B,EAAO2c,MAAsB3c,EAAOo4B,WACtCd,EAAMl1B,UAAUC,QAAQrC,EAAO25B,gBAAkB,IAAI/9B,MAAM,MAE7D07B,EAAMl1B,UAAUC,IAAIrC,EAAOs5B,cAAgBt5B,EAAO2c,MAClD2a,EAAMl1B,UAAUC,IAAI7C,EAAO+L,eAAiBvL,EAAO45B,gBAAkB55B,EAAO65B,eACxD,YAAhB75B,EAAO2c,MAAsB3c,EAAO+4B,iBACtCzB,EAAMl1B,UAAUC,IAAI,GAAGrC,EAAOs5B,gBAAgBt5B,EAAO2c,gBACrDqd,EAAqB,EACjBh6B,EAAOg5B,mBAAqB,IAC9Bh5B,EAAOg5B,mBAAqB,IAGZ,gBAAhBh5B,EAAO2c,MAA0B3c,EAAO84B,qBAC1CxB,EAAMl1B,UAAUC,IAAIrC,EAAO05B,0BAEzB15B,EAAOo4B,WACTd,EAAMp/B,iBAAiB,QAASkiC,GAE7B56B,EAAO+M,SACV+qB,EAAMl1B,UAAUC,IAAIrC,EAAOy3B,UAC7B,IAEJ,CACA,SAAS7L,IACP,MAAM5rB,EAASR,EAAOQ,OAAOm4B,WAC7B,GAAI8B,IAAwB,OAC5B,IAAI99B,EAAKqD,EAAO24B,WAAWh8B,GACvBA,IACFA,EAAKgI,EAAkBhI,GACvBA,EAAGtE,SAAQy/B,IACTA,EAAMl1B,UAAUiH,OAAOrJ,EAAO+3B,aAC9BT,EAAMl1B,UAAUiH,OAAOrJ,EAAOs5B,cAAgBt5B,EAAO2c,MACrD2a,EAAMl1B,UAAUiH,OAAO7J,EAAO+L,eAAiBvL,EAAO45B,gBAAkB55B,EAAO65B,eAC3E75B,EAAOo4B,YACTd,EAAMl1B,UAAUiH,WAAWrJ,EAAO25B,gBAAkB,IAAI/9B,MAAM,MAC9D07B,EAAMn/B,oBAAoB,QAASiiC,GACrC,KAGA56B,EAAO24B,WAAW4B,SAASv6B,EAAO24B,WAAW4B,QAAQliC,SAAQy/B,GAASA,EAAMl1B,UAAUiH,UAAUrJ,EAAOq5B,kBAAkBz9B,MAAM,OACrI,CACAwL,EAAG,mBAAmB,KACpB,IAAK5H,EAAO24B,aAAe34B,EAAO24B,WAAWh8B,GAAI,OACjD,MAAM6D,EAASR,EAAOQ,OAAOm4B,WAC7B,IAAIh8B,GACFA,GACEqD,EAAO24B,WACXh8B,EAAKgI,EAAkBhI,GACvBA,EAAGtE,SAAQy/B,IACTA,EAAMl1B,UAAUiH,OAAOrJ,EAAO45B,gBAAiB55B,EAAO65B,eACtDvC,EAAMl1B,UAAUC,IAAI7C,EAAO+L,eAAiBvL,EAAO45B,gBAAkB55B,EAAO65B,cAAc,GAC1F,IAEJzyB,EAAG,QAAQ,MACgC,IAArC5H,EAAOQ,OAAOm4B,WAAW5rB,QAE3B4a,KAEAxC,IACA+W,IACAvwB,IACF,IAEF/D,EAAG,qBAAqB,UACU,IAArB5H,EAAO0Q,WAChB/E,GACF,IAEF/D,EAAG,mBAAmB,KACpB+D,GAAQ,IAEV/D,EAAG,wBAAwB,KACzBs0B,IACAvwB,GAAQ,IAEV/D,EAAG,WAAW,KACZwkB,GAAS,IAEXxkB,EAAG,kBAAkB,KACnB,IAAIjL,GACFA,GACEqD,EAAO24B,WACPh8B,IACFA,EAAKgI,EAAkBhI,GACvBA,EAAGtE,SAAQy/B,GAASA,EAAMl1B,UAAU5C,EAAO+M,QAAU,SAAW,OAAO/M,EAAOQ,OAAOm4B,WAAWV,aAClG,IAEFrwB,EAAG,eAAe,KAChB+D,GAAQ,IAEV/D,EAAG,SAAS,CAAC6mB,EAAInqB,KACf,MAAMsZ,EAAWtZ,EAAEpM,OACbyE,EAAKgI,EAAkB3E,EAAO24B,WAAWh8B,IAC/C,GAAIqD,EAAOQ,OAAOm4B,WAAWh8B,IAAMqD,EAAOQ,OAAOm4B,WAAWL,aAAe37B,GAAMA,EAAGpE,OAAS,IAAMqlB,EAAShb,UAAUgH,SAAS5J,EAAOQ,OAAOm4B,WAAWiB,aAAc,CACpK,GAAI55B,EAAOwjB,aAAexjB,EAAOwjB,WAAWC,QAAU7F,IAAa5d,EAAOwjB,WAAWC,QAAUzjB,EAAOwjB,WAAWE,QAAU9F,IAAa5d,EAAOwjB,WAAWE,QAAS,OACnK,MAAMmV,EAAWl8B,EAAG,GAAGiG,UAAUgH,SAAS5J,EAAOQ,OAAOm4B,WAAWJ,aAEjEpvB,GADe,IAAb0vB,EACG,iBAEA,kBAEPl8B,EAAGtE,SAAQy/B,GAASA,EAAMl1B,UAAUk2B,OAAO94B,EAAOQ,OAAOm4B,WAAWJ,cACtE,KAEF,MAaM5Q,EAAU,KACd3nB,EAAOrD,GAAGiG,UAAUC,IAAI7C,EAAOQ,OAAOm4B,WAAW2B,yBACjD,IAAI39B,GACFA,GACEqD,EAAO24B,WACPh8B,IACFA,EAAKgI,EAAkBhI,GACvBA,EAAGtE,SAAQy/B,GAASA,EAAMl1B,UAAUC,IAAI7C,EAAOQ,OAAOm4B,WAAW2B,4BAEnElO,GAAS,EAEXp0B,OAAOmU,OAAOnM,EAAO24B,WAAY,CAC/B/Q,OAzBa,KACb5nB,EAAOrD,GAAGiG,UAAUiH,OAAO7J,EAAOQ,OAAOm4B,WAAW2B,yBACpD,IAAI39B,GACFA,GACEqD,EAAO24B,WACPh8B,IACFA,EAAKgI,EAAkBhI,GACvBA,EAAGtE,SAAQy/B,GAASA,EAAMl1B,UAAUiH,OAAO7J,EAAOQ,OAAOm4B,WAAW2B,4BAEtEnV,IACA+W,IACAvwB,GAAQ,EAeRgc,UACAuU,SACAvwB,SACAwZ,OACAiH,WAEJ,EAEA,SAAmBrsB,GACjB,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,EAAEuB,KACFA,GACEpJ,EACJ,MAAMxF,EAAWF,IACjB,IAGIgiC,EACAC,EACAC,EACAC,EANAte,GAAY,EACZwW,EAAU,KACV+H,EAAc,KAuBlB,SAAS9lB,IACP,IAAK3W,EAAOQ,OAAOk8B,UAAU//B,KAAOqD,EAAO08B,UAAU//B,GAAI,OACzD,MAAM+/B,UACJA,EACAhwB,aAAcC,GACZ3M,GACE28B,OACJA,EAAMhgC,GACNA,GACE+/B,EACEl8B,EAASR,EAAOQ,OAAOk8B,UACvBx7B,EAAWlB,EAAOQ,OAAOiL,KAAOzL,EAAOsT,aAAetT,EAAOkB,SACnE,IAAI07B,EAAUN,EACVO,GAAUN,EAAYD,GAAYp7B,EAClCyL,GACFkwB,GAAUA,EACNA,EAAS,GACXD,EAAUN,EAAWO,EACrBA,EAAS,IACCA,EAASP,EAAWC,IAC9BK,EAAUL,EAAYM,IAEfA,EAAS,GAClBD,EAAUN,EAAWO,EACrBA,EAAS,GACAA,EAASP,EAAWC,IAC7BK,EAAUL,EAAYM,GAEpB78B,EAAO+L,gBACT4wB,EAAOpjC,MAAM6D,UAAY,eAAey/B,aACxCF,EAAOpjC,MAAM2M,MAAQ,GAAG02B,QAExBD,EAAOpjC,MAAM6D,UAAY,oBAAoBy/B,UAC7CF,EAAOpjC,MAAM6M,OAAS,GAAGw2B,OAEvBp8B,EAAOs8B,OACTthC,aAAak5B,GACb/3B,EAAGpD,MAAMwjC,QAAU,EACnBrI,EAAUn5B,YAAW,KACnBoB,EAAGpD,MAAMwjC,QAAU,EACnBpgC,EAAGpD,MAAM8sB,mBAAqB,OAAO,GACpC,KAEP,CAKA,SAASza,IACP,IAAK5L,EAAOQ,OAAOk8B,UAAU//B,KAAOqD,EAAO08B,UAAU//B,GAAI,OACzD,MAAM+/B,UACJA,GACE18B,GACE28B,OACJA,EAAMhgC,GACNA,GACE+/B,EACJC,EAAOpjC,MAAM2M,MAAQ,GACrBy2B,EAAOpjC,MAAM6M,OAAS,GACtBm2B,EAAYv8B,EAAO+L,eAAiBpP,EAAG+H,YAAc/H,EAAGiV,aACxD4qB,EAAUx8B,EAAOwE,MAAQxE,EAAO8N,YAAc9N,EAAOQ,OAAO8M,oBAAsBtN,EAAOQ,OAAO2N,eAAiBnO,EAAOkN,SAAS,GAAK,IAEpIovB,EADuC,SAArCt8B,EAAOQ,OAAOk8B,UAAUJ,SACfC,EAAYC,EAEZvwB,SAASjM,EAAOQ,OAAOk8B,UAAUJ,SAAU,IAEpDt8B,EAAO+L,eACT4wB,EAAOpjC,MAAM2M,MAAQ,GAAGo2B,MAExBK,EAAOpjC,MAAM6M,OAAS,GAAGk2B,MAGzB3/B,EAAGpD,MAAMyjC,QADPR,GAAW,EACM,OAEA,GAEjBx8B,EAAOQ,OAAOk8B,UAAUI,OAC1BngC,EAAGpD,MAAMwjC,QAAU,GAEjB/8B,EAAOQ,OAAOqQ,eAAiB7Q,EAAO+M,SACxC2vB,EAAU//B,GAAGiG,UAAU5C,EAAOwmB,SAAW,MAAQ,UAAUxmB,EAAOQ,OAAOk8B,UAAUzE,UAEvF,CACA,SAASgF,EAAmB34B,GAC1B,OAAOtE,EAAO+L,eAAiBzH,EAAE44B,QAAU54B,EAAE64B,OAC/C,CACA,SAASC,EAAgB94B,GACvB,MAAMo4B,UACJA,EACAhwB,aAAcC,GACZ3M,GACErD,GACJA,GACE+/B,EACJ,IAAIW,EACJA,GAAiBJ,EAAmB34B,GAAKtB,EAAcrG,GAAIqD,EAAO+L,eAAiB,OAAS,QAA2B,OAAjBswB,EAAwBA,EAAeC,EAAW,KAAOC,EAAYD,GAC3Ke,EAAgBl8B,KAAKC,IAAID,KAAKE,IAAIg8B,EAAe,GAAI,GACjD1wB,IACF0wB,EAAgB,EAAIA,GAEtB,MAAMnG,EAAWl3B,EAAOuS,gBAAkBvS,EAAOmT,eAAiBnT,EAAOuS,gBAAkB8qB,EAC3Fr9B,EAAOgT,eAAekkB,GACtBl3B,EAAO2W,aAAaugB,GACpBl3B,EAAOmV,oBACPnV,EAAOkU,qBACT,CACA,SAASopB,EAAYh5B,GACnB,MAAM9D,EAASR,EAAOQ,OAAOk8B,WACvBA,UACJA,EAASh8B,UACTA,GACEV,GACErD,GACJA,EAAEggC,OACFA,GACED,EACJxe,GAAY,EACZme,EAAe/3B,EAAEpM,SAAWykC,EAASM,EAAmB34B,GAAKA,EAAEpM,OAAOgL,wBAAwBlD,EAAO+L,eAAiB,OAAS,OAAS,KACxIzH,EAAE0Y,iBACF1Y,EAAE8c,kBACF1gB,EAAUnH,MAAM8sB,mBAAqB,QACrCsW,EAAOpjC,MAAM8sB,mBAAqB,QAClC+W,EAAgB94B,GAChB9I,aAAaihC,GACb9/B,EAAGpD,MAAM8sB,mBAAqB,MAC1B7lB,EAAOs8B,OACTngC,EAAGpD,MAAMwjC,QAAU,GAEjB/8B,EAAOQ,OAAO4N,UAChBpO,EAAOU,UAAUnH,MAAM,oBAAsB,QAE/C4P,EAAK,qBAAsB7E,EAC7B,CACA,SAASi5B,EAAWj5B,GAClB,MAAMo4B,UACJA,EAASh8B,UACTA,GACEV,GACErD,GACJA,EAAEggC,OACFA,GACED,EACCxe,IACD5Z,EAAE0Y,gBAAkB1Y,EAAE2c,WAAY3c,EAAE0Y,iBAAsB1Y,EAAEmwB,aAAc,EAC9E2I,EAAgB94B,GAChB5D,EAAUnH,MAAM8sB,mBAAqB,MACrC1pB,EAAGpD,MAAM8sB,mBAAqB,MAC9BsW,EAAOpjC,MAAM8sB,mBAAqB,MAClCld,EAAK,oBAAqB7E,GAC5B,CACA,SAASk5B,EAAUl5B,GACjB,MAAM9D,EAASR,EAAOQ,OAAOk8B,WACvBA,UACJA,EAASh8B,UACTA,GACEV,GACErD,GACJA,GACE+/B,EACCxe,IACLA,GAAY,EACRle,EAAOQ,OAAO4N,UAChBpO,EAAOU,UAAUnH,MAAM,oBAAsB,GAC7CmH,EAAUnH,MAAM8sB,mBAAqB,IAEnC7lB,EAAOs8B,OACTthC,aAAaihC,GACbA,EAAclgC,GAAS,KACrBI,EAAGpD,MAAMwjC,QAAU,EACnBpgC,EAAGpD,MAAM8sB,mBAAqB,OAAO,GACpC,MAELld,EAAK,mBAAoB7E,GACrB9D,EAAOi9B,eACTz9B,EAAOka,iBAEX,CACA,SAASrS,EAAOM,GACd,MAAMu0B,UACJA,EAASl8B,OACTA,GACER,EACErD,EAAK+/B,EAAU//B,GACrB,IAAKA,EAAI,OACT,MAAMzE,EAASyE,EACT+gC,IAAiBl9B,EAAOmlB,kBAAmB,CAC/CZ,SAAS,EACTH,SAAS,GAEL+Y,IAAkBn9B,EAAOmlB,kBAAmB,CAChDZ,SAAS,EACTH,SAAS,GAEX,IAAK1sB,EAAQ,OACb,MAAM0lC,EAAyB,OAAXz1B,EAAkB,mBAAqB,sBAC3DjQ,EAAO0lC,GAAa,cAAeN,EAAaI,GAChDnjC,EAASqjC,GAAa,cAAeL,EAAYG,GACjDnjC,EAASqjC,GAAa,YAAaJ,EAAWG,EAChD,CASA,SAASxY,IACP,MAAMuX,UACJA,EACA//B,GAAIkhC,GACF79B,EACJA,EAAOQ,OAAOk8B,UAAY3P,GAA0B/sB,EAAQA,EAAOknB,eAAewV,UAAW18B,EAAOQ,OAAOk8B,UAAW,CACpH//B,GAAI,qBAEN,MAAM6D,EAASR,EAAOQ,OAAOk8B,UAC7B,IAAKl8B,EAAO7D,GAAI,OAChB,IAAIA,EAeAggC,EAXJ,GAHyB,iBAAdn8B,EAAO7D,IAAmBqD,EAAOkK,YAC1CvN,EAAKqD,EAAOrD,GAAG5D,cAAcyH,EAAO7D,KAEjCA,GAA2B,iBAAd6D,EAAO7D,GAGbA,IACVA,EAAK6D,EAAO7D,SAFZ,GADAA,EAAKpC,EAASvB,iBAAiBwH,EAAO7D,KACjCA,EAAGpE,OAAQ,OAIdyH,EAAOQ,OAAOklB,mBAA0C,iBAAdllB,EAAO7D,IAAmBA,EAAGpE,OAAS,GAAqD,IAAhDslC,EAAS7kC,iBAAiBwH,EAAO7D,IAAIpE,SAC5HoE,EAAKkhC,EAAS9kC,cAAcyH,EAAO7D,KAEjCA,EAAGpE,OAAS,IAAGoE,EAAKA,EAAG,IAC3BA,EAAGiG,UAAUC,IAAI7C,EAAO+L,eAAiBvL,EAAO45B,gBAAkB55B,EAAO65B,eAErE19B,IACFggC,EAAShgC,EAAG5D,cAAck0B,GAAkBjtB,EAAOQ,OAAOk8B,UAAUoB,YAC/DnB,IACHA,EAASvjC,EAAc,MAAO4G,EAAOQ,OAAOk8B,UAAUoB,WACtDnhC,EAAGoe,OAAO4hB,KAGd3kC,OAAOmU,OAAOuwB,EAAW,CACvB//B,KACAggC,WAEEn8B,EAAOu9B,WA5CN/9B,EAAOQ,OAAOk8B,UAAU//B,IAAOqD,EAAO08B,UAAU//B,IACrDkL,EAAO,MA8CHlL,GACFA,EAAGiG,UAAU5C,EAAO+M,QAAU,SAAW,UAAU9Q,EAAgB+D,EAAOQ,OAAOk8B,UAAUzE,WAE/F,CACA,SAAS7L,IACP,MAAM5rB,EAASR,EAAOQ,OAAOk8B,UACvB//B,EAAKqD,EAAO08B,UAAU//B,GACxBA,GACFA,EAAGiG,UAAUiH,UAAU5N,EAAgB+D,EAAO+L,eAAiBvL,EAAO45B,gBAAkB55B,EAAO65B,gBAnD5Fr6B,EAAOQ,OAAOk8B,UAAU//B,IAAOqD,EAAO08B,UAAU//B,IACrDkL,EAAO,MAqDT,CApRAoiB,EAAa,CACXyS,UAAW,CACT//B,GAAI,KACJ2/B,SAAU,OACVQ,MAAM,EACNiB,WAAW,EACXN,eAAe,EACfxF,UAAW,wBACX6F,UAAW,wBACXE,uBAAwB,4BACxB5D,gBAAiB,8BACjBC,cAAe,+BAGnBr6B,EAAO08B,UAAY,CACjB//B,GAAI,KACJggC,OAAQ,MAqQV/0B,EAAG,mBAAmB,KACpB,IAAK5H,EAAO08B,YAAc18B,EAAO08B,UAAU//B,GAAI,OAC/C,MAAM6D,EAASR,EAAOQ,OAAOk8B,UAC7B,IAAI//B,GACFA,GACEqD,EAAO08B,UACX//B,EAAKgI,EAAkBhI,GACvBA,EAAGtE,SAAQy/B,IACTA,EAAMl1B,UAAUiH,OAAOrJ,EAAO45B,gBAAiB55B,EAAO65B,eACtDvC,EAAMl1B,UAAUC,IAAI7C,EAAO+L,eAAiBvL,EAAO45B,gBAAkB55B,EAAO65B,cAAc,GAC1F,IAEJzyB,EAAG,QAAQ,MAC+B,IAApC5H,EAAOQ,OAAOk8B,UAAU3vB,QAE1B4a,KAEAxC,IACAvZ,IACA+K,IACF,IAEF/O,EAAG,4DAA4D,KAC7DgE,GAAY,IAEdhE,EAAG,gBAAgB,KACjB+O,GAAc,IAEhB/O,EAAG,iBAAiB,CAAC6mB,EAAIluB,MAnPzB,SAAuBA,GAChBP,EAAOQ,OAAOk8B,UAAU//B,IAAOqD,EAAO08B,UAAU//B,KACrDqD,EAAO08B,UAAUC,OAAOpjC,MAAM8sB,mBAAqB,GAAG9lB,MACxD,CAiPEiR,CAAcjR,EAAS,IAEzBqH,EAAG,kBAAkB,KACnB,MAAMjL,GACJA,GACEqD,EAAO08B,UACP//B,GACFA,EAAGiG,UAAU5C,EAAO+M,QAAU,SAAW,UAAU9Q,EAAgB+D,EAAOQ,OAAOk8B,UAAUzE,WAC7F,IAEFrwB,EAAG,WAAW,KACZwkB,GAAS,IAEX,MASMzE,EAAU,KACd3nB,EAAOrD,GAAGiG,UAAUC,OAAO5G,EAAgB+D,EAAOQ,OAAOk8B,UAAUsB,yBAC/Dh+B,EAAO08B,UAAU//B,IACnBqD,EAAO08B,UAAU//B,GAAGiG,UAAUC,OAAO5G,EAAgB+D,EAAOQ,OAAOk8B,UAAUsB,yBAE/E5R,GAAS,EAEXp0B,OAAOmU,OAAOnM,EAAO08B,UAAW,CAC9B9U,OAjBa,KACb5nB,EAAOrD,GAAGiG,UAAUiH,UAAU5N,EAAgB+D,EAAOQ,OAAOk8B,UAAUsB,yBAClEh+B,EAAO08B,UAAU//B,IACnBqD,EAAO08B,UAAU//B,GAAGiG,UAAUiH,UAAU5N,EAAgB+D,EAAOQ,OAAOk8B,UAAUsB,yBAElF7Y,IACAvZ,IACA+K,GAAc,EAWdgR,UACA/b,aACA+K,eACAwO,OACAiH,WAEJ,EAEA,SAAkBrsB,GAChB,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,GACE7H,EACJkqB,EAAa,CACXgU,SAAU,CACRlxB,SAAS,KAGb,MAAMmxB,EAAmB,2IACnBC,EAAe,CAACxhC,EAAIuE,KACxB,MAAMyL,IACJA,GACE3M,EACE+1B,EAAYppB,GAAO,EAAI,EACvByxB,EAAIzhC,EAAGoZ,aAAa,yBAA2B,IACrD,IAAIe,EAAIna,EAAGoZ,aAAa,0BACpBgB,EAAIpa,EAAGoZ,aAAa,0BACxB,MAAM+lB,EAAQn/B,EAAGoZ,aAAa,8BACxBgnB,EAAUpgC,EAAGoZ,aAAa,gCAC1BsoB,EAAS1hC,EAAGoZ,aAAa,+BAqB/B,GApBIe,GAAKC,GACPD,EAAIA,GAAK,IACTC,EAAIA,GAAK,KACA/W,EAAO+L,gBAChB+K,EAAIsnB,EACJrnB,EAAI,MAEJA,EAAIqnB,EACJtnB,EAAI,KAGJA,EADEA,EAAE5X,QAAQ,MAAQ,EACb+M,SAAS6K,EAAG,IAAM5V,EAAW60B,EAAhC,IAEGjf,EAAI5V,EAAW60B,EAAlB,KAGJhf,EADEA,EAAE7X,QAAQ,MAAQ,EACb+M,SAAS8K,EAAG,IAAM7V,EAArB,IAEG6V,EAAI7V,EAAP,KAEF,MAAO67B,EAA6C,CACtD,MAAMuB,EAAiBvB,GAAWA,EAAU,IAAM,EAAI57B,KAAK2D,IAAI5D,IAC/DvE,EAAGpD,MAAMwjC,QAAUuB,CACrB,CACA,IAAIlhC,EAAY,eAAe0Z,MAAMC,UACrC,GAAI,MAAO+kB,EAAyC,CAElD1+B,GAAa,UADQ0+B,GAASA,EAAQ,IAAM,EAAI36B,KAAK2D,IAAI5D,MAE3D,CACA,GAAIm9B,SAAiBA,EAA2C,CAE9DjhC,GAAa,WADSihC,EAASn9B,GAAY,OAE7C,CACAvE,EAAGpD,MAAM6D,UAAYA,CAAS,EAE1BuZ,EAAe,KACnB,MAAMha,GACJA,EAAE4N,OACFA,EAAMrJ,SACNA,EAAQgM,SACRA,EAAQhD,UACRA,GACElK,EACEu+B,EAAWx8B,EAAgBpF,EAAIuhC,GACjCl+B,EAAOkK,WACTq0B,EAASp8B,QAAQJ,EAAgB/B,EAAOksB,OAAQgS,IAElDK,EAASlmC,SAAQy/B,IACfqG,EAAarG,EAAO52B,EAAS,IAE/BqJ,EAAOlS,SAAQ,CAACwJ,EAASoO,KACvB,IAAIqC,EAAgBzQ,EAAQX,SACxBlB,EAAOQ,OAAO8O,eAAiB,GAAqC,SAAhCtP,EAAOQ,OAAOoK,gBACpD0H,GAAiBnR,KAAK2J,KAAKmF,EAAa,GAAK/O,GAAYgM,EAAS3U,OAAS,IAE7E+Z,EAAgBnR,KAAKE,IAAIF,KAAKC,IAAIkR,GAAgB,GAAI,GACtDzQ,EAAQ7I,iBAAiB,GAAGklC,oCAAmD7lC,SAAQy/B,IACrFqG,EAAarG,EAAOxlB,EAAc,GAClC,GACF,EAoBJ1K,EAAG,cAAc,KACV5H,EAAOQ,OAAOy9B,SAASlxB,UAC5B/M,EAAOQ,OAAOuQ,qBAAsB,EACpC/Q,EAAOknB,eAAenW,qBAAsB,EAAI,IAElDnJ,EAAG,QAAQ,KACJ5H,EAAOQ,OAAOy9B,SAASlxB,SAC5B4J,GAAc,IAEhB/O,EAAG,gBAAgB,KACZ5H,EAAOQ,OAAOy9B,SAASlxB,SAC5B4J,GAAc,IAEhB/O,EAAG,iBAAiB,CAAC42B,EAASj+B,KACvBP,EAAOQ,OAAOy9B,SAASlxB,SAhCR,SAAUxM,QACb,IAAbA,IACFA,EAAWP,EAAOQ,OAAOC,OAE3B,MAAM9D,GACJA,EAAEuvB,OACFA,GACElsB,EACEu+B,EAAW,IAAI5hC,EAAG3D,iBAAiBklC,IACrCl+B,EAAOkK,WACTq0B,EAASp8B,QAAQ+pB,EAAOlzB,iBAAiBklC,IAE3CK,EAASlmC,SAAQomC,IACf,IAAIC,EAAmBzyB,SAASwyB,EAAW1oB,aAAa,iCAAkC,KAAOxV,EAChF,IAAbA,IAAgBm+B,EAAmB,GACvCD,EAAWllC,MAAM8sB,mBAAqB,GAAGqY,KAAoB,GAEjE,CAgBEltB,CAAcjR,EAAS,GAE3B,EAEA,SAAcR,GACZ,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,EAAEuB,KACFA,GACEpJ,EACJ,MAAM/D,EAASF,IACfmuB,EAAa,CACX0U,KAAM,CACJ5xB,SAAS,EACT6xB,qBAAqB,EACrBC,SAAU,EACVrW,SAAU,EACVsQ,QAAQ,EACRgG,eAAgB,wBAChBC,iBAAkB,yBAGtB/+B,EAAO2+B,KAAO,CACZ5xB,SAAS,GAEX,IAEIiyB,EACAC,EAHAC,EAAe,EACfC,GAAY,EAGhB,MAAMC,EAAU,GACVC,EAAU,CACdC,QAAS,EACTC,QAAS,EACT19B,aAASnD,EACT8gC,gBAAY9gC,EACZ+gC,iBAAa/gC,EACbsL,aAAStL,EACTghC,iBAAahhC,EACbmgC,SAAU,GAENc,EAAQ,CACZzhB,eAAWxf,EACXyf,aAASzf,EACTygB,cAAUzgB,EACV0gB,cAAU1gB,EACVkhC,UAAMlhC,EACNmhC,UAAMnhC,EACNohC,UAAMphC,EACNqhC,UAAMrhC,EACNwH,WAAOxH,EACP0H,YAAQ1H,EACRke,YAAQle,EACR4gB,YAAQ5gB,EACRshC,aAAc,CAAC,EACfC,eAAgB,CAAC,GAEb5V,EAAW,CACfvT,OAAGpY,EACHqY,OAAGrY,EACHwhC,mBAAexhC,EACfyhC,mBAAezhC,EACf0hC,cAAU1hC,GAEZ,IAsJI2hC,EAtJAvE,EAAQ,EAcZ,SAASwE,IACP,GAAIlB,EAAQ7mC,OAAS,EAAG,OAAO,EAC/B,MAAMgoC,EAAKnB,EAAQ,GAAG5hB,MAChBgjB,EAAKpB,EAAQ,GAAG/f,MAChBohB,EAAKrB,EAAQ,GAAG5hB,MAChBkjB,EAAKtB,EAAQ,GAAG/f,MAEtB,OADiBle,KAAK0f,MAAM4f,EAAKF,IAAO,GAAKG,EAAKF,IAAO,EAE3D,CACA,SAASG,IACP,MAAMngC,EAASR,EAAOQ,OAAOm+B,KACvBE,EAAWQ,EAAQK,YAAY3pB,aAAa,qBAAuBvV,EAAOq+B,SAChF,GAAIr+B,EAAOo+B,qBAAuBS,EAAQr1B,SAAWq1B,EAAQr1B,QAAQ42B,aAAc,CACjF,MAAMC,EAAgBxB,EAAQr1B,QAAQ42B,aAAevB,EAAQr1B,QAAQtF,YACrE,OAAOvD,KAAKE,IAAIw/B,EAAehC,EACjC,CACA,OAAOA,CACT,CAYA,SAASiC,EAAiBx8B,GACxB,MAAMgW,EAHCta,EAAOkK,UAAY,eAAiB,IAAIlK,EAAOQ,OAAO2J,aAI7D,QAAI7F,EAAEpM,OAAOmK,QAAQiY,IACjBta,EAAOuK,OAAOlO,QAAOwF,GAAWA,EAAQ+H,SAAStF,EAAEpM,UAASK,OAAS,CAE3E,CASA,SAASwoC,EAAez8B,GAItB,GAHsB,UAAlBA,EAAEqZ,aACJyhB,EAAQn2B,OAAO,EAAGm2B,EAAQ7mC,SAEvBuoC,EAAiBx8B,GAAI,OAC1B,MAAM9D,EAASR,EAAOQ,OAAOm+B,KAI7B,GAHAK,GAAqB,EACrBC,GAAmB,EACnBG,EAAQj9B,KAAKmC,KACT86B,EAAQ7mC,OAAS,GAArB,CAKA,GAFAymC,GAAqB,EACrBK,EAAQ2B,WAAaV,KAChBjB,EAAQx9B,QAAS,CACpBw9B,EAAQx9B,QAAUyC,EAAEpM,OAAO+R,QAAQ,IAAIjK,EAAOQ,OAAO2J,4BAChDk1B,EAAQx9B,UAASw9B,EAAQx9B,QAAU7B,EAAOuK,OAAOvK,EAAO+K,cAC7D,IAAIf,EAAUq1B,EAAQx9B,QAAQ9I,cAAc,IAAIyH,EAAOs+B,kBAUvD,GATI90B,IACFA,EAAUA,EAAQhR,iBAAiB,kDAAkD,IAEvFqmC,EAAQr1B,QAAUA,EAEhBq1B,EAAQK,YADN11B,EACoBhG,EAAeq7B,EAAQr1B,QAAS,IAAIxJ,EAAOs+B,kBAAkB,QAE7DpgC,GAEnB2gC,EAAQK,YAEX,YADAL,EAAQr1B,aAAUtL,GAGpB2gC,EAAQR,SAAW8B,GACrB,CACA,GAAItB,EAAQr1B,QAAS,CACnB,MAAOs1B,EAASC,GA3DpB,WACE,GAAIH,EAAQ7mC,OAAS,EAAG,MAAO,CAC7Bue,EAAG,KACHC,EAAG,MAEL,MAAM9T,EAAMo8B,EAAQr1B,QAAQ9G,wBAC5B,MAAO,EAAEk8B,EAAQ,GAAG5hB,OAAS4hB,EAAQ,GAAG5hB,MAAQ4hB,EAAQ,GAAG5hB,OAAS,EAAIva,EAAI6T,EAAI9a,EAAOwH,SAAW07B,GAAeE,EAAQ,GAAG/f,OAAS+f,EAAQ,GAAG/f,MAAQ+f,EAAQ,GAAG/f,OAAS,EAAIpc,EAAI8T,EAAI/a,EAAOsH,SAAW47B,EAC5M,CAoD+B+B,GAC3B5B,EAAQC,QAAUA,EAClBD,EAAQE,QAAUA,EAClBF,EAAQr1B,QAAQzQ,MAAM8sB,mBAAqB,KAC7C,CACA8Y,GAAY,CA5BZ,CA6BF,CACA,SAAS+B,EAAgB58B,GACvB,IAAKw8B,EAAiBx8B,GAAI,OAC1B,MAAM9D,EAASR,EAAOQ,OAAOm+B,KACvBA,EAAO3+B,EAAO2+B,KACdwC,EAAe/B,EAAQgC,WAAUC,GAAYA,EAASjkB,YAAc9Y,EAAE8Y,YACxE+jB,GAAgB,IAAG/B,EAAQ+B,GAAgB78B,GAC3C86B,EAAQ7mC,OAAS,IAGrB0mC,GAAmB,EACnBI,EAAQiC,UAAYhB,IACfjB,EAAQr1B,UAGb20B,EAAK7C,MAAQuD,EAAQiC,UAAYjC,EAAQ2B,WAAa9B,EAClDP,EAAK7C,MAAQuD,EAAQR,WACvBF,EAAK7C,MAAQuD,EAAQR,SAAW,GAAKF,EAAK7C,MAAQuD,EAAQR,SAAW,IAAM,IAEzEF,EAAK7C,MAAQt7B,EAAOgoB,WACtBmW,EAAK7C,MAAQt7B,EAAOgoB,SAAW,GAAKhoB,EAAOgoB,SAAWmW,EAAK7C,MAAQ,IAAM,IAE3EuD,EAAQr1B,QAAQzQ,MAAM6D,UAAY,4BAA4BuhC,EAAK7C,UACrE,CACA,SAASyF,EAAaj9B,GACpB,IAAKw8B,EAAiBx8B,GAAI,OAC1B,GAAsB,UAAlBA,EAAEqZ,aAAsC,eAAXrZ,EAAE6Y,KAAuB,OAC1D,MAAM3c,EAASR,EAAOQ,OAAOm+B,KACvBA,EAAO3+B,EAAO2+B,KACdwC,EAAe/B,EAAQgC,WAAUC,GAAYA,EAASjkB,YAAc9Y,EAAE8Y,YACxE+jB,GAAgB,GAAG/B,EAAQn2B,OAAOk4B,EAAc,GAC/CnC,GAAuBC,IAG5BD,GAAqB,EACrBC,GAAmB,EACdI,EAAQr1B,UACb20B,EAAK7C,MAAQ36B,KAAKC,IAAID,KAAKE,IAAIs9B,EAAK7C,MAAOuD,EAAQR,UAAWr+B,EAAOgoB,UACrE6W,EAAQr1B,QAAQzQ,MAAM8sB,mBAAqB,GAAGrmB,EAAOQ,OAAOC,UAC5D4+B,EAAQr1B,QAAQzQ,MAAM6D,UAAY,4BAA4BuhC,EAAK7C,SACnEoD,EAAeP,EAAK7C,MACpBqD,GAAY,EACRR,EAAK7C,MAAQ,GAAKuD,EAAQx9B,QAC5Bw9B,EAAQx9B,QAAQe,UAAUC,IAAI,GAAGrC,EAAOu+B,oBAC/BJ,EAAK7C,OAAS,GAAKuD,EAAQx9B,SACpCw9B,EAAQx9B,QAAQe,UAAUiH,OAAO,GAAGrJ,EAAOu+B,oBAE1B,IAAfJ,EAAK7C,QACPuD,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EAClBF,EAAQx9B,aAAUnD,IAEtB,CAEA,SAASqhB,IACP/f,EAAOkc,gBAAgB8E,iCAAkC,CAC3D,CAkBA,SAASZ,EAAY9b,GACnB,IAAKw8B,EAAiBx8B,KA3HxB,SAAkCA,GAChC,MAAMrC,EAAW,IAAIjC,EAAOQ,OAAOm+B,KAAKG,iBACxC,QAAIx6B,EAAEpM,OAAOmK,QAAQJ,IACjB,IAAIjC,EAAOksB,OAAOlzB,iBAAiBiJ,IAAW5F,QAAO8rB,GAAeA,EAAYve,SAAStF,EAAEpM,UAASK,OAAS,CAEnH,CAsH+BipC,CAAyBl9B,GACpD,OAEF,MAAMq6B,EAAO3+B,EAAO2+B,KACpB,IAAKU,EAAQr1B,QACX,OAEF,IAAK21B,EAAMzhB,YAAcmhB,EAAQx9B,QAC/B,OAEG89B,EAAMxhB,UACTwhB,EAAMz5B,MAAQm5B,EAAQr1B,QAAQtF,aAAe26B,EAAQr1B,QAAQ6B,YAC7D8zB,EAAMv5B,OAASi5B,EAAQr1B,QAAQ4H,cAAgBytB,EAAQr1B,QAAQ8B,aAC/D6zB,EAAM/iB,OAASlgB,EAAa2iC,EAAQK,YAAa,MAAQ,EACzDC,EAAMrgB,OAAS5iB,EAAa2iC,EAAQK,YAAa,MAAQ,EACzDL,EAAQG,WAAaH,EAAQx9B,QAAQ6C,YACrC26B,EAAQI,YAAcJ,EAAQx9B,QAAQ+P,aACtCytB,EAAQK,YAAYnmC,MAAM8sB,mBAAqB,OAGjD,MAAMob,EAAc9B,EAAMz5B,MAAQy4B,EAAK7C,MACjC4F,EAAe/B,EAAMv5B,OAASu4B,EAAK7C,MACzC6D,EAAMC,KAAOz+B,KAAKE,IAAIg+B,EAAQG,WAAa,EAAIiC,EAAc,EAAG,GAChE9B,EAAMG,MAAQH,EAAMC,KACpBD,EAAME,KAAO1+B,KAAKE,IAAIg+B,EAAQI,YAAc,EAAIiC,EAAe,EAAG,GAClE/B,EAAMI,MAAQJ,EAAME,KACpBF,EAAMM,eAAenpB,EAAIsoB,EAAQ7mC,OAAS,EAAI6mC,EAAQ,GAAG5hB,MAAQlZ,EAAEkZ,MACnEmiB,EAAMM,eAAelpB,EAAIqoB,EAAQ7mC,OAAS,EAAI6mC,EAAQ,GAAG/f,MAAQ/a,EAAE+a,MAKnE,GAJoBle,KAAKC,IAAID,KAAK2D,IAAI66B,EAAMM,eAAenpB,EAAI6oB,EAAMK,aAAalpB,GAAI3V,KAAK2D,IAAI66B,EAAMM,eAAelpB,EAAI4oB,EAAMK,aAAajpB,IACzH,IAChB/W,EAAOif,YAAa,IAEjB0gB,EAAMxhB,UAAYghB,EAAW,CAChC,GAAIn/B,EAAO+L,iBAAmB5K,KAAKiO,MAAMuwB,EAAMC,QAAUz+B,KAAKiO,MAAMuwB,EAAM/iB,SAAW+iB,EAAMM,eAAenpB,EAAI6oB,EAAMK,aAAalpB,GAAK3V,KAAKiO,MAAMuwB,EAAMG,QAAU3+B,KAAKiO,MAAMuwB,EAAM/iB,SAAW+iB,EAAMM,eAAenpB,EAAI6oB,EAAMK,aAAalpB,GAGvO,OAFA6oB,EAAMzhB,WAAY,OAClB6B,IAGF,IAAK/f,EAAO+L,iBAAmB5K,KAAKiO,MAAMuwB,EAAME,QAAU1+B,KAAKiO,MAAMuwB,EAAMrgB,SAAWqgB,EAAMM,eAAelpB,EAAI4oB,EAAMK,aAAajpB,GAAK5V,KAAKiO,MAAMuwB,EAAMI,QAAU5+B,KAAKiO,MAAMuwB,EAAMrgB,SAAWqgB,EAAMM,eAAelpB,EAAI4oB,EAAMK,aAAajpB,GAGxO,OAFA4oB,EAAMzhB,WAAY,OAClB6B,GAGJ,CACIzb,EAAE2c,YACJ3c,EAAE0Y,iBAEJ1Y,EAAE8c,kBAhEF5lB,aAAa6kC,GACbrgC,EAAOkc,gBAAgB8E,iCAAkC,EACzDqf,EAAwB9kC,YAAW,KACjCwkB,GAAgB,IA+DlB4f,EAAMxhB,SAAU,EAChB,MAAMwjB,GAAchD,EAAK7C,MAAQoD,IAAiBG,EAAQR,SAAW7+B,EAAOQ,OAAOm+B,KAAKnW,WAClF8W,QACJA,EAAOC,QACPA,GACEF,EACJM,EAAMxgB,SAAWwgB,EAAMM,eAAenpB,EAAI6oB,EAAMK,aAAalpB,EAAI6oB,EAAM/iB,OAAS+kB,GAAchC,EAAMz5B,MAAkB,EAAVo5B,GAC5GK,EAAMvgB,SAAWugB,EAAMM,eAAelpB,EAAI4oB,EAAMK,aAAajpB,EAAI4oB,EAAMrgB,OAASqiB,GAAchC,EAAMv5B,OAAmB,EAAVm5B,GACzGI,EAAMxgB,SAAWwgB,EAAMC,OACzBD,EAAMxgB,SAAWwgB,EAAMC,KAAO,GAAKD,EAAMC,KAAOD,EAAMxgB,SAAW,IAAM,IAErEwgB,EAAMxgB,SAAWwgB,EAAMG,OACzBH,EAAMxgB,SAAWwgB,EAAMG,KAAO,GAAKH,EAAMxgB,SAAWwgB,EAAMG,KAAO,IAAM,IAErEH,EAAMvgB,SAAWugB,EAAME,OACzBF,EAAMvgB,SAAWugB,EAAME,KAAO,GAAKF,EAAME,KAAOF,EAAMvgB,SAAW,IAAM,IAErEugB,EAAMvgB,SAAWugB,EAAMI,OACzBJ,EAAMvgB,SAAWugB,EAAMI,KAAO,GAAKJ,EAAMvgB,SAAWugB,EAAMI,KAAO,IAAM,IAIpE1V,EAAS6V,gBAAe7V,EAAS6V,cAAgBP,EAAMM,eAAenpB,GACtEuT,EAAS8V,gBAAe9V,EAAS8V,cAAgBR,EAAMM,eAAelpB,GACtEsT,EAAS+V,WAAU/V,EAAS+V,SAAW/kC,KAAKoB,OACjD4tB,EAASvT,GAAK6oB,EAAMM,eAAenpB,EAAIuT,EAAS6V,gBAAkB7kC,KAAKoB,MAAQ4tB,EAAS+V,UAAY,EACpG/V,EAAStT,GAAK4oB,EAAMM,eAAelpB,EAAIsT,EAAS8V,gBAAkB9kC,KAAKoB,MAAQ4tB,EAAS+V,UAAY,EAChGj/B,KAAK2D,IAAI66B,EAAMM,eAAenpB,EAAIuT,EAAS6V,eAAiB,IAAG7V,EAASvT,EAAI,GAC5E3V,KAAK2D,IAAI66B,EAAMM,eAAelpB,EAAIsT,EAAS8V,eAAiB,IAAG9V,EAAStT,EAAI,GAChFsT,EAAS6V,cAAgBP,EAAMM,eAAenpB,EAC9CuT,EAAS8V,cAAgBR,EAAMM,eAAelpB,EAC9CsT,EAAS+V,SAAW/kC,KAAKoB,MACzB4iC,EAAQK,YAAYnmC,MAAM6D,UAAY,eAAeuiC,EAAMxgB,eAAewgB,EAAMvgB,eAClF,CAoCA,SAASwiB,IACP,MAAMjD,EAAO3+B,EAAO2+B,KAChBU,EAAQx9B,SAAW7B,EAAO+K,cAAgB/K,EAAOuK,OAAOrL,QAAQmgC,EAAQx9B,WACtEw9B,EAAQr1B,UACVq1B,EAAQr1B,QAAQzQ,MAAM6D,UAAY,+BAEhCiiC,EAAQK,cACVL,EAAQK,YAAYnmC,MAAM6D,UAAY,sBAExCiiC,EAAQx9B,QAAQe,UAAUiH,OAAO,GAAG7J,EAAOQ,OAAOm+B,KAAKI,oBACvDJ,EAAK7C,MAAQ,EACboD,EAAe,EACfG,EAAQx9B,aAAUnD,EAClB2gC,EAAQr1B,aAAUtL,EAClB2gC,EAAQK,iBAAchhC,EACtB2gC,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EAEtB,CACA,SAASsC,EAAOv9B,GACd,MAAMq6B,EAAO3+B,EAAO2+B,KACdn+B,EAASR,EAAOQ,OAAOm+B,KAC7B,IAAKU,EAAQx9B,QAAS,CAChByC,GAAKA,EAAEpM,SACTmnC,EAAQx9B,QAAUyC,EAAEpM,OAAO+R,QAAQ,IAAIjK,EAAOQ,OAAO2J,6BAElDk1B,EAAQx9B,UACP7B,EAAOQ,OAAOsM,SAAW9M,EAAOQ,OAAOsM,QAAQC,SAAW/M,EAAO8M,QACnEuyB,EAAQx9B,QAAUE,EAAgB/B,EAAOwM,SAAU,IAAIxM,EAAOQ,OAAOuU,oBAAoB,GAEzFsqB,EAAQx9B,QAAU7B,EAAOuK,OAAOvK,EAAO+K,cAG3C,IAAIf,EAAUq1B,EAAQx9B,QAAQ9I,cAAc,IAAIyH,EAAOs+B,kBACnD90B,IACFA,EAAUA,EAAQhR,iBAAiB,kDAAkD,IAEvFqmC,EAAQr1B,QAAUA,EAEhBq1B,EAAQK,YADN11B,EACoBhG,EAAeq7B,EAAQr1B,QAAS,IAAIxJ,EAAOs+B,kBAAkB,QAE7DpgC,CAE1B,CACA,IAAK2gC,EAAQr1B,UAAYq1B,EAAQK,YAAa,OAM9C,IAAIoC,EACAC,EACAC,EACAC,EACAthB,EACAC,EACAshB,EACAC,EACAC,EACAC,EACAZ,EACAC,EACAY,EACAC,EACAC,EACAC,EACAjD,EACAC,EAtBAz/B,EAAOQ,OAAO4N,UAChBpO,EAAOU,UAAUnH,MAAMoI,SAAW,SAClC3B,EAAOU,UAAUnH,MAAMorB,YAAc,QAEvC0a,EAAQx9B,QAAQe,UAAUC,IAAI,GAAGrC,EAAOu+B,yBAmBJ,IAAzBY,EAAMK,aAAalpB,GAAqBxS,GACjDw9B,EAASx9B,EAAEkZ,MACXukB,EAASz9B,EAAE+a,QAEXyiB,EAASnC,EAAMK,aAAalpB,EAC5BirB,EAASpC,EAAMK,aAAajpB,GAE9B,MAAM2rB,EAA8B,iBAANp+B,EAAiBA,EAAI,KAC9B,IAAjB46B,GAAsBwD,IACxBZ,OAASpjC,EACTqjC,OAASrjC,GAEX,MAAMmgC,EAAW8B,IACjBhC,EAAK7C,MAAQ4G,GAAkB7D,EAC/BK,EAAewD,GAAkB7D,GAC7Bv6B,GAAwB,IAAjB46B,GAAsBwD,GA8B/BR,EAAa,EACbC,EAAa,IA9Bb3C,EAAaH,EAAQx9B,QAAQ6C,YAC7B+6B,EAAcJ,EAAQx9B,QAAQ+P,aAC9BowB,EAAUh/B,EAAcq8B,EAAQx9B,SAAS6B,KAAO1H,EAAOwH,QACvDy+B,EAAUj/B,EAAcq8B,EAAQx9B,SAAS4B,IAAMzH,EAAOsH,QACtDqd,EAAQqhB,EAAUxC,EAAa,EAAIsC,EACnClhB,EAAQqhB,EAAUxC,EAAc,EAAIsC,EACpCK,EAAa/C,EAAQr1B,QAAQtF,aAAe26B,EAAQr1B,QAAQ6B,YAC5Dw2B,EAAchD,EAAQr1B,QAAQ4H,cAAgBytB,EAAQr1B,QAAQ8B,aAC9D21B,EAAcW,EAAazD,EAAK7C,MAChC4F,EAAeW,EAAc1D,EAAK7C,MAClCwG,EAAgBnhC,KAAKE,IAAIm+B,EAAa,EAAIiC,EAAc,EAAG,GAC3Dc,EAAgBphC,KAAKE,IAAIo+B,EAAc,EAAIiC,EAAe,EAAG,GAC7Dc,GAAiBF,EACjBG,GAAiBF,EACjBL,EAAavhB,EAAQge,EAAK7C,MAC1BqG,EAAavhB,EAAQ+d,EAAK7C,MACtBoG,EAAaI,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,GAEXL,EAAaI,IACfJ,EAAaI,GAEXJ,EAAaM,IACfN,EAAaM,IAMbC,GAAiC,IAAf/D,EAAK7C,QACzBuD,EAAQC,QAAU,EAClBD,EAAQE,QAAU,GAEpBF,EAAQK,YAAYnmC,MAAM8sB,mBAAqB,QAC/CgZ,EAAQK,YAAYnmC,MAAM6D,UAAY,eAAe8kC,QAAiBC,SACtE9C,EAAQr1B,QAAQzQ,MAAM8sB,mBAAqB,QAC3CgZ,EAAQr1B,QAAQzQ,MAAM6D,UAAY,4BAA4BuhC,EAAK7C,QACrE,CACA,SAAS6G,IACP,MAAMhE,EAAO3+B,EAAO2+B,KACdn+B,EAASR,EAAOQ,OAAOm+B,KAC7B,IAAKU,EAAQx9B,QAAS,CAChB7B,EAAOQ,OAAOsM,SAAW9M,EAAOQ,OAAOsM,QAAQC,SAAW/M,EAAO8M,QACnEuyB,EAAQx9B,QAAUE,EAAgB/B,EAAOwM,SAAU,IAAIxM,EAAOQ,OAAOuU,oBAAoB,GAEzFsqB,EAAQx9B,QAAU7B,EAAOuK,OAAOvK,EAAO+K,aAEzC,IAAIf,EAAUq1B,EAAQx9B,QAAQ9I,cAAc,IAAIyH,EAAOs+B,kBACnD90B,IACFA,EAAUA,EAAQhR,iBAAiB,kDAAkD,IAEvFqmC,EAAQr1B,QAAUA,EAEhBq1B,EAAQK,YADN11B,EACoBhG,EAAeq7B,EAAQr1B,QAAS,IAAIxJ,EAAOs+B,kBAAkB,QAE7DpgC,CAE1B,CACK2gC,EAAQr1B,SAAYq1B,EAAQK,cAC7B1/B,EAAOQ,OAAO4N,UAChBpO,EAAOU,UAAUnH,MAAMoI,SAAW,GAClC3B,EAAOU,UAAUnH,MAAMorB,YAAc,IAEvCga,EAAK7C,MAAQ,EACboD,EAAe,EACfG,EAAQK,YAAYnmC,MAAM8sB,mBAAqB,QAC/CgZ,EAAQK,YAAYnmC,MAAM6D,UAAY,qBACtCiiC,EAAQr1B,QAAQzQ,MAAM8sB,mBAAqB,QAC3CgZ,EAAQr1B,QAAQzQ,MAAM6D,UAAY,8BAClCiiC,EAAQx9B,QAAQe,UAAUiH,OAAO,GAAGrJ,EAAOu+B,oBAC3CM,EAAQx9B,aAAUnD,EAClB2gC,EAAQC,QAAU,EAClBD,EAAQE,QAAU,EACpB,CAGA,SAASqD,EAAWt+B,GAClB,MAAMq6B,EAAO3+B,EAAO2+B,KAChBA,EAAK7C,OAAwB,IAAf6C,EAAK7C,MAErB6G,IAGAd,EAAOv9B,EAEX,CACA,SAASu+B,IASP,MAAO,CACLlF,kBATsB39B,EAAOQ,OAAOmlB,kBAAmB,CACvDZ,SAAS,EACTH,SAAS,GAQTke,2BANgC9iC,EAAOQ,OAAOmlB,kBAAmB,CACjEZ,SAAS,EACTH,SAAS,GAMb,CAGA,SAASgD,IACP,MAAM+W,EAAO3+B,EAAO2+B,KACpB,GAAIA,EAAK5xB,QAAS,OAClB4xB,EAAK5xB,SAAU,EACf,MAAM4wB,gBACJA,EAAemF,0BACfA,GACED,IAGJ7iC,EAAOU,UAAUhI,iBAAiB,cAAeqoC,EAAgBpD,GACjE39B,EAAOU,UAAUhI,iBAAiB,cAAewoC,EAAiB4B,GAClE,CAAC,YAAa,gBAAiB,cAAczqC,SAAQ+xB,IACnDpqB,EAAOU,UAAUhI,iBAAiB0xB,EAAWmX,EAAc5D,EAAgB,IAI7E39B,EAAOU,UAAUhI,iBAAiB,cAAe0nB,EAAa0iB,EAChE,CACA,SAASnb,IACP,MAAMgX,EAAO3+B,EAAO2+B,KACpB,IAAKA,EAAK5xB,QAAS,OACnB4xB,EAAK5xB,SAAU,EACf,MAAM4wB,gBACJA,EAAemF,0BACfA,GACED,IAGJ7iC,EAAOU,UAAU/H,oBAAoB,cAAeooC,EAAgBpD,GACpE39B,EAAOU,UAAU/H,oBAAoB,cAAeuoC,EAAiB4B,GACrE,CAAC,YAAa,gBAAiB,cAAczqC,SAAQ+xB,IACnDpqB,EAAOU,UAAU/H,oBAAoByxB,EAAWmX,EAAc5D,EAAgB,IAIhF39B,EAAOU,UAAU/H,oBAAoB,cAAeynB,EAAa0iB,EACnE,CAngBA9qC,OAAO+qC,eAAe/iC,EAAO2+B,KAAM,QAAS,CAC1CqE,IAAG,IACMlH,EAET,GAAAmH,CAAIva,GACF,GAAIoT,IAAUpT,EAAO,CACnB,MAAM1e,EAAUq1B,EAAQr1B,QAClBnI,EAAUw9B,EAAQx9B,QACxBsH,EAAK,aAAcuf,EAAO1e,EAASnI,EACrC,CACAi6B,EAAQpT,CACV,IAyfF9gB,EAAG,QAAQ,KACL5H,EAAOQ,OAAOm+B,KAAK5xB,SACrB6a,GACF,IAEFhgB,EAAG,WAAW,KACZ+f,GAAS,IAEX/f,EAAG,cAAc,CAAC6mB,EAAInqB,KACftE,EAAO2+B,KAAK5xB,SA7WnB,SAAsBzI,GACpB,MAAMwB,EAAS9F,EAAO8F,OACtB,IAAKu5B,EAAQr1B,QAAS,OACtB,GAAI21B,EAAMzhB,UAAW,OACjBpY,EAAOE,SAAW1B,EAAE2c,YAAY3c,EAAE0Y,iBACtC2iB,EAAMzhB,WAAY,EAClB,MAAM9V,EAAQg3B,EAAQ7mC,OAAS,EAAI6mC,EAAQ,GAAK96B,EAChDq7B,EAAMK,aAAalpB,EAAI1O,EAAMoV,MAC7BmiB,EAAMK,aAAajpB,EAAI3O,EAAMiX,KAC/B,CAqWEpC,CAAa3Y,EAAE,IAEjBsD,EAAG,YAAY,CAAC6mB,EAAInqB,KACbtE,EAAO2+B,KAAK5xB,SAnRnB,WACE,MAAM4xB,EAAO3+B,EAAO2+B,KACpB,IAAKU,EAAQr1B,QAAS,OACtB,IAAK21B,EAAMzhB,YAAcyhB,EAAMxhB,QAG7B,OAFAwhB,EAAMzhB,WAAY,OAClByhB,EAAMxhB,SAAU,GAGlBwhB,EAAMzhB,WAAY,EAClByhB,EAAMxhB,SAAU,EAChB,IAAI+kB,EAAoB,IACpBC,EAAoB,IACxB,MAAMC,EAAoB/Y,EAASvT,EAAIosB,EACjCG,EAAe1D,EAAMxgB,SAAWikB,EAChCE,EAAoBjZ,EAAStT,EAAIosB,EACjCI,EAAe5D,EAAMvgB,SAAWkkB,EAGnB,IAAfjZ,EAASvT,IAASosB,EAAoB/hC,KAAK2D,KAAKu+B,EAAe1D,EAAMxgB,UAAYkL,EAASvT,IAC3E,IAAfuT,EAAStT,IAASosB,EAAoBhiC,KAAK2D,KAAKy+B,EAAe5D,EAAMvgB,UAAYiL,EAAStT,IAC9F,MAAMysB,EAAmBriC,KAAKC,IAAI8hC,EAAmBC,GACrDxD,EAAMxgB,SAAWkkB,EACjB1D,EAAMvgB,SAAWmkB,EAEjB,MAAM9B,EAAc9B,EAAMz5B,MAAQy4B,EAAK7C,MACjC4F,EAAe/B,EAAMv5B,OAASu4B,EAAK7C,MACzC6D,EAAMC,KAAOz+B,KAAKE,IAAIg+B,EAAQG,WAAa,EAAIiC,EAAc,EAAG,GAChE9B,EAAMG,MAAQH,EAAMC,KACpBD,EAAME,KAAO1+B,KAAKE,IAAIg+B,EAAQI,YAAc,EAAIiC,EAAe,EAAG,GAClE/B,EAAMI,MAAQJ,EAAME,KACpBF,EAAMxgB,SAAWhe,KAAKC,IAAID,KAAKE,IAAIs+B,EAAMxgB,SAAUwgB,EAAMG,MAAOH,EAAMC,MACtED,EAAMvgB,SAAWje,KAAKC,IAAID,KAAKE,IAAIs+B,EAAMvgB,SAAUugB,EAAMI,MAAOJ,EAAME,MACtER,EAAQK,YAAYnmC,MAAM8sB,mBAAqB,GAAGmd,MAClDnE,EAAQK,YAAYnmC,MAAM6D,UAAY,eAAeuiC,EAAMxgB,eAAewgB,EAAMvgB,eAClF,CAkPEqD,EAAY,IAEd7a,EAAG,aAAa,CAAC6mB,EAAInqB,MACdtE,EAAOqX,WAAarX,EAAOQ,OAAOm+B,KAAK5xB,SAAW/M,EAAO2+B,KAAK5xB,SAAW/M,EAAOQ,OAAOm+B,KAAK7F,QAC/F8J,EAAWt+B,EACb,IAEFsD,EAAG,iBAAiB,KACd5H,EAAO2+B,KAAK5xB,SAAW/M,EAAOQ,OAAOm+B,KAAK5xB,SAC5C60B,GACF,IAEFh6B,EAAG,eAAe,KACZ5H,EAAO2+B,KAAK5xB,SAAW/M,EAAOQ,OAAOm+B,KAAK5xB,SAAW/M,EAAOQ,OAAO4N,SACrEwzB,GACF,IAEF5pC,OAAOmU,OAAOnM,EAAO2+B,KAAM,CACzB/W,SACAD,UACA8b,GAAI5B,EACJ6B,IAAKf,EACL7J,OAAQ8J,GAEZ,EAGA,SAAoB7iC,GAClB,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,GACE7H,EAYJ,SAAS4jC,EAAa7sB,EAAGC,GACvB,MAAM6sB,EAAe,WACnB,IAAIC,EACAC,EACAC,EACJ,MAAO,CAACC,EAAOrqB,KAGb,IAFAmqB,GAAY,EACZD,EAAWG,EAAMzrC,OACVsrC,EAAWC,EAAW,GAC3BC,EAAQF,EAAWC,GAAY,EAC3BE,EAAMD,IAAUpqB,EAClBmqB,EAAWC,EAEXF,EAAWE,EAGf,OAAOF,CAAQ,CAEnB,CAjBqB,GAwBrB,IAAII,EACAC,EAYJ,OAnBAjpC,KAAK6b,EAAIA,EACT7b,KAAK8b,EAAIA,EACT9b,KAAK+e,UAAYlD,EAAEve,OAAS,EAM5B0C,KAAKkpC,YAAc,SAAqB1D,GACtC,OAAKA,GAGLyD,EAAKN,EAAa3oC,KAAK6b,EAAG2pB,GAC1BwD,EAAKC,EAAK,GAIFzD,EAAKxlC,KAAK6b,EAAEmtB,KAAQhpC,KAAK8b,EAAEmtB,GAAMjpC,KAAK8b,EAAEktB,KAAQhpC,KAAK6b,EAAEotB,GAAMjpC,KAAK6b,EAAEmtB,IAAOhpC,KAAK8b,EAAEktB,IAR1E,CASlB,EACOhpC,IACT,CA8EA,SAASmpC,IACFpkC,EAAOqc,WAAWC,SACnBtc,EAAOqc,WAAWgoB,SACpBrkC,EAAOqc,WAAWgoB,YAAS3lC,SACpBsB,EAAOqc,WAAWgoB,OAE7B,CAtIApa,EAAa,CACX5N,WAAY,CACVC,aAAS5d,EACT4lC,SAAS,EACTC,GAAI,WAIRvkC,EAAOqc,WAAa,CAClBC,aAAS5d,GA8HXkJ,EAAG,cAAc,KACf,GAAsB,oBAAX5L,SAEiC,iBAArCgE,EAAOQ,OAAO6b,WAAWC,SAAwBtc,EAAOQ,OAAO6b,WAAWC,mBAAmBvd,aAFpG,EAGsE,iBAArCiB,EAAOQ,OAAO6b,WAAWC,QAAuB,IAAI/hB,SAASvB,iBAAiBgH,EAAOQ,OAAO6b,WAAWC,UAAY,CAACtc,EAAOQ,OAAO6b,WAAWC,UAC5JjkB,SAAQmsC,IAEtB,GADKxkC,EAAOqc,WAAWC,UAAStc,EAAOqc,WAAWC,QAAU,IACxDkoB,GAAkBA,EAAexkC,OACnCA,EAAOqc,WAAWC,QAAQna,KAAKqiC,EAAexkC,aACzC,GAAIwkC,EAAgB,CACzB,MAAMpa,EAAY,GAAGpqB,EAAOQ,OAAO+kB,mBAC7Bkf,EAAqBngC,IACzBtE,EAAOqc,WAAWC,QAAQna,KAAKmC,EAAEwd,OAAO,IACxC9hB,EAAO2L,SACP64B,EAAe7rC,oBAAoByxB,EAAWqa,EAAmB,EAEnED,EAAe9rC,iBAAiB0xB,EAAWqa,EAC7C,IAGJ,MACAzkC,EAAOqc,WAAWC,QAAUtc,EAAOQ,OAAO6b,WAAWC,OAAO,IAE9D1U,EAAG,UAAU,KACXw8B,GAAc,IAEhBx8B,EAAG,UAAU,KACXw8B,GAAc,IAEhBx8B,EAAG,kBAAkB,KACnBw8B,GAAc,IAEhBx8B,EAAG,gBAAgB,CAAC6mB,EAAIruB,EAAWwW,KAC5B5W,EAAOqc,WAAWC,UAAWtc,EAAOqc,WAAWC,QAAQpU,WAC5DlI,EAAOqc,WAAW1F,aAAavW,EAAWwW,EAAa,IAEzDhP,EAAG,iBAAiB,CAAC6mB,EAAIluB,EAAUqW,KAC5B5W,EAAOqc,WAAWC,UAAWtc,EAAOqc,WAAWC,QAAQpU,WAC5DlI,EAAOqc,WAAW7K,cAAcjR,EAAUqW,EAAa,IAEzD5e,OAAOmU,OAAOnM,EAAOqc,WAAY,CAC/B1F,aA1HF,SAAsB+tB,EAAI9tB,GACxB,MAAM+tB,EAAa3kC,EAAOqc,WAAWC,QACrC,IAAIrJ,EACA2xB,EACJ,MAAMjb,EAAS3pB,EAAOjI,YACtB,SAAS8sC,EAAuBvoC,GAC9B,GAAIA,EAAE4L,UAAW,OAMjB,MAAM9H,EAAYJ,EAAO0M,cAAgB1M,EAAOI,UAAYJ,EAAOI,UAC/B,UAAhCJ,EAAOQ,OAAO6b,WAAWkoB,MAhBjC,SAAgCjoC,GAC9B0D,EAAOqc,WAAWgoB,OAASrkC,EAAOQ,OAAOiL,KAAO,IAAIk4B,EAAa3jC,EAAOmN,WAAY7Q,EAAE6Q,YAAc,IAAIw2B,EAAa3jC,EAAOkN,SAAU5Q,EAAE4Q,SAC1I,CAeM43B,CAAuBxoC,GAGvBsoC,GAAuB5kC,EAAOqc,WAAWgoB,OAAOF,aAAa/jC,IAE1DwkC,GAAuD,cAAhC5kC,EAAOQ,OAAO6b,WAAWkoB,KACnDtxB,GAAc3W,EAAE6W,eAAiB7W,EAAEiW,iBAAmBvS,EAAOmT,eAAiBnT,EAAOuS,iBACjFjL,OAAO4E,MAAM+G,IAAgB3L,OAAOy9B,SAAS9xB,KAC/CA,EAAa,GAEf2xB,GAAuBxkC,EAAYJ,EAAOuS,gBAAkBU,EAAa3W,EAAEiW,gBAEzEvS,EAAOQ,OAAO6b,WAAWioB,UAC3BM,EAAsBtoC,EAAE6W,eAAiByxB,GAE3CtoC,EAAE0W,eAAe4xB,GACjBtoC,EAAEqa,aAAaiuB,EAAqB5kC,GACpC1D,EAAE6Y,oBACF7Y,EAAE4X,qBACJ,CACA,GAAIpR,MAAMC,QAAQ4hC,GAChB,IAAK,IAAI/lC,EAAI,EAAGA,EAAI+lC,EAAWpsC,OAAQqG,GAAK,EACtC+lC,EAAW/lC,KAAOgY,GAAgB+tB,EAAW/lC,aAAc+qB,GAC7Dkb,EAAuBF,EAAW/lC,SAG7B+lC,aAAsBhb,GAAU/S,IAAiB+tB,GAC1DE,EAAuBF,EAE3B,EAgFEnzB,cA/EF,SAAuBjR,EAAUqW,GAC/B,MAAM+S,EAAS3pB,EAAOjI,YAChB4sC,EAAa3kC,EAAOqc,WAAWC,QACrC,IAAI1d,EACJ,SAASomC,EAAwB1oC,GAC3BA,EAAE4L,YACN5L,EAAEkV,cAAcjR,EAAUP,GACT,IAAbO,IACFjE,EAAE+b,kBACE/b,EAAEkE,OAAOyT,YACX1X,GAAS,KACPD,EAAE+U,kBAAkB,IAGxBjN,EAAqB9H,EAAEoE,WAAW,KAC3BikC,GACLroC,EAAEgc,eAAe,KAGvB,CACA,GAAIxV,MAAMC,QAAQ4hC,GAChB,IAAK/lC,EAAI,EAAGA,EAAI+lC,EAAWpsC,OAAQqG,GAAK,EAClC+lC,EAAW/lC,KAAOgY,GAAgB+tB,EAAW/lC,aAAc+qB,GAC7Dqb,EAAwBL,EAAW/lC,SAG9B+lC,aAAsBhb,GAAU/S,IAAiB+tB,GAC1DK,EAAwBL,EAE5B,GAoDF,EAEA,SAAc5kC,GACZ,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,GACE7H,EACJkqB,EAAa,CACXgb,KAAM,CACJl4B,SAAS,EACTm4B,kBAAmB,sBACnBC,iBAAkB,iBAClBC,iBAAkB,aAClBC,kBAAmB,0BACnBC,iBAAkB,yBAClBC,wBAAyB,wBACzBC,kBAAmB,+BACnBC,iBAAkB,KAClBC,gCAAiC,KACjCC,2BAA4B,KAC5BC,UAAW,QACX/pC,GAAI,KACJgqC,eAAe,KAGnB7lC,EAAOilC,KAAO,CACZa,SAAS,GAEX,IACIC,EACAC,EAFAC,EAAa,KAGbC,GAA6B,IAAI7qC,MAAO4F,UAC5C,SAASklC,EAAOC,GACd,MAAMC,EAAeJ,EACO,IAAxBI,EAAa9tC,SACjB8tC,EAAahZ,UAAY,GACzBgZ,EAAahZ,UAAY+Y,EAC3B,CAQA,SAASE,EAAgB3pC,IACvBA,EAAKgI,EAAkBhI,IACpBtE,SAAQy/B,IACTA,EAAMt+B,aAAa,WAAY,IAAI,GAEvC,CACA,SAAS+sC,EAAmB5pC,IAC1BA,EAAKgI,EAAkBhI,IACpBtE,SAAQy/B,IACTA,EAAMt+B,aAAa,WAAY,KAAK,GAExC,CACA,SAASgtC,EAAU7pC,EAAI8pC,IACrB9pC,EAAKgI,EAAkBhI,IACpBtE,SAAQy/B,IACTA,EAAMt+B,aAAa,OAAQitC,EAAK,GAEpC,CACA,SAASC,EAAqB/pC,EAAIgqC,IAChChqC,EAAKgI,EAAkBhI,IACpBtE,SAAQy/B,IACTA,EAAMt+B,aAAa,uBAAwBmtC,EAAY,GAE3D,CAOA,SAASC,EAAWjqC,EAAI2P,IACtB3P,EAAKgI,EAAkBhI,IACpBtE,SAAQy/B,IACTA,EAAMt+B,aAAa,aAAc8S,EAAM,GAE3C,CAaA,SAASu6B,EAAUlqC,IACjBA,EAAKgI,EAAkBhI,IACpBtE,SAAQy/B,IACTA,EAAMt+B,aAAa,iBAAiB,EAAK,GAE7C,CACA,SAASstC,EAASnqC,IAChBA,EAAKgI,EAAkBhI,IACpBtE,SAAQy/B,IACTA,EAAMt+B,aAAa,iBAAiB,EAAM,GAE9C,CACA,SAASutC,EAAkBziC,GACzB,GAAkB,KAAdA,EAAE6uB,SAAgC,KAAd7uB,EAAE6uB,QAAgB,OAC1C,MAAM3yB,EAASR,EAAOQ,OAAOykC,KACvBrnB,EAAWtZ,EAAEpM,OACnB,IAAI8H,EAAO24B,aAAc34B,EAAO24B,WAAWh8B,IAAOihB,IAAa5d,EAAO24B,WAAWh8B,KAAMqD,EAAO24B,WAAWh8B,GAAGiN,SAAStF,EAAEpM,SAChHoM,EAAEpM,OAAOmK,QAAQ4qB,GAAkBjtB,EAAOQ,OAAOm4B,WAAWiB,cADnE,CAGA,GAAI55B,EAAOwjB,YAAcxjB,EAAOwjB,WAAWE,QAAU1jB,EAAOwjB,WAAWC,OAAQ,CAC7E,MAAM9O,EAAUhQ,EAAkB3E,EAAOwjB,WAAWE,QACpC/e,EAAkB3E,EAAOwjB,WAAWC,QACxCvc,SAAS0W,KACb5d,EAAOqT,QAAUrT,EAAOQ,OAAOiL,MACnCzL,EAAOmZ,YAELnZ,EAAOqT,MACT8yB,EAAO3lC,EAAO8kC,kBAEda,EAAO3lC,EAAO4kC,mBAGdzwB,EAAQzN,SAAS0W,KACb5d,EAAOoT,cAAgBpT,EAAOQ,OAAOiL,MACzCzL,EAAOyZ,YAELzZ,EAAOoT,YACT+yB,EAAO3lC,EAAO6kC,mBAEdc,EAAO3lC,EAAO2kC,kBAGpB,CACInlC,EAAO24B,YAAc/a,EAASvb,QAAQ4qB,GAAkBjtB,EAAOQ,OAAOm4B,WAAWiB,eACnFhc,EAASopB,OA1BX,CA4BF,CA0BA,SAASC,IACP,OAAOjnC,EAAO24B,YAAc34B,EAAO24B,WAAW4B,SAAWv6B,EAAO24B,WAAW4B,QAAQhiC,MACrF,CACA,SAAS2uC,IACP,OAAOD,KAAmBjnC,EAAOQ,OAAOm4B,WAAWC,SACrD,CAmBA,MAAMuO,EAAY,CAACxqC,EAAIyqC,EAAWhB,KAChCE,EAAgB3pC,GACG,WAAfA,EAAGq7B,UACLwO,EAAU7pC,EAAI,UACdA,EAAGjE,iBAAiB,UAAWquC,IAEjCH,EAAWjqC,EAAIypC,GA9HjB,SAAuBzpC,EAAI0qC,IACzB1qC,EAAKgI,EAAkBhI,IACpBtE,SAAQy/B,IACTA,EAAMt+B,aAAa,gBAAiB6tC,EAAS,GAEjD,CA0HEC,CAAc3qC,EAAIyqC,EAAU,EAExBG,EAAoBjjC,IACpB0hC,GAAsBA,IAAuB1hC,EAAEpM,SAAW8tC,EAAmBp8B,SAAStF,EAAEpM,UAC1F6tC,GAAsB,GAExB/lC,EAAOilC,KAAKa,SAAU,CAAI,EAEtB0B,EAAkB,KACtBzB,GAAsB,EACtBrqC,uBAAsB,KACpBA,uBAAsB,KACfsE,EAAOkI,YACVlI,EAAOilC,KAAKa,SAAU,EACxB,GACA,GACF,EAEE2B,EAAqBnjC,IACzB4hC,GAA6B,IAAI7qC,MAAO4F,SAAS,EAE7CymC,EAAcpjC,IAClB,GAAItE,EAAOilC,KAAKa,UAAY9lC,EAAOQ,OAAOykC,KAAKY,cAAe,OAC9D,IAAI,IAAIxqC,MAAO4F,UAAYilC,EAA6B,IAAK,OAC7D,MAAMrkC,EAAUyC,EAAEpM,OAAO+R,QAAQ,IAAIjK,EAAOQ,OAAO2J,4BACnD,IAAKtI,IAAY7B,EAAOuK,OAAOrD,SAASrF,GAAU,OAClDmkC,EAAqBnkC,EACrB,MAAM8lC,EAAW3nC,EAAOuK,OAAOrL,QAAQ2C,KAAa7B,EAAO+K,YACrD6H,EAAY5S,EAAOQ,OAAOuQ,qBAAuB/Q,EAAO2R,eAAiB3R,EAAO2R,cAAczK,SAASrF,GACzG8lC,GAAY/0B,GACZtO,EAAEsjC,oBAAsBtjC,EAAEsjC,mBAAmBC,mBAC7C7nC,EAAO+L,eACT/L,EAAOrD,GAAG4G,WAAa,EAEvBvD,EAAOrD,GAAG0G,UAAY,EAExB3H,uBAAsB,KAChBqqC,IACA/lC,EAAOQ,OAAOiL,KAChBzL,EAAO4Y,YAAY3M,SAASpK,EAAQkU,aAAa,4BAA6B,GAE9E/V,EAAO8X,QAAQ9X,EAAOuK,OAAOrL,QAAQ2C,GAAU,GAEjDkkC,GAAsB,EAAK,IAC3B,EAEEx3B,EAAa,KACjB,MAAM/N,EAASR,EAAOQ,OAAOykC,KACzBzkC,EAAOmlC,4BACTe,EAAqB1mC,EAAOuK,OAAQ/J,EAAOmlC,4BAEzCnlC,EAAOolC,WACTY,EAAUxmC,EAAOuK,OAAQ/J,EAAOolC,WAElC,MAAM34B,EAAejN,EAAOuK,OAAOhS,OAC/BiI,EAAOglC,mBACTxlC,EAAOuK,OAAOlS,SAAQ,CAACwJ,EAASmH,KAC9B,MAAMiH,EAAajQ,EAAOQ,OAAOiL,KAAOQ,SAASpK,EAAQkU,aAAa,2BAA4B,IAAM/M,EAExG49B,EAAW/kC,EADcrB,EAAOglC,kBAAkBhoC,QAAQ,gBAAiByS,EAAa,GAAGzS,QAAQ,uBAAwByP,GACtF,GAEzC,EAEIkY,EAAO,KACX,MAAM3kB,EAASR,EAAOQ,OAAOykC,KAC7BjlC,EAAOrD,GAAGoe,OAAOkrB,GAGjB,MAAM9d,EAAcnoB,EAAOrD,GACvB6D,EAAOklC,iCACTgB,EAAqBve,EAAa3nB,EAAOklC,iCAEvCllC,EAAOilC,kBACTmB,EAAWze,EAAa3nB,EAAOilC,kBAIjC,MAAM/kC,EAAYV,EAAOU,UACnB0mC,EAAY5mC,EAAO3E,IAAM6E,EAAUqV,aAAa,OAAS,kBA5OxCvR,EA4O0E,QA3OpF,IAATA,IACFA,EAAO,IAGF,IAAIsjC,OAAOtjC,GAAMhH,QAAQ,MADb,IAAM2D,KAAK4mC,MAAM,GAAK5mC,KAAK6mC,UAAUlqC,SAAS,QAJnE,IAAyB0G,EA6OvB,MAAMyjC,EAAOjoC,EAAOQ,OAAOsjB,UAAY9jB,EAAOQ,OAAOsjB,SAAS/W,QAAU,MAAQ,SAlMlF,IAAqBlR,IAmMAurC,EAlMdziC,EAkMGjE,GAjMLrI,SAAQy/B,IACTA,EAAMt+B,aAAa,KAAMqC,EAAG,IAGhC,SAAmBc,EAAIsrC,IACrBtrC,EAAKgI,EAAkBhI,IACpBtE,SAAQy/B,IACTA,EAAMt+B,aAAa,YAAayuC,EAAK,GAEzC,CAyLEC,CAAUxnC,EAAWunC,GAGrB15B,IAGA,IAAIkV,OACFA,EAAMC,OACNA,GACE1jB,EAAOwjB,WAAaxjB,EAAOwjB,WAAa,CAAC,EAW7C,GAVAC,EAAS9e,EAAkB8e,GAC3BC,EAAS/e,EAAkB+e,GACvBD,GACFA,EAAOprB,SAAQsE,GAAMwqC,EAAUxqC,EAAIyqC,EAAW5mC,EAAO4kC,oBAEnD1hB,GACFA,EAAOrrB,SAAQsE,GAAMwqC,EAAUxqC,EAAIyqC,EAAW5mC,EAAO2kC,oBAInD+B,IAA0B,CACPviC,EAAkB3E,EAAO24B,WAAWh8B,IAC5CtE,SAAQsE,IACnBA,EAAGjE,iBAAiB,UAAWquC,EAAkB,GAErD,CAGiB1sC,IACR3B,iBAAiB,mBAAoB+uC,GAC9CznC,EAAOrD,GAAGjE,iBAAiB,QAASgvC,GAAa,GACjD1nC,EAAOrD,GAAGjE,iBAAiB,QAASgvC,GAAa,GACjD1nC,EAAOrD,GAAGjE,iBAAiB,cAAe6uC,GAAmB,GAC7DvnC,EAAOrD,GAAGjE,iBAAiB,YAAa8uC,GAAiB,EAAK,EAiChE5/B,EAAG,cAAc,KACfq+B,EAAa7sC,EAAc,OAAQ4G,EAAOQ,OAAOykC,KAAKC,mBACtDe,EAAWzsC,aAAa,YAAa,aACrCysC,EAAWzsC,aAAa,cAAe,OAAO,IAEhDoO,EAAG,aAAa,KACT5H,EAAOQ,OAAOykC,KAAKl4B,SACxBoY,GAAM,IAERvd,EAAG,kEAAkE,KAC9D5H,EAAOQ,OAAOykC,KAAKl4B,SACxBwB,GAAY,IAEd3G,EAAG,yCAAyC,KACrC5H,EAAOQ,OAAOykC,KAAKl4B,SAzN1B,WACE,GAAI/M,EAAOQ,OAAOiL,MAAQzL,EAAOQ,OAAOgL,SAAWxL,EAAOwjB,WAAY,OACtE,MAAMC,OACJA,EAAMC,OACNA,GACE1jB,EAAOwjB,WACPE,IACE1jB,EAAOoT,aACTyzB,EAAUnjB,GACV6iB,EAAmB7iB,KAEnBojB,EAASpjB,GACT4iB,EAAgB5iB,KAGhBD,IACEzjB,EAAOqT,OACTwzB,EAAUpjB,GACV8iB,EAAmB9iB,KAEnBqjB,EAASrjB,GACT6iB,EAAgB7iB,IAGtB,CAkME0kB,EAAkB,IAEpBvgC,EAAG,oBAAoB,KAChB5H,EAAOQ,OAAOykC,KAAKl4B,SA9L1B,WACE,MAAMvM,EAASR,EAAOQ,OAAOykC,KACxBgC,KACLjnC,EAAO24B,WAAW4B,QAAQliC,SAAQsiC,IAC5B36B,EAAOQ,OAAOm4B,WAAWC,YAC3B0N,EAAgB3L,GACX36B,EAAOQ,OAAOm4B,WAAWO,eAC5BsN,EAAU7L,EAAU,UACpBiM,EAAWjM,EAAUn6B,EAAO+kC,wBAAwB/nC,QAAQ,gBAAiBqG,EAAa82B,GAAY,MAGtGA,EAASt4B,QAAQ4qB,GAAkBjtB,EAAOQ,OAAOm4B,WAAWkB,oBAC9Dc,EAASnhC,aAAa,eAAgB,QAEtCmhC,EAASnwB,gBAAgB,eAC3B,GAEJ,CA8KE49B,EAAkB,IAEpBxgC,EAAG,WAAW,KACP5H,EAAOQ,OAAOykC,KAAKl4B,SArD1B,WACMk5B,GAAYA,EAAWp8B,SAC3B,IAAI4Z,OACFA,EAAMC,OACNA,GACE1jB,EAAOwjB,WAAaxjB,EAAOwjB,WAAa,CAAC,EAC7CC,EAAS9e,EAAkB8e,GAC3BC,EAAS/e,EAAkB+e,GACvBD,GACFA,EAAOprB,SAAQsE,GAAMA,EAAGhE,oBAAoB,UAAWouC,KAErDrjB,GACFA,EAAOrrB,SAAQsE,GAAMA,EAAGhE,oBAAoB,UAAWouC,KAIrDG,KACmBviC,EAAkB3E,EAAO24B,WAAWh8B,IAC5CtE,SAAQsE,IACnBA,EAAGhE,oBAAoB,UAAWouC,EAAkB,IAGvC1sC,IACR1B,oBAAoB,mBAAoB8uC,GAE7CznC,EAAOrD,IAA2B,iBAAdqD,EAAOrD,KAC7BqD,EAAOrD,GAAGhE,oBAAoB,QAAS+uC,GAAa,GACpD1nC,EAAOrD,GAAGhE,oBAAoB,cAAe4uC,GAAmB,GAChEvnC,EAAOrD,GAAGhE,oBAAoB,YAAa6uC,GAAiB,GAEhE,CAwBEpb,EAAS,GAEb,EAEA,SAAiBrsB,GACf,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,GACE7H,EACJkqB,EAAa,CACXtvB,QAAS,CACPoS,SAAS,EACTs7B,KAAM,GACNztC,cAAc,EACdtC,IAAK,SACLgwC,WAAW,KAGf,IAAItyB,GAAc,EACduyB,EAAQ,CAAC,EACb,MAAMC,EAAUjmC,GACPA,EAAKzE,WAAWN,QAAQ,OAAQ,KAAKA,QAAQ,WAAY,IAAIA,QAAQ,OAAQ,KAAKA,QAAQ,MAAO,IAAIA,QAAQ,MAAO,IAEvHirC,EAAgBC,IACpB,MAAM1sC,EAASF,IACf,IAAIlC,EAEFA,EADE8uC,EACS,IAAIC,IAAID,GAER1sC,EAAOpC,SAEpB,MAAMgvC,EAAYhvC,EAASM,SAASoE,MAAM,GAAGlC,MAAM,KAAKC,QAAOwsC,GAAiB,KAATA,IACjEhO,EAAQ+N,EAAUrwC,OAGxB,MAAO,CACLD,IAHUswC,EAAU/N,EAAQ,GAI5BnS,MAHYkgB,EAAU/N,EAAQ,GAI/B,EAEGiO,EAAa,CAACxwC,EAAK0Q,KACvB,MAAMhN,EAASF,IACf,IAAKka,IAAgBhW,EAAOQ,OAAO7F,QAAQoS,QAAS,OACpD,IAAInT,EAEFA,EADEoG,EAAOQ,OAAOglB,IACL,IAAImjB,IAAI3oC,EAAOQ,OAAOglB,KAEtBxpB,EAAOpC,SAEpB,MAAM+U,EAAQ3O,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAAU/M,EAAOwM,SAASzT,cAAc,6BAA6BiQ,OAAahJ,EAAOuK,OAAOvB,GACtJ,IAAI0f,EAAQ8f,EAAQ75B,EAAMoH,aAAa,iBACvC,GAAI/V,EAAOQ,OAAO7F,QAAQ0tC,KAAK9vC,OAAS,EAAG,CACzC,IAAI8vC,EAAOroC,EAAOQ,OAAO7F,QAAQ0tC,KACH,MAA1BA,EAAKA,EAAK9vC,OAAS,KAAY8vC,EAAOA,EAAK/pC,MAAM,EAAG+pC,EAAK9vC,OAAS,IACtEmwB,EAAQ,GAAG2f,KAAQ/vC,EAAM,GAAGA,KAAS,KAAKowB,GAC5C,MAAY9uB,EAASM,SAASgN,SAAS5O,KACrCowB,EAAQ,GAAGpwB,EAAM,GAAGA,KAAS,KAAKowB,KAEhC1oB,EAAOQ,OAAO7F,QAAQ2tC,YACxB5f,GAAS9uB,EAASQ,QAEpB,MAAM2uC,EAAe/sC,EAAOrB,QAAQquC,MAChCD,GAAgBA,EAAargB,QAAUA,IAGvC1oB,EAAOQ,OAAO7F,QAAQC,aACxBoB,EAAOrB,QAAQC,aAAa,CAC1B8tB,SACC,KAAMA,GAET1sB,EAAOrB,QAAQE,UAAU,CACvB6tB,SACC,KAAMA,GACX,EAEIugB,EAAgB,CAACxoC,EAAOioB,EAAOxR,KACnC,GAAIwR,EACF,IAAK,IAAI9pB,EAAI,EAAGrG,EAASyH,EAAOuK,OAAOhS,OAAQqG,EAAIrG,EAAQqG,GAAK,EAAG,CACjE,MAAM+P,EAAQ3O,EAAOuK,OAAO3L,GAE5B,GADqB4pC,EAAQ75B,EAAMoH,aAAa,mBAC3B2S,EAAO,CAC1B,MAAM1f,EAAQhJ,EAAOwa,cAAc7L,GACnC3O,EAAO8X,QAAQ9O,EAAOvI,EAAOyW,EAC/B,CACF,MAEAlX,EAAO8X,QAAQ,EAAGrX,EAAOyW,EAC3B,EAEIgyB,EAAqB,KACzBX,EAAQE,EAAczoC,EAAOQ,OAAOglB,KACpCyjB,EAAcjpC,EAAOQ,OAAOC,MAAO8nC,EAAM7f,OAAO,EAAM,EA6BxD9gB,EAAG,QAAQ,KACL5H,EAAOQ,OAAO7F,QAAQoS,SA5Bf,MACX,MAAM/Q,EAASF,IACf,GAAKkE,EAAOQ,OAAO7F,QAAnB,CACA,IAAKqB,EAAOrB,UAAYqB,EAAOrB,QAAQE,UAGrC,OAFAmF,EAAOQ,OAAO7F,QAAQoS,SAAU,OAChC/M,EAAOQ,OAAO2oC,eAAep8B,SAAU,GAGzCiJ,GAAc,EACduyB,EAAQE,EAAczoC,EAAOQ,OAAOglB,KAC/B+iB,EAAMjwC,KAAQiwC,EAAM7f,OAMzBugB,EAAc,EAAGV,EAAM7f,MAAO1oB,EAAOQ,OAAOyV,oBACvCjW,EAAOQ,OAAO7F,QAAQC,cACzBoB,EAAOtD,iBAAiB,WAAYwwC,IAP/BlpC,EAAOQ,OAAO7F,QAAQC,cACzBoB,EAAOtD,iBAAiB,WAAYwwC,EAVN,CAiBlC,EAUE/jB,EACF,IAEFvd,EAAG,WAAW,KACR5H,EAAOQ,OAAO7F,QAAQoS,SAZZ,MACd,MAAM/Q,EAASF,IACVkE,EAAOQ,OAAO7F,QAAQC,cACzBoB,EAAOrD,oBAAoB,WAAYuwC,EACzC,EASE9c,EACF,IAEFxkB,EAAG,4CAA4C,KACzCoO,GACF8yB,EAAW9oC,EAAOQ,OAAO7F,QAAQrC,IAAK0H,EAAO+K,YAC/C,IAEFnD,EAAG,eAAe,KACZoO,GAAehW,EAAOQ,OAAO4N,SAC/B06B,EAAW9oC,EAAOQ,OAAO7F,QAAQrC,IAAK0H,EAAO+K,YAC/C,GAEJ,EAEA,SAAwBhL,GACtB,IAAIC,OACFA,EAAMiqB,aACNA,EAAY9gB,KACZA,EAAIvB,GACJA,GACE7H,EACAiW,GAAc,EAClB,MAAMzb,EAAWF,IACX2B,EAASF,IACfmuB,EAAa,CACXkf,eAAgB,CACdp8B,SAAS,EACTnS,cAAc,EACdwuC,YAAY,EACZ,aAAA5uB,CAAciU,EAAI50B,GAChB,GAAImG,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAAS,CACnD,MAAMs8B,EAAgBrpC,EAAOuK,OAAOlO,QAAOwF,GAAWA,EAAQkU,aAAa,eAAiBlc,IAAM,GAClG,IAAKwvC,EAAe,OAAO,EAE3B,OADcp9B,SAASo9B,EAActzB,aAAa,2BAA4B,GAEhF,CACA,OAAO/V,EAAOwa,cAAczY,EAAgB/B,EAAOwM,SAAU,IAAIxM,EAAOQ,OAAO2J,yBAAyBtQ,gCAAmCA,OAAU,GACvJ,KAGJ,MAAMyvC,EAAe,KACnBngC,EAAK,cACL,MAAMogC,EAAUhvC,EAASX,SAASC,KAAK2D,QAAQ,IAAK,IAC9CgsC,EAAgBxpC,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAAU/M,EAAOwM,SAASzT,cAAc,6BAA6BiH,EAAO+K,iBAAmB/K,EAAOuK,OAAOvK,EAAO+K,aAElL,GAAIw+B,KADoBC,EAAgBA,EAAczzB,aAAa,aAAe,IACjD,CAC/B,MAAM8C,EAAW7Y,EAAOQ,OAAO2oC,eAAe3uB,cAAcxa,EAAQupC,GACpE,QAAwB,IAAb1wB,GAA4BvR,OAAO4E,MAAM2M,GAAW,OAC/D7Y,EAAO8X,QAAQe,EACjB,GAEI4wB,EAAU,KACd,IAAKzzB,IAAgBhW,EAAOQ,OAAO2oC,eAAep8B,QAAS,OAC3D,MAAMy8B,EAAgBxpC,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAAU/M,EAAOwM,SAASzT,cAAc,6BAA6BiH,EAAO+K,iBAAmB/K,EAAOuK,OAAOvK,EAAO+K,aAC5K2+B,EAAkBF,EAAgBA,EAAczzB,aAAa,cAAgByzB,EAAczzB,aAAa,gBAAkB,GAC5H/V,EAAOQ,OAAO2oC,eAAevuC,cAAgBoB,EAAOrB,SAAWqB,EAAOrB,QAAQC,cAChFoB,EAAOrB,QAAQC,aAAa,KAAM,KAAM,IAAI8uC,KAAqB,IACjEvgC,EAAK,aAEL5O,EAASX,SAASC,KAAO6vC,GAAmB,GAC5CvgC,EAAK,WACP,EAoBFvB,EAAG,QAAQ,KACL5H,EAAOQ,OAAO2oC,eAAep8B,SAnBtB,MACX,IAAK/M,EAAOQ,OAAO2oC,eAAep8B,SAAW/M,EAAOQ,OAAO7F,SAAWqF,EAAOQ,OAAO7F,QAAQoS,QAAS,OACrGiJ,GAAc,EACd,MAAMnc,EAAOU,EAASX,SAASC,KAAK2D,QAAQ,IAAK,IACjD,GAAI3D,EAAM,CACR,MAAM4G,EAAQ,EACRuI,EAAQhJ,EAAOQ,OAAO2oC,eAAe3uB,cAAcxa,EAAQnG,GACjEmG,EAAO8X,QAAQ9O,GAAS,EAAGvI,EAAOT,EAAOQ,OAAOyV,oBAAoB,EACtE,CACIjW,EAAOQ,OAAO2oC,eAAeC,YAC/BptC,EAAOtD,iBAAiB,aAAc4wC,EACxC,EASEnkB,EACF,IAEFvd,EAAG,WAAW,KACR5H,EAAOQ,OAAO2oC,eAAep8B,SAV7B/M,EAAOQ,OAAO2oC,eAAeC,YAC/BptC,EAAOrD,oBAAoB,aAAc2wC,EAW3C,IAEF1hC,EAAG,4CAA4C,KACzCoO,GACFyzB,GACF,IAEF7hC,EAAG,eAAe,KACZoO,GAAehW,EAAOQ,OAAO4N,SAC/Bq7B,GACF,GAEJ,EAIA,SAAkB1pC,GAChB,IAuBI20B,EACAiV,GAxBA3pC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,EAAEuB,KACFA,EAAI3I,OACJA,GACET,EACJC,EAAO8jB,SAAW,CAChBC,SAAS,EACTC,QAAQ,EACR4lB,SAAU,GAEZ3f,EAAa,CACXnG,SAAU,CACR/W,SAAS,EACTvQ,MAAO,IACPqtC,mBAAmB,EACnBC,sBAAsB,EACtBC,iBAAiB,EACjBC,kBAAkB,EAClBC,mBAAmB,KAKvB,IAEIC,EAEAC,EACAjsB,EACAksB,EACAC,EACAC,EACAC,EACAC,EAVAC,EAAqBjqC,GAAUA,EAAOsjB,SAAWtjB,EAAOsjB,SAAStnB,MAAQ,IACzEkuC,EAAuBlqC,GAAUA,EAAOsjB,SAAWtjB,EAAOsjB,SAAStnB,MAAQ,IAE3EmuC,GAAoB,IAAItvC,MAAO4F,UAQnC,SAAS2gC,EAAgBt9B,GAClBtE,IAAUA,EAAOkI,WAAclI,EAAOU,WACvC4D,EAAEpM,SAAW8H,EAAOU,YACxBV,EAAOU,UAAU/H,oBAAoB,gBAAiBipC,GAClD4I,GAAwBlmC,EAAEwd,QAAUxd,EAAEwd,OAAOC,mBAGjDmC,IACF,CACA,MAAM0mB,EAAe,KACnB,GAAI5qC,EAAOkI,YAAclI,EAAO8jB,SAASC,QAAS,OAC9C/jB,EAAO8jB,SAASE,OAClBmmB,GAAY,EACHA,IACTO,EAAuBR,EACvBC,GAAY,GAEd,MAAMP,EAAW5pC,EAAO8jB,SAASE,OAASkmB,EAAmBS,EAAoBD,GAAuB,IAAIrvC,MAAO4F,UACnHjB,EAAO8jB,SAAS8lB,SAAWA,EAC3BzgC,EAAK,mBAAoBygC,EAAUA,EAAWa,GAC9Cd,EAAMjuC,uBAAsB,KAC1BkvC,GAAc,GACd,EAaEC,EAAMC,IACV,GAAI9qC,EAAOkI,YAAclI,EAAO8jB,SAASC,QAAS,OAClDnoB,qBAAqB+tC,GACrBiB,IACA,IAAIpuC,OAA8B,IAAfsuC,EAA6B9qC,EAAOQ,OAAOsjB,SAAStnB,MAAQsuC,EAC/EL,EAAqBzqC,EAAOQ,OAAOsjB,SAAStnB,MAC5CkuC,EAAuB1qC,EAAOQ,OAAOsjB,SAAStnB,MAC9C,MAAMuuC,EAlBc,MACpB,IAAIvB,EAMJ,GAJEA,EADExpC,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAC1B/M,EAAOuK,OAAOlO,QAAOwF,GAAWA,EAAQe,UAAUgH,SAAS,yBAAwB,GAEnF5J,EAAOuK,OAAOvK,EAAO+K,cAElCy+B,EAAe,OAEpB,OAD0Bv9B,SAASu9B,EAAczzB,aAAa,wBAAyB,GAC/D,EASEi1B,IACrB1jC,OAAO4E,MAAM6+B,IAAsBA,EAAoB,QAA2B,IAAfD,IACtEtuC,EAAQuuC,EACRN,EAAqBM,EACrBL,EAAuBK,GAEzBb,EAAmB1tC,EACnB,MAAMiE,EAAQT,EAAOQ,OAAOC,MACtBwqC,EAAU,KACTjrC,IAAUA,EAAOkI,YAClBlI,EAAOQ,OAAOsjB,SAASkmB,kBACpBhqC,EAAOoT,aAAepT,EAAOQ,OAAOiL,MAAQzL,EAAOQ,OAAOgL,QAC7DxL,EAAOyZ,UAAUhZ,GAAO,GAAM,GAC9B0I,EAAK,aACKnJ,EAAOQ,OAAOsjB,SAASimB,kBACjC/pC,EAAO8X,QAAQ9X,EAAOuK,OAAOhS,OAAS,EAAGkI,GAAO,GAAM,GACtD0I,EAAK,cAGFnJ,EAAOqT,OAASrT,EAAOQ,OAAOiL,MAAQzL,EAAOQ,OAAOgL,QACvDxL,EAAOmZ,UAAU1Y,GAAO,GAAM,GAC9B0I,EAAK,aACKnJ,EAAOQ,OAAOsjB,SAASimB,kBACjC/pC,EAAO8X,QAAQ,EAAGrX,GAAO,GAAM,GAC/B0I,EAAK,aAGLnJ,EAAOQ,OAAO4N,UAChBu8B,GAAoB,IAAItvC,MAAO4F,UAC/BvF,uBAAsB,KACpBmvC,GAAK,KAET,EAcF,OAZIruC,EAAQ,GACVhB,aAAak5B,GACbA,EAAUn5B,YAAW,KACnB0vC,GAAS,GACRzuC,IAEHd,uBAAsB,KACpBuvC,GAAS,IAKNzuC,CAAK,EAER0uC,EAAQ,KACZP,GAAoB,IAAItvC,MAAO4F,UAC/BjB,EAAO8jB,SAASC,SAAU,EAC1B8mB,IACA1hC,EAAK,gBAAgB,EAEjBquB,EAAO,KACXx3B,EAAO8jB,SAASC,SAAU,EAC1BvoB,aAAak5B,GACb94B,qBAAqB+tC,GACrBxgC,EAAK,eAAe,EAEhBgiC,EAAQ,CAAC/zB,EAAUg0B,KACvB,GAAIprC,EAAOkI,YAAclI,EAAO8jB,SAASC,QAAS,OAClDvoB,aAAak5B,GACRtd,IACHmzB,GAAsB,GAExB,MAAMU,EAAU,KACd9hC,EAAK,iBACDnJ,EAAOQ,OAAOsjB,SAAS+lB,kBACzB7pC,EAAOU,UAAUhI,iBAAiB,gBAAiBkpC,GAEnD1d,GACF,EAGF,GADAlkB,EAAO8jB,SAASE,QAAS,EACrBonB,EAMF,OALId,IACFJ,EAAmBlqC,EAAOQ,OAAOsjB,SAAStnB,OAE5C8tC,GAAe,OACfW,IAGF,MAAMzuC,EAAQ0tC,GAAoBlqC,EAAOQ,OAAOsjB,SAAStnB,MACzD0tC,EAAmB1tC,IAAS,IAAInB,MAAO4F,UAAY0pC,GAC/C3qC,EAAOqT,OAAS62B,EAAmB,IAAMlqC,EAAOQ,OAAOiL,OACvDy+B,EAAmB,IAAGA,EAAmB,GAC7Ce,IAAS,EAEL/mB,EAAS,KACTlkB,EAAOqT,OAAS62B,EAAmB,IAAMlqC,EAAOQ,OAAOiL,MAAQzL,EAAOkI,YAAclI,EAAO8jB,SAASC,UACxG4mB,GAAoB,IAAItvC,MAAO4F,UAC3BspC,GACFA,GAAsB,EACtBM,EAAIX,IAEJW,IAEF7qC,EAAO8jB,SAASE,QAAS,EACzB7a,EAAK,kBAAiB,EAElBs+B,EAAqB,KACzB,GAAIznC,EAAOkI,YAAclI,EAAO8jB,SAASC,QAAS,OAClD,MAAMxpB,EAAWF,IACgB,WAA7BE,EAAS8wC,kBACXd,GAAsB,EACtBY,GAAM,IAEyB,YAA7B5wC,EAAS8wC,iBACXnnB,GACF,EAEIonB,EAAiBhnC,IACC,UAAlBA,EAAEqZ,cACN4sB,GAAsB,EACtBC,GAAuB,EACnBxqC,EAAOqX,WAAarX,EAAO8jB,SAASE,QACxCmnB,GAAM,GAAK,EAEPI,EAAiBjnC,IACC,UAAlBA,EAAEqZ,cACN6sB,GAAuB,EACnBxqC,EAAO8jB,SAASE,QAClBE,IACF,EAsBFtc,EAAG,QAAQ,KACL5H,EAAOQ,OAAOsjB,SAAS/W,UApBvB/M,EAAOQ,OAAOsjB,SAASmmB,oBACzBjqC,EAAOrD,GAAGjE,iBAAiB,eAAgB4yC,GAC3CtrC,EAAOrD,GAAGjE,iBAAiB,eAAgB6yC,IAU5BlxC,IACR3B,iBAAiB,mBAAoB+uC,GAU5CyD,IACF,IAEFtjC,EAAG,WAAW,KApBR5H,EAAOrD,IAA2B,iBAAdqD,EAAOrD,KAC7BqD,EAAOrD,GAAGhE,oBAAoB,eAAgB2yC,GAC9CtrC,EAAOrD,GAAGhE,oBAAoB,eAAgB4yC,IAQ/BlxC,IACR1B,oBAAoB,mBAAoB8uC,GAY7CznC,EAAO8jB,SAASC,SAClByT,GACF,IAEF5vB,EAAG,0BAA0B,MACvBwiC,GAAiBG,IACnBrmB,GACF,IAEFtc,EAAG,8BAA8B,KAC1B5H,EAAOQ,OAAOsjB,SAASgmB,qBAG1BtS,IAFA2T,GAAM,GAAM,EAGd,IAEFvjC,EAAG,yBAAyB,CAAC6mB,EAAIhuB,EAAO2W,MAClCpX,EAAOkI,WAAclI,EAAO8jB,SAASC,UACrC3M,IAAapX,EAAOQ,OAAOsjB,SAASgmB,qBACtCqB,GAAM,GAAM,GAEZ3T,IACF,IAEF5vB,EAAG,mBAAmB,MAChB5H,EAAOkI,WAAclI,EAAO8jB,SAASC,UACrC/jB,EAAOQ,OAAOsjB,SAASgmB,qBACzBtS,KAGFtZ,GAAY,EACZksB,GAAgB,EAChBG,GAAsB,EACtBF,EAAoB9uC,YAAW,KAC7BgvC,GAAsB,EACtBH,GAAgB,EAChBe,GAAM,EAAK,GACV,MAAI,IAETvjC,EAAG,YAAY,KACb,IAAI5H,EAAOkI,WAAclI,EAAO8jB,SAASC,SAAY7F,EAArD,CAGA,GAFA1iB,aAAa6uC,GACb7uC,aAAak5B,GACT10B,EAAOQ,OAAOsjB,SAASgmB,qBAGzB,OAFAM,GAAgB,OAChBlsB,GAAY,GAGVksB,GAAiBpqC,EAAOQ,OAAO4N,SAAS8V,IAC5CkmB,GAAgB,EAChBlsB,GAAY,CAV0D,CAUrD,IAEnBtW,EAAG,eAAe,MACZ5H,EAAOkI,WAAclI,EAAO8jB,SAASC,UACzCumB,GAAe,EAAI,IAErBtyC,OAAOmU,OAAOnM,EAAO8jB,SAAU,CAC7BonB,QACA1T,OACA2T,QACAjnB,UAEJ,EAEA,SAAenkB,GACb,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,GACE7H,EACJkqB,EAAa,CACXuhB,OAAQ,CACNxrC,OAAQ,KACRyrC,sBAAsB,EACtBC,iBAAkB,EAClBC,sBAAuB,4BACvBC,qBAAsB,mBAG1B,IAAI51B,GAAc,EACd61B,GAAgB,EAIpB,SAASC,IACP,MAAMC,EAAe/rC,EAAOwrC,OAAOxrC,OACnC,IAAK+rC,GAAgBA,EAAa7jC,UAAW,OAC7C,MAAMqO,EAAew1B,EAAax1B,aAC5BD,EAAey1B,EAAaz1B,aAClC,GAAIA,GAAgBA,EAAa1T,UAAUgH,SAAS5J,EAAOQ,OAAOgrC,OAAOG,uBAAwB,OACjG,GAAI,MAAOp1B,EAAuD,OAClE,IAAI8D,EAEFA,EADE0xB,EAAavrC,OAAOiL,KACPQ,SAAS8/B,EAAaz1B,aAAaP,aAAa,2BAA4B,IAE5EQ,EAEbvW,EAAOQ,OAAOiL,KAChBzL,EAAO4Y,YAAYyB,GAEnBra,EAAO8X,QAAQuC,EAEnB,CACA,SAAS8K,IACP,MACEqmB,OAAQQ,GACNhsC,EAAOQ,OACX,GAAIwV,EAAa,OAAO,EACxBA,GAAc,EACd,MAAMi2B,EAAcjsC,EAAOjI,YAC3B,GAAIi0C,EAAahsC,kBAAkBisC,EACjCjsC,EAAOwrC,OAAOxrC,OAASgsC,EAAahsC,OACpChI,OAAOmU,OAAOnM,EAAOwrC,OAAOxrC,OAAOknB,eAAgB,CACjDnW,qBAAqB,EACrByF,qBAAqB,IAEvBxe,OAAOmU,OAAOnM,EAAOwrC,OAAOxrC,OAAOQ,OAAQ,CACzCuQ,qBAAqB,EACrByF,qBAAqB,IAEvBxW,EAAOwrC,OAAOxrC,OAAO2L,cAChB,GAAIzN,EAAW8tC,EAAahsC,QAAS,CAC1C,MAAMksC,EAAqBl0C,OAAOmU,OAAO,CAAC,EAAG6/B,EAAahsC,QAC1DhI,OAAOmU,OAAO+/B,EAAoB,CAChCn7B,qBAAqB,EACrByF,qBAAqB,IAEvBxW,EAAOwrC,OAAOxrC,OAAS,IAAIisC,EAAYC,GACvCL,GAAgB,CAClB,CAGA,OAFA7rC,EAAOwrC,OAAOxrC,OAAOrD,GAAGiG,UAAUC,IAAI7C,EAAOQ,OAAOgrC,OAAOI,sBAC3D5rC,EAAOwrC,OAAOxrC,OAAO4H,GAAG,MAAOkkC,IACxB,CACT,CACA,SAASngC,EAAOoM,GACd,MAAMg0B,EAAe/rC,EAAOwrC,OAAOxrC,OACnC,IAAK+rC,GAAgBA,EAAa7jC,UAAW,OAC7C,MAAM0C,EAAsD,SAAtCmhC,EAAavrC,OAAOoK,cAA2BmhC,EAAalhC,uBAAyBkhC,EAAavrC,OAAOoK,cAG/H,IAAIuhC,EAAmB,EACvB,MAAMC,EAAmBpsC,EAAOQ,OAAOgrC,OAAOG,sBAS9C,GARI3rC,EAAOQ,OAAOoK,cAAgB,IAAM5K,EAAOQ,OAAO2N,iBACpDg+B,EAAmBnsC,EAAOQ,OAAOoK,eAE9B5K,EAAOQ,OAAOgrC,OAAOC,uBACxBU,EAAmB,GAErBA,EAAmBhrC,KAAKiO,MAAM+8B,GAC9BJ,EAAaxhC,OAAOlS,SAAQwJ,GAAWA,EAAQe,UAAUiH,OAAOuiC,KAC5DL,EAAavrC,OAAOiL,MAAQsgC,EAAavrC,OAAOsM,SAAWi/B,EAAavrC,OAAOsM,QAAQC,QACzF,IAAK,IAAInO,EAAI,EAAGA,EAAIutC,EAAkBvtC,GAAK,EACzCmD,EAAgBgqC,EAAav/B,SAAU,6BAA6BxM,EAAO0L,UAAY9M,OAAOvG,SAAQwJ,IACpGA,EAAQe,UAAUC,IAAIupC,EAAiB,SAI3C,IAAK,IAAIxtC,EAAI,EAAGA,EAAIutC,EAAkBvtC,GAAK,EACrCmtC,EAAaxhC,OAAOvK,EAAO0L,UAAY9M,IACzCmtC,EAAaxhC,OAAOvK,EAAO0L,UAAY9M,GAAGgE,UAAUC,IAAIupC,GAI9D,MAAMV,EAAmB1rC,EAAOQ,OAAOgrC,OAAOE,iBACxCW,EAAYX,IAAqBK,EAAavrC,OAAOiL,KAC3D,GAAIzL,EAAO0L,YAAcqgC,EAAargC,WAAa2gC,EAAW,CAC5D,MAAMC,EAAqBP,EAAahhC,YACxC,IAAIwhC,EACA30B,EACJ,GAAIm0B,EAAavrC,OAAOiL,KAAM,CAC5B,MAAM+gC,EAAiBT,EAAaxhC,OAAOlO,QAAOwF,GAAWA,EAAQkU,aAAa,6BAA+B,GAAG/V,EAAO0L,cAAa,GACxI6gC,EAAiBR,EAAaxhC,OAAOrL,QAAQstC,GAC7C50B,EAAY5X,EAAO+K,YAAc/K,EAAOqV,cAAgB,OAAS,MACnE,MACEk3B,EAAiBvsC,EAAO0L,UACxBkM,EAAY20B,EAAiBvsC,EAAOqV,cAAgB,OAAS,OAE3Dg3B,IACFE,GAAgC,SAAd30B,EAAuB8zB,GAAoB,EAAIA,GAE/DK,EAAa35B,sBAAwB25B,EAAa35B,qBAAqBlT,QAAQqtC,GAAkB,IAC/FR,EAAavrC,OAAO2N,eAEpBo+B,EADEA,EAAiBD,EACFC,EAAiBprC,KAAKiO,MAAMxE,EAAgB,GAAK,EAEjD2hC,EAAiBprC,KAAKiO,MAAMxE,EAAgB,GAAK,EAE3D2hC,EAAiBD,GAAsBP,EAAavrC,OAAO8O,eACtEy8B,EAAaj0B,QAAQy0B,EAAgBx0B,EAAU,OAAIrZ,GAEvD,CACF,CA9GAsB,EAAOwrC,OAAS,CACdxrC,OAAQ,MA8GV4H,EAAG,cAAc,KACf,MAAM4jC,OACJA,GACExrC,EAAOQ,OACX,GAAKgrC,GAAWA,EAAOxrC,OACvB,GAA6B,iBAAlBwrC,EAAOxrC,QAAuBwrC,EAAOxrC,kBAAkBjB,YAAa,CAC7E,MAAMxE,EAAWF,IACXoyC,EAA0B,KAC9B,MAAMC,EAAyC,iBAAlBlB,EAAOxrC,OAAsBzF,EAASxB,cAAcyyC,EAAOxrC,QAAUwrC,EAAOxrC,OACzG,GAAI0sC,GAAiBA,EAAc1sC,OACjCwrC,EAAOxrC,OAAS0sC,EAAc1sC,OAC9BmlB,IACAxZ,GAAO,QACF,GAAI+gC,EAAe,CACxB,MAAMtiB,EAAY,GAAGpqB,EAAOQ,OAAO+kB,mBAC7BonB,EAAiBroC,IACrBknC,EAAOxrC,OAASsE,EAAEwd,OAAO,GACzB4qB,EAAc/zC,oBAAoByxB,EAAWuiB,GAC7CxnB,IACAxZ,GAAO,GACP6/B,EAAOxrC,OAAO2L,SACd3L,EAAO2L,QAAQ,EAEjB+gC,EAAch0C,iBAAiB0xB,EAAWuiB,EAC5C,CACA,OAAOD,CAAa,EAEhBE,EAAyB,KAC7B,GAAI5sC,EAAOkI,UAAW,OACAukC,KAEpB/wC,sBAAsBkxC,EACxB,EAEFlxC,sBAAsBkxC,EACxB,MACEznB,IACAxZ,GAAO,EACT,IAEF/D,EAAG,4CAA4C,KAC7C+D,GAAQ,IAEV/D,EAAG,iBAAiB,CAAC6mB,EAAIluB,KACvB,MAAMwrC,EAAe/rC,EAAOwrC,OAAOxrC,OAC9B+rC,IAAgBA,EAAa7jC,WAClC6jC,EAAav6B,cAAcjR,EAAS,IAEtCqH,EAAG,iBAAiB,KAClB,MAAMmkC,EAAe/rC,EAAOwrC,OAAOxrC,OAC9B+rC,IAAgBA,EAAa7jC,WAC9B2jC,GACFE,EAAa3f,SACf,IAEFp0B,OAAOmU,OAAOnM,EAAOwrC,OAAQ,CAC3BrmB,OACAxZ,UAEJ,EAEA,SAAkB5L,GAChB,IAAIC,OACFA,EAAMiqB,aACNA,EAAY9gB,KACZA,EAAId,KACJA,GACEtI,EACJkqB,EAAa,CACX9J,SAAU,CACRpT,SAAS,EACT8/B,UAAU,EACVC,cAAe,EACfC,gBAAgB,EAChBC,oBAAqB,EACrBC,sBAAuB,EACvB9V,QAAQ,EACR+V,gBAAiB,OAiNrBl1C,OAAOmU,OAAOnM,EAAQ,CACpBmgB,SAAU,CACRlD,aAhNJ,WACE,GAAIjd,EAAOQ,OAAO4N,QAAS,OAC3B,MAAMhO,EAAYJ,EAAOtD,eACzBsD,EAAO2W,aAAavW,GACpBJ,EAAOwR,cAAc,GACrBxR,EAAOkc,gBAAgBsO,WAAWjyB,OAAS,EAC3CyH,EAAOmgB,SAASsC,WAAW,CACzBK,WAAY9iB,EAAO2M,IAAM3M,EAAOI,WAAaJ,EAAOI,WAExD,EAwMIggB,YAvMJ,WACE,GAAIpgB,EAAOQ,OAAO4N,QAAS,OAC3B,MACE8N,gBAAiB9S,EAAIqU,QACrBA,GACEzd,EAE2B,IAA3BoJ,EAAKohB,WAAWjyB,QAClB6Q,EAAKohB,WAAWroB,KAAK,CACnB+0B,SAAUzZ,EAAQzd,EAAO+L,eAAiB,SAAW,UACrD1L,KAAM+I,EAAKsW,iBAGftW,EAAKohB,WAAWroB,KAAK,CACnB+0B,SAAUzZ,EAAQzd,EAAO+L,eAAiB,WAAa,YACvD1L,KAAM5D,KAEV,EAuLIgmB,WAtLJ,SAAoBwN,GAClB,IAAInN,WACFA,GACEmN,EACJ,GAAIjwB,EAAOQ,OAAO4N,QAAS,OAC3B,MAAM5N,OACJA,EAAME,UACNA,EACAgM,aAAcC,EAAGO,SACjBA,EACAgP,gBAAiB9S,GACfpJ,EAGE2iB,EADelmB,IACW2M,EAAKsW,eACrC,GAAIoD,GAAc9iB,EAAOuS,eACvBvS,EAAO8X,QAAQ9X,EAAO+K,kBAGxB,GAAI+X,GAAc9iB,EAAOmT,eACnBnT,EAAOuK,OAAOhS,OAAS2U,EAAS3U,OAClCyH,EAAO8X,QAAQ5K,EAAS3U,OAAS,GAEjCyH,EAAO8X,QAAQ9X,EAAOuK,OAAOhS,OAAS,OAJ1C,CAQA,GAAIiI,EAAO2f,SAAS0sB,SAAU,CAC5B,GAAIzjC,EAAKohB,WAAWjyB,OAAS,EAAG,CAC9B,MAAM40C,EAAgB/jC,EAAKohB,WAAW4iB,MAChCC,EAAgBjkC,EAAKohB,WAAW4iB,MAChCE,EAAWH,EAAcjW,SAAWmW,EAAcnW,SAClD72B,EAAO8sC,EAAc9sC,KAAOgtC,EAAchtC,KAChDL,EAAOqqB,SAAWijB,EAAWjtC,EAC7BL,EAAOqqB,UAAY,EACflpB,KAAK2D,IAAI9E,EAAOqqB,UAAY7pB,EAAO2f,SAAS+sB,kBAC9CltC,EAAOqqB,SAAW,IAIhBhqB,EAAO,KAAO5D,IAAQ0wC,EAAc9sC,KAAO,OAC7CL,EAAOqqB,SAAW,EAEtB,MACErqB,EAAOqqB,SAAW,EAEpBrqB,EAAOqqB,UAAY7pB,EAAO2f,SAAS8sB,sBACnC7jC,EAAKohB,WAAWjyB,OAAS,EACzB,IAAIirC,EAAmB,IAAOhjC,EAAO2f,SAAS2sB,cAC9C,MAAMS,EAAmBvtC,EAAOqqB,SAAWmZ,EAC3C,IAAIgK,EAAcxtC,EAAOI,UAAYmtC,EACjC5gC,IAAK6gC,GAAeA,GACxB,IACIC,EADAC,GAAW,EAEf,MAAMC,EAA2C,GAA5BxsC,KAAK2D,IAAI9E,EAAOqqB,UAAiB7pB,EAAO2f,SAAS6sB,oBACtE,IAAIY,EACJ,GAAIJ,EAAcxtC,EAAOmT,eACnB3S,EAAO2f,SAAS4sB,gBACdS,EAAcxtC,EAAOmT,gBAAkBw6B,IACzCH,EAAcxtC,EAAOmT,eAAiBw6B,GAExCF,EAAsBztC,EAAOmT,eAC7Bu6B,GAAW,EACXtkC,EAAK6Y,qBAAsB,GAE3BurB,EAAcxtC,EAAOmT,eAEnB3S,EAAOiL,MAAQjL,EAAO2N,iBAAgBy/B,GAAe,QACpD,GAAIJ,EAAcxtC,EAAOuS,eAC1B/R,EAAO2f,SAAS4sB,gBACdS,EAAcxtC,EAAOuS,eAAiBo7B,IACxCH,EAAcxtC,EAAOuS,eAAiBo7B,GAExCF,EAAsBztC,EAAOuS,eAC7Bm7B,GAAW,EACXtkC,EAAK6Y,qBAAsB,GAE3BurB,EAAcxtC,EAAOuS,eAEnB/R,EAAOiL,MAAQjL,EAAO2N,iBAAgBy/B,GAAe,QACpD,GAAIptC,EAAO2f,SAASgX,OAAQ,CACjC,IAAI7iB,EACJ,IAAK,IAAIu5B,EAAI,EAAGA,EAAI3gC,EAAS3U,OAAQs1C,GAAK,EACxC,GAAI3gC,EAAS2gC,IAAML,EAAa,CAC9Bl5B,EAAYu5B,EACZ,KACF,CAGAL,EADErsC,KAAK2D,IAAIoI,EAASoH,GAAak5B,GAAersC,KAAK2D,IAAIoI,EAASoH,EAAY,GAAKk5B,IAA0C,SAA1BxtC,EAAO2f,eAC5FzS,EAASoH,GAETpH,EAASoH,EAAY,GAErCk5B,GAAeA,CACjB,CAOA,GANII,GACFvlC,EAAK,iBAAiB,KACpBrI,EAAOiZ,SAAS,IAII,IAApBjZ,EAAOqqB,UAMT,GAJEmZ,EADE72B,EACiBxL,KAAK2D,MAAM0oC,EAAcxtC,EAAOI,WAAaJ,EAAOqqB,UAEpDlpB,KAAK2D,KAAK0oC,EAAcxtC,EAAOI,WAAaJ,EAAOqqB,UAEpE7pB,EAAO2f,SAASgX,OAAQ,CAQ1B,MAAM2W,EAAe3sC,KAAK2D,KAAK6H,GAAO6gC,EAAcA,GAAextC,EAAOI,WACpE2tC,EAAmB/tC,EAAOoN,gBAAgBpN,EAAO+K,aAErDy4B,EADEsK,EAAeC,EACEvtC,EAAOC,MACjBqtC,EAAe,EAAIC,EACM,IAAfvtC,EAAOC,MAEQ,IAAfD,EAAOC,KAE9B,OACK,GAAID,EAAO2f,SAASgX,OAEzB,YADAn3B,EAAOka,iBAGL1Z,EAAO2f,SAAS4sB,gBAAkBW,GACpC1tC,EAAOgT,eAAey6B,GACtBztC,EAAOwR,cAAcgyB,GACrBxjC,EAAO2W,aAAa62B,GACpBxtC,EAAOqY,iBAAgB,EAAMrY,EAAO2f,gBACpC3f,EAAOqX,WAAY,EACnBjT,EAAqB1D,GAAW,KACzBV,IAAUA,EAAOkI,WAAckB,EAAK6Y,sBACzC9Y,EAAK,kBACLnJ,EAAOwR,cAAchR,EAAOC,OAC5BlF,YAAW,KACTyE,EAAO2W,aAAa82B,GACpBrpC,EAAqB1D,GAAW,KACzBV,IAAUA,EAAOkI,WACtBlI,EAAOsY,eAAe,GACtB,GACD,GAAE,KAEEtY,EAAOqqB,UAChBlhB,EAAK,8BACLnJ,EAAOgT,eAAew6B,GACtBxtC,EAAOwR,cAAcgyB,GACrBxjC,EAAO2W,aAAa62B,GACpBxtC,EAAOqY,iBAAgB,EAAMrY,EAAO2f,gBAC/B3f,EAAOqX,YACVrX,EAAOqX,WAAY,EACnBjT,EAAqB1D,GAAW,KACzBV,IAAUA,EAAOkI,WACtBlI,EAAOsY,eAAe,MAI1BtY,EAAOgT,eAAew6B,GAExBxtC,EAAOmV,oBACPnV,EAAOkU,qBACT,KAAO,IAAI1T,EAAO2f,SAASgX,OAEzB,YADAn3B,EAAOka,iBAEE1Z,EAAO2f,UAChBhX,EAAK,6BACP,GACK3I,EAAO2f,SAAS0sB,UAAYlqB,GAAYniB,EAAO4iB,gBAClDja,EAAK,0BACLnJ,EAAOgT,iBACPhT,EAAOmV,oBACPnV,EAAOkU,sBArJT,CAuJF,IAQF,EAEA,SAAcnU,GACZ,IAWIiuC,EACAC,EACAC,EACA/mB,GAdAnnB,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,GACE7H,EACJkqB,EAAa,CACXjf,KAAM,CACJC,KAAM,EACNmQ,KAAM,YAOV,MAAM+yB,EAAkB,KACtB,IAAIxgC,EAAe3N,EAAOQ,OAAOmN,aAMjC,MAL4B,iBAAjBA,GAA6BA,EAAazO,QAAQ,MAAQ,EACnEyO,EAAe3P,WAAW2P,EAAanQ,QAAQ,IAAK,KAAO,IAAMwC,EAAOwE,KACvC,iBAAjBmJ,IAChBA,EAAe3P,WAAW2P,IAErBA,CAAY,EAyHrB/F,EAAG,QAtBY,KACbuf,EAAcnnB,EAAOQ,OAAOwK,MAAQhL,EAAOQ,OAAOwK,KAAKC,KAAO,CAAC,IAsBjErD,EAAG,UApBc,KACf,MAAMpH,OACJA,EAAM7D,GACNA,GACEqD,EACEonB,EAAa5mB,EAAOwK,MAAQxK,EAAOwK,KAAKC,KAAO,EACjDkc,IAAgBC,GAClBzqB,EAAGiG,UAAUiH,OAAO,GAAGrJ,EAAO0Q,6BAA8B,GAAG1Q,EAAO0Q,qCACtEg9B,EAAiB,EACjBluC,EAAOwnB,yBACGL,GAAeC,IACzBzqB,EAAGiG,UAAUC,IAAI,GAAGrC,EAAO0Q,8BACF,WAArB1Q,EAAOwK,KAAKoQ,MACdze,EAAGiG,UAAUC,IAAI,GAAGrC,EAAO0Q,qCAE7BlR,EAAOwnB,wBAETL,EAAcC,CAAU,IAI1BpnB,EAAOgL,KAAO,CACZuD,WA1HiBhE,IACjB,MAAMK,cACJA,GACE5K,EAAOQ,QACLyK,KACJA,EAAImQ,KACJA,GACEpb,EAAOQ,OAAOwK,KACZiC,EAAejN,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAAU/M,EAAO8M,QAAQvC,OAAOhS,OAASgS,EAAOhS,OAC7G21C,EAAiB/sC,KAAKiO,MAAMnC,EAAehC,GAEzC+iC,EADE7sC,KAAKiO,MAAMnC,EAAehC,KAAUgC,EAAehC,EAC5BgC,EAEA9L,KAAK2J,KAAKmC,EAAehC,GAAQA,EAEtC,SAAlBL,GAAqC,QAATwQ,IAC9B4yB,EAAyB7sC,KAAKC,IAAI4sC,EAAwBpjC,EAAgBK,IAE5EgjC,EAAeD,EAAyB/iC,CAAI,EAyG5CuD,YAvGkB,KACdxO,EAAOuK,QACTvK,EAAOuK,OAAOlS,SAAQsW,IAChBA,EAAMy/B,qBACRz/B,EAAMpV,MAAM6M,OAAS,GACrBuI,EAAMpV,MAAMyG,EAAOuM,kBAAkB,eAAiB,GACxD,GAEJ,EAgGAqC,YA9FkB,CAAChQ,EAAG+P,EAAOpE,KAC7B,MAAM+E,eACJA,GACEtP,EAAOQ,OACLmN,EAAewgC,KACfljC,KACJA,EAAImQ,KACJA,GACEpb,EAAOQ,OAAOwK,KACZiC,EAAejN,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAAU/M,EAAO8M,QAAQvC,OAAOhS,OAASgS,EAAOhS,OAE7G,IAAI81C,EACA/iC,EACAgjC,EACJ,GAAa,QAATlzB,GAAkB9L,EAAiB,EAAG,CACxC,MAAMi/B,EAAaptC,KAAKiO,MAAMxQ,GAAK0Q,EAAiBrE,IAC9CujC,EAAoB5vC,EAAIqM,EAAOqE,EAAiBi/B,EAChDE,EAAgC,IAAfF,EAAmBj/B,EAAiBnO,KAAKE,IAAIF,KAAK2J,MAAMmC,EAAeshC,EAAatjC,EAAOqE,GAAkBrE,GAAOqE,GAC3Ig/B,EAAMntC,KAAKiO,MAAMo/B,EAAoBC,GACrCnjC,EAASkjC,EAAoBF,EAAMG,EAAiBF,EAAaj/B,EACjE++B,EAAqB/iC,EAASgjC,EAAMN,EAAyB/iC,EAC7D0D,EAAMpV,MAAMm1C,MAAQL,CACtB,KAAoB,WAATjzB,GACT9P,EAASnK,KAAKiO,MAAMxQ,EAAIqM,GACxBqjC,EAAM1vC,EAAI0M,EAASL,GACfK,EAAS4iC,GAAkB5iC,IAAW4iC,GAAkBI,IAAQrjC,EAAO,KACzEqjC,GAAO,EACHA,GAAOrjC,IACTqjC,EAAM,EACNhjC,GAAU,MAIdgjC,EAAMntC,KAAKiO,MAAMxQ,EAAIqvC,GACrB3iC,EAAS1M,EAAI0vC,EAAML,GAErBt/B,EAAM2/B,IAAMA,EACZ3/B,EAAMrD,OAASA,EACfqD,EAAMpV,MAAM6M,OAAS,iBAAiB6E,EAAO,GAAK0C,UAAqB1C,KACvE0D,EAAMpV,MAAMyG,EAAOuM,kBAAkB,eAAyB,IAAR+hC,EAAY3gC,GAAgB,GAAGA,MAAmB,GACxGgB,EAAMy/B,oBAAqB,CAAI,EAuD/B1+B,kBArDwB,CAACpB,EAAWpB,KACpC,MAAMiB,eACJA,EAAca,aACdA,GACEhP,EAAOQ,OACLmN,EAAewgC,KACfljC,KACJA,GACEjL,EAAOQ,OAAOwK,KAMlB,GALAhL,EAAO8N,aAAeQ,EAAYX,GAAgBqgC,EAClDhuC,EAAO8N,YAAc3M,KAAK2J,KAAK9K,EAAO8N,YAAc7C,GAAQ0C,EACvD3N,EAAOQ,OAAO4N,UACjBpO,EAAOU,UAAUnH,MAAMyG,EAAOuM,kBAAkB,UAAY,GAAGvM,EAAO8N,YAAcH,OAElFQ,EAAgB,CAClB,MAAMwB,EAAgB,GACtB,IAAK,IAAI/Q,EAAI,EAAGA,EAAIsO,EAAS3U,OAAQqG,GAAK,EAAG,CAC3C,IAAIgR,EAAiB1C,EAAStO,GAC1BoQ,IAAcY,EAAiBzO,KAAKiO,MAAMQ,IAC1C1C,EAAStO,GAAKoB,EAAO8N,YAAcZ,EAAS,IAAIyC,EAAcxN,KAAKyN,EACzE,CACA1C,EAASjE,OAAO,EAAGiE,EAAS3U,QAC5B2U,EAAS/K,QAAQwN,EACnB,GAgCJ,EAmLA,SAAsB5P,GACpB,IAAIC,OACFA,GACED,EACJ/H,OAAOmU,OAAOnM,EAAQ,CACpBktB,YAAaA,GAAYtG,KAAK5mB,GAC9ButB,aAAcA,GAAa3G,KAAK5mB,GAChCytB,SAAUA,GAAS7G,KAAK5mB,GACxB8tB,YAAaA,GAAYlH,KAAK5mB,GAC9BiuB,gBAAiBA,GAAgBrH,KAAK5mB,IAE1C,EAiHA,SAAoBD,GAClB,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,GACE7H,EACJkqB,EAAa,CACX0kB,WAAY,CACVC,WAAW,KAoCf1gB,GAAW,CACT1e,OAAQ,OACRxP,SACA4H,KACA+O,aArCmB,KACnB,MAAMpM,OACJA,GACEvK,EACWA,EAAOQ,OAAOmuC,WAC7B,IAAK,IAAI/vC,EAAI,EAAGA,EAAI2L,EAAOhS,OAAQqG,GAAK,EAAG,CACzC,MAAMiD,EAAU7B,EAAOuK,OAAO3L,GAE9B,IAAIiwC,GADWhtC,EAAQmQ,kBAElBhS,EAAOQ,OAAOiW,mBAAkBo4B,GAAM7uC,EAAOI,WAClD,IAAI0uC,EAAK,EACJ9uC,EAAO+L,iBACV+iC,EAAKD,EACLA,EAAK,GAEP,MAAME,EAAe/uC,EAAOQ,OAAOmuC,WAAWC,UAAYztC,KAAKC,IAAI,EAAID,KAAK2D,IAAIjD,EAAQX,UAAW,GAAK,EAAIC,KAAKE,IAAIF,KAAKC,IAAIS,EAAQX,UAAW,GAAI,GAC/I0c,EAAWgR,GAAapuB,EAAQqB,GACtC+b,EAASrkB,MAAMwjC,QAAUgS,EACzBnxB,EAASrkB,MAAM6D,UAAY,eAAeyxC,QAASC,WACrD,GAmBAt9B,cAjBoBjR,IACpB,MAAM0uB,EAAoBjvB,EAAOuK,OAAOjN,KAAIuE,GAAWD,EAAoBC,KAC3EotB,EAAkB52B,SAAQsE,IACxBA,EAAGpD,MAAM8sB,mBAAqB,GAAG9lB,KAAY,IAE/CyuB,GAA2B,CACzBhvB,SACAO,WACA0uB,oBACAC,WAAW,GACX,EAQFf,gBAAiB,KAAM,CACrBvjB,cAAe,EACf0E,eAAgB,EAChByB,qBAAqB,EACrBpD,aAAc,EACd8I,kBAAmBzW,EAAOQ,OAAO4N,WAGvC,EAEA,SAAoBrO,GAClB,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,GACE7H,EACJkqB,EAAa,CACX+kB,WAAY,CACVtgB,cAAc,EACdugB,QAAQ,EACRC,aAAc,GACdC,YAAa,OAGjB,MAAMC,EAAqB,CAACvtC,EAASX,EAAU6K,KAC7C,IAAIsjC,EAAetjC,EAAelK,EAAQ9I,cAAc,6BAA+B8I,EAAQ9I,cAAc,4BACzGu2C,EAAcvjC,EAAelK,EAAQ9I,cAAc,8BAAgC8I,EAAQ9I,cAAc,+BACxGs2C,IACHA,EAAej2C,EAAc,OAAO,iDAAgD2S,EAAe,OAAS,QAAQ3P,MAAM,MAC1HyF,EAAQkZ,OAAOs0B,IAEZC,IACHA,EAAcl2C,EAAc,OAAO,iDAAgD2S,EAAe,QAAU,WAAW3P,MAAM,MAC7HyF,EAAQkZ,OAAOu0B,IAEbD,IAAcA,EAAa91C,MAAMwjC,QAAU57B,KAAKC,KAAKF,EAAU,IAC/DouC,IAAaA,EAAY/1C,MAAMwjC,QAAU57B,KAAKC,IAAIF,EAAU,GAAE,EA2HpEgtB,GAAW,CACT1e,OAAQ,OACRxP,SACA4H,KACA+O,aArHmB,KACnB,MAAMha,GACJA,EAAE+D,UACFA,EAAS6J,OACTA,EACArE,MAAOiuB,EACP/tB,OAAQguB,EACR1nB,aAAcC,EACdnI,KAAMiI,EAAU1H,QAChBA,GACE/E,EACEuvC,EAAI3qC,EAAa5E,GACjBQ,EAASR,EAAOQ,OAAOwuC,WACvBjjC,EAAe/L,EAAO+L,eACtBc,EAAY7M,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAC1D,IACIyiC,EADAC,EAAgB,EAEhBjvC,EAAOyuC,SACLljC,GACFyjC,EAAexvC,EAAOU,UAAU3H,cAAc,uBACzCy2C,IACHA,EAAep2C,EAAc,MAAO,sBACpC4G,EAAOU,UAAUqa,OAAOy0B,IAE1BA,EAAaj2C,MAAM6M,OAAS,GAAG+tB,QAE/Bqb,EAAe7yC,EAAG5D,cAAc,uBAC3By2C,IACHA,EAAep2C,EAAc,MAAO,sBACpCuD,EAAGoe,OAAOy0B,MAIhB,IAAK,IAAI5wC,EAAI,EAAGA,EAAI2L,EAAOhS,OAAQqG,GAAK,EAAG,CACzC,MAAMiD,EAAU0I,EAAO3L,GACvB,IAAIqR,EAAarR,EACbiO,IACFoD,EAAahE,SAASpK,EAAQkU,aAAa,2BAA4B,KAEzE,IAAI25B,EAA0B,GAAbz/B,EACb83B,EAAQ5mC,KAAKiO,MAAMsgC,EAAa,KAChC/iC,IACF+iC,GAAcA,EACd3H,EAAQ5mC,KAAKiO,OAAOsgC,EAAa,MAEnC,MAAMxuC,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,GAC1D,IAAI2tC,EAAK,EACLC,EAAK,EACLa,EAAK,EACL1/B,EAAa,GAAM,GACrB4+B,EAAc,GAAR9G,EAAYt7B,EAClBkjC,EAAK,IACK1/B,EAAa,GAAK,GAAM,GAClC4+B,EAAK,EACLc,EAAc,GAAR5H,EAAYt7B,IACRwD,EAAa,GAAK,GAAM,GAClC4+B,EAAKpiC,EAAqB,EAARs7B,EAAYt7B,EAC9BkjC,EAAKljC,IACKwD,EAAa,GAAK,GAAM,IAClC4+B,GAAMpiC,EACNkjC,EAAK,EAAIljC,EAA0B,EAAbA,EAAiBs7B,GAErCp7B,IACFkiC,GAAMA,GAEH9iC,IACH+iC,EAAKD,EACLA,EAAK,GAEP,MAAMzxC,EAAY,WAAWmyC,EAAExjC,EAAe,GAAK2jC,kBAA2BH,EAAExjC,EAAe2jC,EAAa,sBAAsBb,QAASC,QAASa,OAChJzuC,GAAY,GAAKA,GAAY,IAC/BuuC,EAA6B,GAAbx/B,EAA6B,GAAX/O,EAC9ByL,IAAK8iC,EAA8B,IAAbx/B,EAA6B,GAAX/O,IAE9CW,EAAQtI,MAAM6D,UAAYA,EACtBoD,EAAOkuB,cACT0gB,EAAmBvtC,EAASX,EAAU6K,EAE1C,CAGA,GAFArL,EAAUnH,MAAMq2C,gBAAkB,YAAYnjC,EAAa,MAC3D/L,EAAUnH,MAAM,4BAA8B,YAAYkT,EAAa,MACnEjM,EAAOyuC,OACT,GAAIljC,EACFyjC,EAAaj2C,MAAM6D,UAAY,oBAAoB+2B,EAAc,EAAI3zB,EAAO0uC,oBAAoB/a,EAAc,8CAA8C3zB,EAAO2uC,mBAC9J,CACL,MAAMU,EAAc1uC,KAAK2D,IAAI2qC,GAA4D,GAA3CtuC,KAAKiO,MAAMjO,KAAK2D,IAAI2qC,GAAiB,IAC7Ex8B,EAAa,KAAO9R,KAAK2uC,IAAkB,EAAdD,EAAkB1uC,KAAKK,GAAK,KAAO,EAAIL,KAAKI,IAAkB,EAAdsuC,EAAkB1uC,KAAKK,GAAK,KAAO,GAChHuuC,EAASvvC,EAAO2uC,YAChBa,EAASxvC,EAAO2uC,YAAcl8B,EAC9B4e,EAASrxB,EAAO0uC,aACtBM,EAAaj2C,MAAM6D,UAAY,WAAW2yC,SAAcC,uBAA4B5b,EAAe,EAAIvC,SAAcuC,EAAe,EAAI4b,yBAC1I,CAEF,MAAMC,GAAWlrC,EAAQgC,UAAYhC,EAAQwC,YAAcxC,EAAQ+B,oBAAsB2F,EAAa,EAAI,EAC1G/L,EAAUnH,MAAM6D,UAAY,qBAAqB6yC,gBAAsBV,EAAEvvC,EAAO+L,eAAiB,EAAI0jC,kBAA8BF,EAAEvvC,EAAO+L,gBAAkB0jC,EAAgB,SAC9K/uC,EAAUnH,MAAMsG,YAAY,4BAA6B,GAAGowC,MAAY,EAuBxEz+B,cArBoBjR,IACpB,MAAM5D,GACJA,EAAE4N,OACFA,GACEvK,EAOJ,GANAuK,EAAOlS,SAAQwJ,IACbA,EAAQtI,MAAM8sB,mBAAqB,GAAG9lB,MACtCsB,EAAQ7I,iBAAiB,gHAAgHX,SAAQy/B,IAC/IA,EAAMv+B,MAAM8sB,mBAAqB,GAAG9lB,KAAY,GAChD,IAEAP,EAAOQ,OAAOwuC,WAAWC,SAAWjvC,EAAO+L,eAAgB,CAC7D,MAAM4iB,EAAWhyB,EAAG5D,cAAc,uBAC9B41B,IAAUA,EAASp1B,MAAM8sB,mBAAqB,GAAG9lB,MACvD,GAQA8tB,gBA/HsB,KAEtB,MAAMtiB,EAAe/L,EAAO+L,eAC5B/L,EAAOuK,OAAOlS,SAAQwJ,IACpB,MAAMX,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,GAC1DkuC,EAAmBvtC,EAASX,EAAU6K,EAAa,GACnD,EA0HFuiB,gBAAiB,IAAMtuB,EAAOQ,OAAOwuC,WACrC5gB,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBvjB,cAAe,EACf0E,eAAgB,EAChByB,qBAAqB,EACrBuR,gBAAiB,EACjB3U,aAAc,EACdQ,gBAAgB,EAChBsI,kBAAkB,KAGxB,EAaA,SAAoB1W,GAClB,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,GACE7H,EACJkqB,EAAa,CACXimB,WAAY,CACVxhB,cAAc,EACdyhB,eAAe,KAGnB,MAAMf,EAAqB,CAACvtC,EAASX,KACnC,IAAImuC,EAAervC,EAAO+L,eAAiBlK,EAAQ9I,cAAc,6BAA+B8I,EAAQ9I,cAAc,4BAClHu2C,EAActvC,EAAO+L,eAAiBlK,EAAQ9I,cAAc,8BAAgC8I,EAAQ9I,cAAc,+BACjHs2C,IACHA,EAAe/f,GAAa,OAAQztB,EAAS7B,EAAO+L,eAAiB,OAAS,QAE3EujC,IACHA,EAAchgB,GAAa,OAAQztB,EAAS7B,EAAO+L,eAAiB,QAAU,WAE5EsjC,IAAcA,EAAa91C,MAAMwjC,QAAU57B,KAAKC,KAAKF,EAAU,IAC/DouC,IAAaA,EAAY/1C,MAAMwjC,QAAU57B,KAAKC,IAAIF,EAAU,GAAE,EA+DpEgtB,GAAW,CACT1e,OAAQ,OACRxP,SACA4H,KACA+O,aAtDmB,KACnB,MAAMpM,OACJA,EACAmC,aAAcC,GACZ3M,EACEQ,EAASR,EAAOQ,OAAO0vC,WACvBE,EAAYxrC,EAAa5E,GAC/B,IAAK,IAAIpB,EAAI,EAAGA,EAAI2L,EAAOhS,OAAQqG,GAAK,EAAG,CACzC,MAAMiD,EAAU0I,EAAO3L,GACvB,IAAIsC,EAAWW,EAAQX,SACnBlB,EAAOQ,OAAO0vC,WAAWC,gBAC3BjvC,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,IAEtD,MAAM2wB,EAAShwB,EAAQmQ,kBAEvB,IAAIq+B,GADY,IAAMnvC,EAElBovC,EAAU,EACVzB,EAAK7uC,EAAOQ,OAAO4N,SAAWyjB,EAAS7xB,EAAOI,WAAayxB,EAC3Did,EAAK,EACJ9uC,EAAO+L,eAKDY,IACT0jC,GAAWA,IALXvB,EAAKD,EACLA,EAAK,EACLyB,GAAWD,EACXA,EAAU,GAIZxuC,EAAQtI,MAAMg3C,QAAUpvC,KAAK2D,IAAI3D,KAAK4mC,MAAM7mC,IAAaqJ,EAAOhS,OAC5DiI,EAAOkuB,cACT0gB,EAAmBvtC,EAASX,GAE9B,MAAM9D,EAAY,eAAeyxC,QAASC,qBAAsBsB,EAAUE,kBAAwBF,EAAUC,SAC3FzhB,GAAapuB,EAAQqB,GAC7BtI,MAAM6D,UAAYA,CAC7B,GAqBAoU,cAnBoBjR,IACpB,MAAM0uB,EAAoBjvB,EAAOuK,OAAOjN,KAAIuE,GAAWD,EAAoBC,KAC3EotB,EAAkB52B,SAAQsE,IACxBA,EAAGpD,MAAM8sB,mBAAqB,GAAG9lB,MACjC5D,EAAG3D,iBAAiB,gHAAgHX,SAAQs2B,IAC1IA,EAASp1B,MAAM8sB,mBAAqB,GAAG9lB,KAAY,GACnD,IAEJyuB,GAA2B,CACzBhvB,SACAO,WACA0uB,qBACA,EAQFZ,gBAnEsB,KAEtBruB,EAAOQ,OAAO0vC,WACdlwC,EAAOuK,OAAOlS,SAAQwJ,IACpB,IAAIX,EAAWW,EAAQX,SACnBlB,EAAOQ,OAAO0vC,WAAWC,gBAC3BjvC,EAAWC,KAAKC,IAAID,KAAKE,IAAIQ,EAAQX,SAAU,IAAK,IAEtDkuC,EAAmBvtC,EAASX,EAAS,GACrC,EA2DFotB,gBAAiB,IAAMtuB,EAAOQ,OAAO0vC,WACrC9hB,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBvjB,cAAe,EACf0E,eAAgB,EAChByB,qBAAqB,EACrBpD,aAAc,EACd8I,kBAAmBzW,EAAOQ,OAAO4N,WAGvC,EAEA,SAAyBrO,GACvB,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,GACE7H,EACJkqB,EAAa,CACXumB,gBAAiB,CACfnS,OAAQ,GACRoS,QAAS,EACTC,MAAO,IACP5U,MAAO,EACP6U,SAAU,EACVjiB,cAAc,KAwElBR,GAAW,CACT1e,OAAQ,YACRxP,SACA4H,KACA+O,aAzEmB,KACnB,MACEzQ,MAAOiuB,EACP/tB,OAAQguB,EAAY7pB,OACpBA,EAAM6C,gBACNA,GACEpN,EACEQ,EAASR,EAAOQ,OAAOgwC,gBACvBzkC,EAAe/L,EAAO+L,eACtB3O,EAAY4C,EAAOI,UACnBwwC,EAAS7kC,EAA4BooB,EAAc,EAA1B/2B,EAA2Cg3B,EAAe,EAA3Bh3B,EACxDihC,EAAStyB,EAAevL,EAAO69B,QAAU79B,EAAO69B,OAChDj+B,EAAYI,EAAOkwC,MACnBnB,EAAI3qC,EAAa5E,GAEvB,IAAK,IAAIpB,EAAI,EAAGrG,EAASgS,EAAOhS,OAAQqG,EAAIrG,EAAQqG,GAAK,EAAG,CAC1D,MAAMiD,EAAU0I,EAAO3L,GACjB0P,EAAYlB,EAAgBxO,GAE5BiyC,GAAgBD,EADF/uC,EAAQmQ,kBACiB1D,EAAY,GAAKA,EACxDwiC,EAA8C,mBAApBtwC,EAAOmwC,SAA0BnwC,EAAOmwC,SAASE,GAAgBA,EAAerwC,EAAOmwC,SACvH,IAAIN,EAAUtkC,EAAesyB,EAASyS,EAAmB,EACrDR,EAAUvkC,EAAe,EAAIsyB,EAASyS,EAEtCC,GAAc3wC,EAAYe,KAAK2D,IAAIgsC,GACnCL,EAAUjwC,EAAOiwC,QAEE,iBAAZA,IAAkD,IAA1BA,EAAQvxC,QAAQ,OACjDuxC,EAAUzyC,WAAWwC,EAAOiwC,SAAW,IAAMniC,GAE/C,IAAI6zB,EAAap2B,EAAe,EAAI0kC,EAAUK,EAC1C5O,EAAan2B,EAAe0kC,EAAUK,EAAmB,EACzDhV,EAAQ,GAAK,EAAIt7B,EAAOs7B,OAAS36B,KAAK2D,IAAIgsC,GAG1C3vC,KAAK2D,IAAIo9B,GAAc,OAAOA,EAAa,GAC3C/gC,KAAK2D,IAAIq9B,GAAc,OAAOA,EAAa,GAC3ChhC,KAAK2D,IAAIisC,GAAc,OAAOA,EAAa,GAC3C5vC,KAAK2D,IAAIurC,GAAW,OAAOA,EAAU,GACrClvC,KAAK2D,IAAIwrC,GAAW,OAAOA,EAAU,GACrCnvC,KAAK2D,IAAIg3B,GAAS,OAAOA,EAAQ,GACrC,MAAMkV,EAAiB,eAAe9O,OAAgBC,OAAgB4O,iBAA0BxB,EAAEe,kBAAwBf,EAAEc,gBAAsBvU,KAIlJ,GAHiBlN,GAAapuB,EAAQqB,GAC7BtI,MAAM6D,UAAY4zC,EAC3BnvC,EAAQtI,MAAMg3C,OAAmD,EAAzCpvC,KAAK2D,IAAI3D,KAAK4mC,MAAM+I,IACxCtwC,EAAOkuB,aAAc,CAEvB,IAAIuiB,EAAiBllC,EAAelK,EAAQ9I,cAAc,6BAA+B8I,EAAQ9I,cAAc,4BAC3Gm4C,EAAgBnlC,EAAelK,EAAQ9I,cAAc,8BAAgC8I,EAAQ9I,cAAc,+BAC1Gk4C,IACHA,EAAiB3hB,GAAa,YAAaztB,EAASkK,EAAe,OAAS,QAEzEmlC,IACHA,EAAgB5hB,GAAa,YAAaztB,EAASkK,EAAe,QAAU,WAE1EklC,IAAgBA,EAAe13C,MAAMwjC,QAAU+T,EAAmB,EAAIA,EAAmB,GACzFI,IAAeA,EAAc33C,MAAMwjC,SAAW+T,EAAmB,GAAKA,EAAmB,EAC/F,CACF,GAgBAt/B,cAdoBjR,IACMP,EAAOuK,OAAOjN,KAAIuE,GAAWD,EAAoBC,KACzDxJ,SAAQsE,IACxBA,EAAGpD,MAAM8sB,mBAAqB,GAAG9lB,MACjC5D,EAAG3D,iBAAiB,gHAAgHX,SAAQs2B,IAC1IA,EAASp1B,MAAM8sB,mBAAqB,GAAG9lB,KAAY,GACnD,GACF,EAQF6tB,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBpd,qBAAqB,KAG3B,EAEA,SAAwBhR,GACtB,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,GACE7H,EACJkqB,EAAa,CACXknB,eAAgB,CACdC,cAAe,EACfC,mBAAmB,EACnBC,mBAAoB,EACpBljB,aAAa,EACbvZ,KAAM,CACJzU,UAAW,CAAC,EAAG,EAAG,GAClBi+B,OAAQ,CAAC,EAAG,EAAG,GACftB,QAAS,EACTjB,MAAO,GAETrnB,KAAM,CACJrU,UAAW,CAAC,EAAG,EAAG,GAClBi+B,OAAQ,CAAC,EAAG,EAAG,GACftB,QAAS,EACTjB,MAAO,MAIb,MAAMyV,EAAoB7oB,GACH,iBAAVA,EAA2BA,EAC/B,GAAGA,MAiGZwF,GAAW,CACT1e,OAAQ,WACRxP,SACA4H,KACA+O,aAnGmB,KACnB,MAAMpM,OACJA,EAAM7J,UACNA,EAAS0M,gBACTA,GACEpN,EACEQ,EAASR,EAAOQ,OAAO2wC,gBAE3BG,mBAAoBr+B,GAClBzS,EACEgxC,EAAmBxxC,EAAOQ,OAAO2N,eACjCiiC,EAAYxrC,EAAa5E,GAC/B,GAAIwxC,EAAkB,CACpB,MAAMC,EAASrkC,EAAgB,GAAK,EAAIpN,EAAOQ,OAAO8M,oBAAsB,EAC5E5M,EAAUnH,MAAM6D,UAAY,yBAAyBq0C,OACvD,CACA,IAAK,IAAI7yC,EAAI,EAAGA,EAAI2L,EAAOhS,OAAQqG,GAAK,EAAG,CACzC,MAAMiD,EAAU0I,EAAO3L,GACjB0T,EAAgBzQ,EAAQX,SACxBA,EAAWC,KAAKE,IAAIF,KAAKC,IAAIS,EAAQX,UAAWV,EAAO4wC,eAAgB5wC,EAAO4wC,eACpF,IAAIr+B,EAAmB7R,EAClBswC,IACHz+B,EAAmB5R,KAAKE,IAAIF,KAAKC,IAAIS,EAAQkR,kBAAmBvS,EAAO4wC,eAAgB5wC,EAAO4wC,gBAEhG,MAAMvf,EAAShwB,EAAQmQ,kBACjBuG,EAAI,CAACvY,EAAOQ,OAAO4N,SAAWyjB,EAAS7xB,EAAOI,WAAayxB,EAAQ,EAAG,GACtE0d,EAAI,CAAC,EAAG,EAAG,GACjB,IAAImC,GAAS,EACR1xC,EAAO+L,iBACVwM,EAAE,GAAKA,EAAE,GACTA,EAAE,GAAK,GAET,IAAInP,EAAO,CACThJ,UAAW,CAAC,EAAG,EAAG,GAClBi+B,OAAQ,CAAC,EAAG,EAAG,GACfvC,MAAO,EACPiB,QAAS,GAEP77B,EAAW,GACbkI,EAAO5I,EAAOiU,KACdi9B,GAAS,GACAxwC,EAAW,IACpBkI,EAAO5I,EAAOqU,KACd68B,GAAS,GAGXn5B,EAAElgB,SAAQ,CAACqwB,EAAO1f,KAChBuP,EAAEvP,GAAS,QAAQ0f,UAAc6oB,EAAkBnoC,EAAKhJ,UAAU4I,SAAa7H,KAAK2D,IAAI5D,EAAW+R,MAAe,IAGpHs8B,EAAEl3C,SAAQ,CAACqwB,EAAO1f,KAChB,IAAI2Q,EAAMvQ,EAAKi1B,OAAOr1B,GAAS7H,KAAK2D,IAAI5D,EAAW+R,GACnDs8B,EAAEvmC,GAAS2Q,CAAG,IAEhB9X,EAAQtI,MAAMg3C,QAAUpvC,KAAK2D,IAAI3D,KAAK4mC,MAAMz1B,IAAkB/H,EAAOhS,OACrE,MAAMo5C,EAAkBp5B,EAAE9a,KAAK,MACzBm0C,EAAe,WAAWxB,EAAUb,EAAE,mBAAmBa,EAAUb,EAAE,mBAAmBa,EAAUb,EAAE,UACpGsC,EAAc9+B,EAAmB,EAAI,SAAS,GAAK,EAAI3J,EAAK0yB,OAAS/oB,EAAmBE,KAAgB,SAAS,GAAK,EAAI7J,EAAK0yB,OAAS/oB,EAAmBE,KAC3J6+B,EAAgB/+B,EAAmB,EAAI,GAAK,EAAI3J,EAAK2zB,SAAWhqB,EAAmBE,EAAa,GAAK,EAAI7J,EAAK2zB,SAAWhqB,EAAmBE,EAC5I7V,EAAY,eAAeu0C,MAAoBC,KAAgBC,IAGrE,GAAIH,GAAUtoC,EAAK6lC,SAAWyC,EAAQ,CACpC,IAAI/iB,EAAW9sB,EAAQ9I,cAAc,wBAIrC,IAHK41B,GAAYvlB,EAAK6lC,SACpBtgB,EAAWW,GAAa,WAAYztB,IAElC8sB,EAAU,CACZ,MAAMojB,EAAgBvxC,EAAO6wC,kBAAoBnwC,GAAY,EAAIV,EAAO4wC,eAAiBlwC,EACzFytB,EAASp1B,MAAMwjC,QAAU57B,KAAKE,IAAIF,KAAKC,IAAID,KAAK2D,IAAIitC,GAAgB,GAAI,EAC1E,CACF,CACA,MAAMn0B,EAAWgR,GAAapuB,EAAQqB,GACtC+b,EAASrkB,MAAM6D,UAAYA,EAC3BwgB,EAASrkB,MAAMwjC,QAAU+U,EACrB1oC,EAAKnP,SACP2jB,EAASrkB,MAAMq2C,gBAAkBxmC,EAAKnP,OAE1C,GAsBAuX,cApBoBjR,IACpB,MAAM0uB,EAAoBjvB,EAAOuK,OAAOjN,KAAIuE,GAAWD,EAAoBC,KAC3EotB,EAAkB52B,SAAQsE,IACxBA,EAAGpD,MAAM8sB,mBAAqB,GAAG9lB,MACjC5D,EAAG3D,iBAAiB,wBAAwBX,SAAQs2B,IAClDA,EAASp1B,MAAM8sB,mBAAqB,GAAG9lB,KAAY,GACnD,IAEJyuB,GAA2B,CACzBhvB,SACAO,WACA0uB,oBACAC,WAAW,GACX,EAQFd,YAAa,IAAMpuB,EAAOQ,OAAO2wC,eAAe/iB,YAChDD,gBAAiB,KAAM,CACrBpd,qBAAqB,EACrB0F,kBAAmBzW,EAAOQ,OAAO4N,WAGvC,EAEA,SAAqBrO,GACnB,IAAIC,OACFA,EAAMiqB,aACNA,EAAYriB,GACZA,GACE7H,EACJkqB,EAAa,CACX+nB,YAAa,CACXtjB,cAAc,EACd2P,QAAQ,EACR4T,eAAgB,EAChBC,eAAgB,KA6FpBhkB,GAAW,CACT1e,OAAQ,QACRxP,SACA4H,KACA+O,aA9FmB,KACnB,MAAMpM,OACJA,EAAMQ,YACNA,EACA2B,aAAcC,GACZ3M,EACEQ,EAASR,EAAOQ,OAAOwxC,aACvB71B,eACJA,EAAc+B,UACdA,GACEle,EAAOkc,gBACLxF,EAAmB/J,GAAO3M,EAAOI,UAAYJ,EAAOI,UAC1D,IAAK,IAAIxB,EAAI,EAAGA,EAAI2L,EAAOhS,OAAQqG,GAAK,EAAG,CACzC,MAAMiD,EAAU0I,EAAO3L,GACjB0T,EAAgBzQ,EAAQX,SACxBA,EAAWC,KAAKE,IAAIF,KAAKC,IAAIkR,GAAgB,GAAI,GACvD,IAAIuf,EAAShwB,EAAQmQ,kBACjBhS,EAAOQ,OAAO2N,iBAAmBnO,EAAOQ,OAAO4N,UACjDpO,EAAOU,UAAUnH,MAAM6D,UAAY,cAAc4C,EAAOuS,qBAEtDvS,EAAOQ,OAAO2N,gBAAkBnO,EAAOQ,OAAO4N,UAChDyjB,GAAUtnB,EAAO,GAAGyH,mBAEtB,IAAImgC,EAAKnyC,EAAOQ,OAAO4N,SAAWyjB,EAAS7xB,EAAOI,WAAayxB,EAC3DugB,EAAK,EACT,MAAMC,GAAM,IAAMlxC,KAAK2D,IAAI5D,GAC3B,IAAI46B,EAAQ,EACRuC,GAAU79B,EAAOyxC,eAAiB/wC,EAClCoxC,EAAQ9xC,EAAO0xC,eAAsC,IAArB/wC,KAAK2D,IAAI5D,GAC7C,MAAM+O,EAAajQ,EAAO8M,SAAW9M,EAAOQ,OAAOsM,QAAQC,QAAU/M,EAAO8M,QAAQ1B,KAAOxM,EAAIA,EACzF2zC,GAAiBtiC,IAAelF,GAAekF,IAAelF,EAAc,IAAM7J,EAAW,GAAKA,EAAW,IAAMgd,GAAale,EAAOQ,OAAO4N,UAAYsI,EAAmByF,EAC7Kq2B,GAAiBviC,IAAelF,GAAekF,IAAelF,EAAc,IAAM7J,EAAW,GAAKA,GAAY,IAAMgd,GAAale,EAAOQ,OAAO4N,UAAYsI,EAAmByF,EACpL,GAAIo2B,GAAiBC,EAAe,CAClC,MAAMC,GAAe,EAAItxC,KAAK2D,KAAK3D,KAAK2D,IAAI5D,GAAY,IAAO,MAAS,GACxEm9B,IAAW,GAAKn9B,EAAWuxC,EAC3B3W,IAAU,GAAM2W,EAChBH,GAAS,GAAKG,EACdL,GAAS,GAAKK,EAActxC,KAAK2D,IAAI5D,GAAhC,GACP,CAUA,GAPEixC,EAFEjxC,EAAW,EAER,QAAQixC,OAAQxlC,EAAM,IAAM,QAAQ2lC,EAAQnxC,KAAK2D,IAAI5D,QACjDA,EAAW,EAEf,QAAQixC,OAAQxlC,EAAM,IAAM,SAAS2lC,EAAQnxC,KAAK2D,IAAI5D,QAEtD,GAAGixC,OAELnyC,EAAO+L,eAAgB,CAC1B,MAAM2mC,EAAQN,EACdA,EAAKD,EACLA,EAAKO,CACP,CACA,MAAMb,EAAc3wC,EAAW,EAAI,IAAG,GAAK,EAAI46B,GAAS56B,GAAa,IAAG,GAAK,EAAI46B,GAAS56B,GAGpF9D,EAAY,yBACJ+0C,MAAOC,MAAOC,yBAClB7xC,EAAO69B,OAAS1xB,GAAO0xB,EAASA,EAAS,wBAC3CwT,aAIR,GAAIrxC,EAAOkuB,aAAc,CAEvB,IAAIC,EAAW9sB,EAAQ9I,cAAc,wBAChC41B,IACHA,EAAWW,GAAa,QAASztB,IAE/B8sB,IAAUA,EAASp1B,MAAMwjC,QAAU57B,KAAKE,IAAIF,KAAKC,KAAKD,KAAK2D,IAAI5D,GAAY,IAAO,GAAK,GAAI,GACjG,CACAW,EAAQtI,MAAMg3C,QAAUpvC,KAAK2D,IAAI3D,KAAK4mC,MAAMz1B,IAAkB/H,EAAOhS,OACpDq2B,GAAapuB,EAAQqB,GAC7BtI,MAAM6D,UAAYA,CAC7B,GAqBAoU,cAnBoBjR,IACpB,MAAM0uB,EAAoBjvB,EAAOuK,OAAOjN,KAAIuE,GAAWD,EAAoBC,KAC3EotB,EAAkB52B,SAAQsE,IACxBA,EAAGpD,MAAM8sB,mBAAqB,GAAG9lB,MACjC5D,EAAG3D,iBAAiB,wBAAwBX,SAAQs2B,IAClDA,EAASp1B,MAAM8sB,mBAAqB,GAAG9lB,KAAY,GACnD,IAEJyuB,GAA2B,CACzBhvB,SACAO,WACA0uB,qBACA,EAQFb,YAAa,KAAM,EACnBD,gBAAiB,KAAM,CACrBpd,qBAAqB,EACrB0F,kBAAmBzW,EAAOQ,OAAO4N,WAGvC,GAiBAub,GAAOiD,IAAI9C,IAGX,MAAM6oB,GAAa,CAAC,eAAgB,eAAgB,mBAAoB,UAAW,OAAQ,aAAc,iBAAkB,wBAAyB,oBAAqB,eAAgB,SAAU,UAAW,uBAAwB,iBAAkB,SAAU,oBAAqB,WAAY,SAAU,UAAW,iCAAkC,YAAa,MAAO,sBAAuB,sBAAuB,YAAa,cAAe,iBAAkB,mBAAoB,UAAW,cAAe,kBAAmB,gBAAiB,iBAAkB,0BAA2B,QAAS,kBAAmB,sBAAuB,sBAAuB,kBAAmB,wBAAyB,sBAAuB,qBAAsB,sBAAuB,4BAA6B,iBAAkB,eAAgB,aAAc,aAAc,gBAAiB,eAAgB,cAAe,kBAAmB,eAAgB,gBAAiB,iBAAkB,aAAc,2BAA4B,2BAA4B,gCAAiC,sBAAuB,oBAAqB,cAAe,mBAAoB,uBAAwB,cAAe,gBAAiB,2BAA4B,uBAAwB,QAAS,uBAAwB,qBAAsB,sBAAuB,UAAW,kBAAmB,kBAAmB,gBAAiB,aAAc,iBAAkB,oBAAqB,mBAAoB,yBAA0B,aAAc,mBAAoB,oBAAqB,yBAA0B,iBAAkB,iBAAkB,kBAAmB,eAAgB,qBAAsB,sBAAuB,qBAAsB,WAAY,iBAAkB,uBAEluD,OAAQ,YAAa,cAAe,kBAAmB,aAAc,aAAc,aAAc,iBAAkB,cAAe,iBAAkB,UAAW,WAAY,aAAc,cAAe,cAAe,WAAY,aAAc,UAAW,UAAW,OAAQ,WAE/Q,SAASC,GAASz0C,GAChB,MAAoB,iBAANA,GAAwB,OAANA,GAAcA,EAAEpG,aAAkE,WAAnDC,OAAOoG,UAAUN,SAASO,KAAKF,GAAGG,MAAM,GAAI,KAAoBH,EAAEsB,UACnI,CACA,SAASozC,GAAO36C,EAAQC,GACtB,MAAMwG,EAAW,CAAC,YAAa,cAAe,aAC9C3G,OAAOI,KAAKD,GAAKkE,QAAO/D,GAAOqG,EAASO,QAAQ5G,GAAO,IAAGD,SAAQC,SACrC,IAAhBJ,EAAOI,GAAsBJ,EAAOI,GAAOH,EAAIG,GAAcs6C,GAASz6C,EAAIG,KAASs6C,GAAS16C,EAAOI,KAASN,OAAOI,KAAKD,EAAIG,IAAMC,OAAS,EAChJJ,EAAIG,GAAKmH,WAAYvH,EAAOI,GAAOH,EAAIG,GAAUu6C,GAAO36C,EAAOI,GAAMH,EAAIG,IAE7EJ,EAAOI,GAAOH,EAAIG,EACpB,GAEJ,CAmBA,SAASw6C,GAAWC,GAIlB,YAHiB,IAAbA,IACFA,EAAW,IAENA,EAASv1C,QAAQ,WAAWw1C,GAAKA,EAAElnB,cAActuB,QAAQ,IAAK,KACvE,CA+KA,MAAMy1C,GAAct5B,IAClB,GAAI3b,WAAW2b,KAASrS,OAAOqS,GAAM,OAAOrS,OAAOqS,GACnD,GAAY,SAARA,EAAgB,OAAO,EAC3B,GAAY,KAARA,EAAY,OAAO,EACvB,GAAY,UAARA,EAAiB,OAAO,EAC5B,GAAY,SAARA,EAAgB,OAAO,KAC3B,GAAY,cAARA,EAAJ,CACA,GAAmB,iBAARA,GAAoBA,EAAIzS,SAAS,MAAQyS,EAAIzS,SAAS,MAAQyS,EAAIzS,SAAS,KAAM,CAC1F,IAAIrC,EACJ,IACEA,EAAIquC,KAAKC,MAAMx5B,EACjB,CAAE,MAAOjX,GACPmC,EAAI8U,CACN,CACA,OAAO9U,CACT,CACA,OAAO8U,CAVkC,CAU/B,EAENy5B,GAAoB,CAAC,OAAQ,WAAY,aAAc,eAAgB,mBAAoB,kBAAmB,cAAe,cAAe,cAAe,YAAa,OAAQ,kBAAmB,UAAW,WAAY,aAAc,aAAc,aAAc,WAAY,YAAa,SAAU,UAAW,QACxT,SAASC,GAAUrxC,EAASsxC,EAAUC,GACpC,MAAM/yC,EAAS,CAAC,EACV2pB,EAAe,CAAC,EACtB0oB,GAAOryC,EAAQ0kB,IACf,MAAMsuB,EAAkB,IAAIb,GAAY,MAClCc,EAAgBD,EAAgBl2C,KAAIhF,GAAOA,EAAIkF,QAAQ,IAAK,MAGlEg2C,EAAgBn7C,SAAQq7C,IACtBA,EAAYA,EAAUl2C,QAAQ,IAAK,SACD,IAAvBwE,EAAQ0xC,KACjBvpB,EAAaupB,GAAa1xC,EAAQ0xC,GACpC,IAIF,MAAMC,EAAY,IAAI3xC,EAAQ+uB,YA6D9B,MA5DwB,iBAAbuiB,QAA8C,IAAdC,GACzCI,EAAUxxC,KAAK,CACbyxC,KAAMN,EACN5qB,MAAOkqB,GAASW,GAAa,IACxBA,GACDA,IAGRI,EAAUt7C,SAAQw7C,IAChB,MAAMC,EAAcV,GAAkB/2C,QAAO03C,GAA8C,IAApCF,EAAKD,KAAK10C,QAAQ,GAAG60C,QAAkB,GAC9F,GAAID,EAAa,CACf,MAAME,EAAgBlB,GAAWgB,GAC3BG,EAAanB,GAAWe,EAAKD,KAAKx3C,MAAM,GAAG03C,MAAgB,SACtB,IAAhC3pB,EAAa6pB,KAAgC7pB,EAAa6pB,GAAiB,CAAC,IACnD,IAAhC7pB,EAAa6pB,KACf7pB,EAAa6pB,GAAiB,CAC5BjnC,SAAS,IAGbod,EAAa6pB,GAAeC,GAAchB,GAAYY,EAAKnrB,MAC7D,KAAO,CACL,MAAMkrB,EAAOd,GAAWe,EAAKD,MAC7B,IAAKH,EAAcvsC,SAAS0sC,GAAO,OACnC,MAAMlrB,EAAQuqB,GAAYY,EAAKnrB,OAC3ByB,EAAaypB,IAASR,GAAkBlsC,SAAS2sC,EAAKD,QAAUhB,GAASlqB,IACvEyB,EAAaypB,GAAM77C,cAAgBC,SACrCmyB,EAAaypB,GAAQ,CAAC,GAExBzpB,EAAaypB,GAAM7mC,UAAY2b,GAE/ByB,EAAaypB,GAAQlrB,CAEzB,KAEFmqB,GAAOryC,EAAQ2pB,GACX3pB,EAAOgjB,WACThjB,EAAOgjB,WAAa,CAClBE,OAAQ,sBACRD,OAAQ,0BACkB,IAAtBjjB,EAAOgjB,WAAsBhjB,EAAOgjB,WAAa,CAAC,IAEzB,IAAtBhjB,EAAOgjB,mBACThjB,EAAOgjB,WAEZhjB,EAAOk8B,UACTl8B,EAAOk8B,UAAY,CACjB//B,GAAI,wBACqB,IAArB6D,EAAOk8B,UAAqBl8B,EAAOk8B,UAAY,CAAC,IAExB,IAArBl8B,EAAOk8B,kBACTl8B,EAAOk8B,UAEZl8B,EAAOm4B,WACTn4B,EAAOm4B,WAAa,CAClBh8B,GAAI,yBACsB,IAAtB6D,EAAOm4B,WAAsBn4B,EAAOm4B,WAAa,CAAC,IAEzB,IAAtBn4B,EAAOm4B,mBACTn4B,EAAOm4B,WAET,CACLn4B,SACA2pB,eAEJ,CAiBA,MAAM+pB,GAAY,+maAIlB,MAAMC,GAAkC,oBAAXn4C,QAAiD,oBAAhB+C,YAD9D,QAC+GA,YACzGq1C,GAAW,udAEXC,GAAW,CAACvyC,EAAYwyC,KAC5B,GAA6B,oBAAlBC,eAAiCzyC,EAAW0yC,mBAAoB,CACzE,MAAMC,EAAa,IAAIF,cACvBE,EAAWC,YAAYJ,GACvBxyC,EAAW0yC,mBAAqB,CAACC,EACnC,KAAO,CACL,MAAMl7C,EAAQgB,SAASnB,cAAc,SACrCG,EAAMo7C,IAAM,aACZp7C,EAAMoiC,YAAc2Y,EACpBxyC,EAAW8yC,YAAYr7C,EACzB,GAEF,MAAMs7C,WAAwBV,GAC5B,WAAAp8C,GACE+8C,QACA75C,KAAK85C,aAAa,CAChBC,KAAM,QAEV,CACA,wBAAWC,GACT,OAAOb,EACT,CACA,wBAAWc,GACT,OAAOd,GAAS52C,QAAQ,WAAY,6DACtC,CACA,SAAA23C,GACE,MAAO,CAACjB,MAEJj5C,KAAKm6C,cAAgBtyC,MAAMC,QAAQ9H,KAAKm6C,cAAgBn6C,KAAKm6C,aAAe,IAAK33C,KAAK,KAC5F,CACA,QAAA43C,GACE,OAAOp6C,KAAKq6C,kBAAoB,EAClC,CACA,cAAAC,GACE,MAAMC,EAAmBv6C,KAAKgxB,YAAc,EAEtCwpB,EAAoB,IAAIx6C,KAAKjC,iBAAiB,mBAAmBsE,KAAIwG,GAClEmI,SAASnI,EAAMiS,aAAa,QAAQ3Z,MAAM,UAAU,GAAI,MAGjE,GADAnB,KAAKgxB,WAAawpB,EAAkBl9C,OAAS4I,KAAKC,OAAOq0C,GAAqB,EAAI,EAC7Ex6C,KAAKy6C,SACV,GAAIz6C,KAAKgxB,WAAaupB,EACpB,IAAK,IAAI52C,EAAI42C,EAAkB52C,EAAI3D,KAAKgxB,WAAYrtB,GAAK,EAAG,CAC1D,MAAMiD,EAAUtH,SAASnB,cAAc,gBACvCyI,EAAQrI,aAAa,OAAQ,eAAeoF,EAAI,KAChD,MAAM+2C,EAASp7C,SAASnB,cAAc,QACtCu8C,EAAOn8C,aAAa,OAAQ,SAASoF,EAAI,KACzCiD,EAAQ+yC,YAAYe,GACpB16C,KAAK6G,WAAW/I,cAAc,mBAAmB67C,YAAY/yC,EAC/D,MACK,GAAI5G,KAAKgxB,WAAaupB,EAAkB,CAC7C,MAAMjrC,EAAStP,KAAK+E,OAAOuK,OAC3B,IAAK,IAAI3L,EAAI2L,EAAOhS,OAAS,EAAGqG,GAAK,EAAGA,GAAK,EACvCA,EAAI3D,KAAKgxB,YACX1hB,EAAO3L,GAAGiL,QAGhB,CACF,CACA,MAAAqyB,GACE,GAAIjhC,KAAKy6C,SAAU,OACnBz6C,KAAKs6C,iBAGL,IAAIK,EAAc36C,KAAKk6C,YACnBl6C,KAAKgxB,WAAa,IACpB2pB,EAAcA,EAAYp4C,QAAQ,8BAA+B,OAE/Do4C,EAAYr9C,QACd87C,GAASp5C,KAAK6G,WAAY8zC,GAE5B36C,KAAKo6C,WAAWh9C,SAAQmtB,IAEtB,GADmBvqB,KAAK6G,WAAW/I,cAAc,cAAcysB,OAC/C,OAChB,MAAMqwB,EAASt7C,SAASnB,cAAc,QACtCy8C,EAAOlB,IAAM,aACbkB,EAAO77C,KAAOwrB,EACdvqB,KAAK6G,WAAW8yC,YAAYiB,EAAO,IAGrC,MAAMl5C,EAAKpC,SAASnB,cAAc,OAlZtC,IAAyBoH,EAmZrB7D,EAAGiG,UAAUC,IAAI,UACjBlG,EAAGksC,KAAO,YAGVlsC,EAAG0wB,UAAY,mIAIXvqB,MAAMsI,KAAK,CACf7S,OAAQ0C,KAAKgxB,aACZ3uB,KAAI,CAAC+N,EAAGrC,IAAU,6CACiBA,oCACZA,kDAEnBvL,KAAK,sEAjaW+C,EAoaHvF,KAAKkvB,kBAnaV,IAAX3pB,IACFA,EAAS,CAAC,GAELA,EAAOgjB,iBAAkD,IAA7BhjB,EAAOgjB,WAAWC,aAA8D,IAA7BjjB,EAAOgjB,WAAWE,OAga/D,gEACgBzoB,KAAKlD,YAAYm9C,mFACjBj6C,KAAKlD,YAAYk9C,8BACpE,aAjaR,SAAyBz0C,GAIvB,YAHe,IAAXA,IACFA,EAAS,CAAC,GAELA,EAAOm4B,iBAA8C,IAAzBn4B,EAAOm4B,WAAWh8B,EACvD,CA6ZMm5C,CAAgB76C,KAAKkvB,cAAgB,4EAEnC,aA9ZR,SAAwB3pB,GAItB,YAHe,IAAXA,IACFA,EAAS,CAAC,GAELA,EAAOk8B,gBAA4C,IAAxBl8B,EAAOk8B,UAAU//B,EACrD,CA0ZMo5C,CAAe96C,KAAKkvB,cAAgB,0EAElC,WAEJlvB,KAAK6G,WAAW8yC,YAAYj4C,GAC5B1B,KAAKy6C,UAAW,CAClB,CACA,UAAAM,GACE,IAAIC,EAAQh7C,KACZ,GAAIA,KAAK+a,YAAa,OACtB/a,KAAK+a,aAAc,EACnB,MACExV,OAAQ0pB,EAAYC,aACpBA,GACEkpB,GAAUp4C,MACdA,KAAKivB,aAAeA,EACpBjvB,KAAKkvB,aAAeA,SACblvB,KAAKivB,aAAa/E,KACzBlqB,KAAKihC,SAGLjhC,KAAK+E,OAAS,IAAI2pB,GAAO1uB,KAAK6G,WAAW/I,cAAc,WAAY,IAC7DmxB,EAAapd,QAAU,CAAC,EAAI,CAC9BwgB,UAAU,MAETpD,EACHrM,kBAAmB,YACnBhV,MAAO,SAAU+qC,GACF,mBAATA,GACFqC,EAAMV,iBAER,MAAMnrB,EAAYF,EAAa3E,aAAe,GAAG2E,EAAa3E,eAAequB,EAAK5sC,gBAAkB4sC,EAAK5sC,cACzG,IAAK,IAAIyB,EAAOhK,UAAUlG,OAAQmQ,EAAO,IAAI5F,MAAM2F,EAAO,EAAIA,EAAO,EAAI,GAAIE,EAAO,EAAGA,EAAOF,EAAME,IAClGD,EAAKC,EAAO,GAAKlK,UAAUkK,GAE7B,MAAMP,EAAQ,IAAIpN,YAAYovB,EAAW,CACvCtI,OAAQpZ,EACRmZ,QAAkB,eAAT+xB,EACT3yB,YAAY,IAEdg1B,EAAMj0B,cAAc5Z,EACtB,GAEJ,CACA,iBAAA8tC,GACMj7C,KAAK+a,aAAe/a,KAAKkmB,QAAUlmB,KAAKgP,QAAQ,iBAAmBhP,KAAKgP,QAAQ,gBAAgB6R,oBAGlF,IAAd7gB,KAAKkqB,MAAgD,UAA9BlqB,KAAK8a,aAAa,SAG7C9a,KAAK+6C,YACP,CACA,oBAAAG,GACMl7C,KAAKkmB,QAAUlmB,KAAKgP,QAAQ,iBAAmBhP,KAAKgP,QAAQ,gBAAgB6R,oBAG5E7gB,KAAK+E,QAAU/E,KAAK+E,OAAOosB,SAC7BnxB,KAAK+E,OAAOosB,UAEdnxB,KAAK+a,aAAc,EACrB,CACA,wBAAAogC,CAAyB9C,EAAUC,GACjC,MACE/yC,OAAQ0pB,EAAYC,aACpBA,GACEkpB,GAAUp4C,KAAMq4C,EAAUC,GAC9Bt4C,KAAKkvB,aAAeA,EACpBlvB,KAAKivB,aAAeA,EAChBjvB,KAAK+E,QAAU/E,KAAK+E,OAAOQ,OAAO8yC,KAAcC,GAvdxD,SAAsBxzC,GACpB,IAAIC,OACFA,EAAMuK,OACNA,EAAM4f,aACNA,EAAYksB,cACZA,EAAa5yB,OACbA,EAAMC,OACNA,EAAM4yB,YACNA,EAAWC,aACXA,GACEx2C,EACJ,MAAMy2C,EAAeH,EAAch6C,QAAO/D,GAAe,aAARA,GAA8B,cAARA,GAA+B,iBAARA,KAE5FkI,OAAQi2C,EAAa9d,WACrBA,EAAUnV,WACVA,EAAUkZ,UACVA,EAAS5vB,QACTA,EAAO0+B,OACPA,GACExrC,EACJ,IAAI02C,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAZ,EAAcnvC,SAAS,WAAaijB,EAAaqhB,QAAUrhB,EAAaqhB,OAAOxrC,QAAUy2C,EAAcjL,SAAWiL,EAAcjL,OAAOxrC,SACzI02C,GAAiB,GAEfL,EAAcnvC,SAAS,eAAiBijB,EAAa9N,YAAc8N,EAAa9N,WAAWC,SAAWm6B,EAAcp6B,aAAeo6B,EAAcp6B,WAAWC,UAC9Jq6B,GAAqB,GAEnBN,EAAcnvC,SAAS,eAAiBijB,EAAawO,aAAexO,EAAawO,WAAWh8B,IAAM45C,KAAkBE,EAAc9d,aAA2C,IAA7B8d,EAAc9d,aAAyBA,IAAeA,EAAWh8B,KACnNi6C,GAAqB,GAEnBP,EAAcnvC,SAAS,cAAgBijB,EAAauS,YAAcvS,EAAauS,UAAU//B,IAAM25C,KAAiBG,EAAc/Z,YAAyC,IAA5B+Z,EAAc/Z,YAAwBA,IAAcA,EAAU//B,KAC3Mk6C,GAAoB,GAElBR,EAAcnvC,SAAS,eAAiBijB,EAAa3G,aAAe2G,EAAa3G,WAAWE,QAAUA,KAAYyG,EAAa3G,WAAWC,QAAUA,KAAYgzB,EAAcjzB,aAA2C,IAA7BizB,EAAcjzB,aAAyBA,IAAeA,EAAWE,SAAWF,EAAWC,SACrRqzB,GAAqB,GAEvB,MAAMI,EAAgBltB,IACfhqB,EAAOgqB,KACZhqB,EAAOgqB,GAAKoC,UACA,eAARpC,GACEhqB,EAAOkK,YACTlK,EAAOgqB,GAAKtG,OAAO7Z,SACnB7J,EAAOgqB,GAAKvG,OAAO5Z,UAErB4sC,EAAczsB,GAAKtG,YAAShlB,EAC5B+3C,EAAczsB,GAAKvG,YAAS/kB,EAC5BsB,EAAOgqB,GAAKtG,YAAShlB,EACrBsB,EAAOgqB,GAAKvG,YAAS/kB,IAEjBsB,EAAOkK,WACTlK,EAAOgqB,GAAKrtB,GAAGkN,SAEjB4sC,EAAczsB,GAAKrtB,QAAK+B,EACxBsB,EAAOgqB,GAAKrtB,QAAK+B,GACnB,EAEE23C,EAAcnvC,SAAS,SAAWlH,EAAOkK,YACvCusC,EAAchrC,OAAS0e,EAAa1e,KACtCsrC,GAAkB,GACRN,EAAchrC,MAAQ0e,EAAa1e,KAC7CurC,GAAiB,EAEjBC,GAAiB,GAGrBT,EAAan+C,SAAQC,IACnB,GAAIs6C,GAAS6D,EAAcn+C,KAASs6C,GAASzoB,EAAa7xB,IACxDN,OAAOmU,OAAOsqC,EAAcn+C,GAAM6xB,EAAa7xB,IAClC,eAARA,GAAgC,eAARA,GAAgC,cAARA,KAAwB,YAAa6xB,EAAa7xB,KAAS6xB,EAAa7xB,GAAKyU,SAChImqC,EAAc5+C,OAEX,CACL,MAAM6+C,EAAWhtB,EAAa7xB,IACZ,IAAb6+C,IAAkC,IAAbA,GAAgC,eAAR7+C,GAAgC,eAARA,GAAgC,cAARA,EAKhGm+C,EAAcn+C,GAAO6xB,EAAa7xB,IAJjB,IAAb6+C,GACFD,EAAc5+C,EAKpB,KAEEk+C,EAAatvC,SAAS,gBAAkByvC,GAAsB32C,EAAOqc,YAAcrc,EAAOqc,WAAWC,SAAWm6B,EAAcp6B,YAAco6B,EAAcp6B,WAAWC,UACvKtc,EAAOqc,WAAWC,QAAUm6B,EAAcp6B,WAAWC,SAEnD+5B,EAAcnvC,SAAS,aAAeqD,GAAUuC,GAAW2pC,EAAc3pC,QAAQC,SACnFD,EAAQvC,OAASA,EACjBuC,EAAQnB,QAAO,IACN0qC,EAAcnvC,SAAS,YAAc4F,GAAW2pC,EAAc3pC,QAAQC,UAC3ExC,IAAQuC,EAAQvC,OAASA,GAC7BuC,EAAQnB,QAAO,IAEb0qC,EAAcnvC,SAAS,aAAeqD,GAAUksC,EAAchrC,OAChEwrC,GAAiB,GAEfP,GACkBlL,EAAOrmB,QACVqmB,EAAO7/B,QAAO,GAE7BgrC,IACF32C,EAAOqc,WAAWC,QAAUm6B,EAAcp6B,WAAWC,SAEnDs6B,KACE52C,EAAOkK,WAAeqsC,GAAwC,iBAAjBA,IAC/CA,EAAeh8C,SAASnB,cAAc,OACtCm9C,EAAa3zC,UAAUC,IAAI,qBAC3B0zC,EAAa1N,KAAKhmC,IAAI,cACtB7C,EAAOrD,GAAGi4C,YAAY2B,IAEpBA,IAAcE,EAAc9d,WAAWh8B,GAAK45C,GAChD5d,EAAWxT,OACXwT,EAAWuD,SACXvD,EAAWhtB,UAETkrC,KACE72C,EAAOkK,WAAeosC,GAAsC,iBAAhBA,IAC9CA,EAAc/7C,SAASnB,cAAc,OACrCk9C,EAAY1zC,UAAUC,IAAI,oBAC1ByzC,EAAYzN,KAAKhmC,IAAI,aACrB7C,EAAOrD,GAAGi4C,YAAY0B,IAEpBA,IAAaG,EAAc/Z,UAAU//B,GAAK25C,GAC9C5Z,EAAUvX,OACVuX,EAAU9wB,aACV8wB,EAAU/lB,gBAERmgC,IACE92C,EAAOkK,YACJuZ,GAA4B,iBAAXA,IACpBA,EAASlpB,SAASnB,cAAc,OAChCqqB,EAAO7gB,UAAUC,IAAI,sBACrB4gB,EAAO4J,UAAYrtB,EAAOksB,OAAOn0B,YAAYk9C,cAC7CxxB,EAAOolB,KAAKhmC,IAAI,eAChB7C,EAAOrD,GAAGi4C,YAAYnxB,IAEnBC,GAA4B,iBAAXA,IACpBA,EAASnpB,SAASnB,cAAc,OAChCsqB,EAAO9gB,UAAUC,IAAI,sBACrB6gB,EAAO2J,UAAYrtB,EAAOksB,OAAOn0B,YAAYm9C,cAC7CxxB,EAAOmlB,KAAKhmC,IAAI,eAChB7C,EAAOrD,GAAGi4C,YAAYlxB,KAGtBD,IAAQgzB,EAAcjzB,WAAWC,OAASA,GAC1CC,IAAQ+yB,EAAcjzB,WAAWE,OAASA,GAC9CF,EAAW2B,OACX3B,EAAW7X,UAET0qC,EAAcnvC,SAAS,oBACzBlH,EAAOmY,eAAiBgS,EAAahS,gBAEnCk+B,EAAcnvC,SAAS,oBACzBlH,EAAOoY,eAAiB+R,EAAa/R,gBAEnCi+B,EAAcnvC,SAAS,cACzBlH,EAAOgoB,gBAAgBmC,EAAavS,WAAW,IAE7Cm/B,GAAmBE,IACrBj3C,EAAOwc,eAELw6B,GAAkBC,IACpBj3C,EAAOya,aAETza,EAAO2L,QACT,CA+SIyrC,CAAa,CACXp3C,OAAQ/E,KAAK+E,OACbmqB,aAAclvB,KAAKkvB,aACnBksB,cAAe,CAACvD,GAAWQ,OACV,eAAbA,GAA6BnpB,EAAampB,GAAY,CACxD5vB,OAAQ,sBACRD,OAAQ,uBACN,CAAC,KACY,eAAb6vB,GAA6BnpB,EAAampB,GAAY,CACxDiD,aAAc,sBACZ,CAAC,KACY,cAAbjD,GAA4BnpB,EAAampB,GAAY,CACvDgD,YAAa,qBACX,CAAC,GAET,CACA,wBAAAe,CAAyBxD,EAAMyD,EAAWH,GACnCl8C,KAAK+a,cACQ,SAAdshC,GAAqC,OAAbH,IAC1BA,GAAW,GAEbl8C,KAAKm7C,yBAAyBvC,EAAMsD,GACtC,CACA,6BAAWI,GAET,OADc5E,GAAWt2C,QAAOm7C,GAASA,EAAMtwC,SAAS,OAAM5J,KAAIk6C,GAASA,EAAMh6C,QAAQ,UAAUqH,GAAK,IAAIA,MAAKrH,QAAQ,IAAK,IAAIwJ,eAEpI,EAEF2rC,GAAWt6C,SAAQq7C,IACC,SAAdA,IACJA,EAAYA,EAAUl2C,QAAQ,IAAK,IACnCxF,OAAO+qC,eAAe8R,GAAgBz2C,UAAWs1C,EAAW,CAC1D+D,cAAc,EACd,GAAAzU,GACE,OAAQ/nC,KAAKkvB,cAAgB,CAAC,GAAGupB,EACnC,EACA,GAAAzQ,CAAIva,GACGztB,KAAKkvB,eAAclvB,KAAKkvB,aAAe,CAAC,GAC7ClvB,KAAKkvB,aAAaupB,GAAahrB,EAC1BztB,KAAK+a,aACV/a,KAAKm7C,yBAAyB1C,EAAWhrB,EAC3C,IACA,IAEJ,MAAMgvB,WAAoBvD,GACxB,WAAAp8C,GACE+8C,QACA75C,KAAK85C,aAAa,CAChBC,KAAM,QAEV,CACA,MAAA9Y,GACE,MAAMyb,EAAO18C,KAAK08C,MAAsC,KAA9B18C,KAAK8a,aAAa,SAAgD,SAA9B9a,KAAK8a,aAAa,QAGhF,GAFAs+B,GAASp5C,KAAK6G,WA5OK,0lEA6OnB7G,KAAK6G,WAAW8yC,YAAYr6C,SAASnB,cAAc,SAC/Cu+C,EAAM,CACR,MAAMC,EAAUr9C,SAASnB,cAAc,OACvCw+C,EAAQh1C,UAAUC,IAAI,yBACtB+0C,EAAQ/O,KAAKhmC,IAAI,aACjB5H,KAAK6G,WAAW8yC,YAAYgD,EAC9B,CACF,CACA,UAAA5B,GACE/6C,KAAKihC,QACP,CACA,iBAAAga,GACEj7C,KAAK+6C,YACP,EASoB,oBAAXh6C,SACTA,OAAO67C,4BAA8Br3C,IACnCmyC,GAAWxwC,QAAQ3B,EAAO,GANN,oBAAXxE,SACNA,OAAO87C,eAAe9U,IAAI,qBAAqBhnC,OAAO87C,eAAeC,OAAO,mBAAoBlD,IAChG74C,OAAO87C,eAAe9U,IAAI,iBAAiBhnC,OAAO87C,eAAeC,OAAO,eAAgBL,IAUhG,CAzgUD"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.min.mjs new file mode 100644 index 0000000..fef87ae --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import"./swiper-bundle.mjs";import{p as paramsList,n as needsNavigation,a as needsPagination,b as needsScrollbar,u as updateSwiper,c as attrToProp}from"./shared/update-swiper.min.mjs";import{g as getParams}from"./shared/get-element-params.min.mjs";import{S as Swiper}from"./shared/swiper-core.min.mjs";const SwiperCSS=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}",SwiperSlideCSS="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}";class DummyHTMLElement{}const ClassToExtend="undefined"==typeof window||"undefined"==typeof HTMLElement?DummyHTMLElement:HTMLElement,arrowSvg='\n ',addStyle=(e,i)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const t=new CSSStyleSheet;t.replaceSync(i),e.adoptedStyleSheets=[t]}else{const t=document.createElement("style");t.rel="stylesheet",t.textContent=i,e.appendChild(t)}};class SwiperContainer extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return arrowSvg}static get prevButtonSvg(){return arrowSvg.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[SwiperCSS,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,i=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=i.length?Math.max(...i)+1:0,this.rendered)if(this.slideSlots>e)for(let i=e;i=0;i-=1)i>this.slideSlots&&e[i].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&addStyle(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const i=document.createElement("link");i.rel="stylesheet",i.href=e,this.shadowRoot.appendChild(i)}));const i=document.createElement("div");i.classList.add("swiper"),i.part="container",i.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,i)=>`\n \n \n \n `)).join("")}\n
\n \n ${needsNavigation(this.passedParams)?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${needsPagination(this.passedParams)?'\n
\n ':""}\n ${needsScrollbar(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(i),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:i,passedParams:t}=getParams(this);this.swiperParams=i,this.passedParams=t,delete this.swiperParams.init,this.render(),this.swiper=new Swiper(this.shadowRoot.querySelector(".swiper"),{...i.virtual?{}:{observer:!0},...i,touchEventsTarget:"container",onAny:function(t){"observerUpdate"===t&&e.calcSlideSlots();const s=i.eventsPrefix?`${i.eventsPrefix}${t.toLowerCase()}`:t.toLowerCase();for(var r=arguments.length,a=new Array(r>1?r-1:0),o=1;oe.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}paramsList.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(SwiperContainer.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(i){this.passedParams||(this.passedParams={}),this.passedParams[e]=i,this.initialized&&this.updateSwiperOnPropChange(e,i)}}))}));class SwiperSlide extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(addStyle(this.shadowRoot,SwiperSlideCSS),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}const register=()=>{"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",SwiperContainer),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",SwiperSlide))};"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{paramsList.push(...e)});export{SwiperContainer,SwiperSlide,register}; +//# sourceMappingURL=swiper-element-bundle.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.min.mjs.map new file mode 100644 index 0000000..ef1afa0 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element-bundle.mjs.mjs","names":["paramsList","needsNavigation","needsPagination","needsScrollbar","updateSwiper","attrToProp","getParams","Swiper","SwiperCSS","SwiperSlideCSS","DummyHTMLElement","ClassToExtend","window","HTMLElement","arrowSvg","addStyle","shadowRoot","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","style","document","createElement","rel","textContent","appendChild","SwiperContainer","constructor","super","this","attachShadow","mode","nextButtonSvg","prevButtonSvg","replace","cssStyles","injectStyles","Array","isArray","join","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlots","slideSlotChildren","querySelectorAll","map","child","parseInt","getAttribute","split","length","Math","max","rendered","i","slideEl","setAttribute","slotEl","querySelector","slides","swiper","remove","render","localStyles","forEach","url","linkEl","href","el","classList","add","part","innerHTML","from","_","index","passedParams","initialize","_this","initialized","params","swiperParams","init","virtual","observer","touchEventsTarget","onAny","name","eventName","eventsPrefix","toLowerCase","_len","arguments","args","_key","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","connectedCallback","nested","closest","swiperLoopMoveDOM","disconnectedCallback","destroy","updateSwiperOnPropChange","propName","propValue","changedParams","prevEl","nextEl","paginationEl","scrollbarEl","attributeChangedCallback","attr","prevValue","newValue","observedAttributes","filter","param","includes","v","paramName","Object","defineProperty","prototype","configurable","get","set","value","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams","push"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.mjs new file mode 100644 index 0000000..10811c9 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element-bundle.mjs @@ -0,0 +1,286 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import './swiper-bundle.mjs'; +import { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs'; +import { g as getParams } from './shared/get-element-params.mjs'; +import { S as Swiper } from './shared/swiper-core.mjs'; + +/* eslint-disable spaced-comment */ + +const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-virtual ::slotted(swiper-slide){-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:host{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}::slotted(.swiper-slide-zoomed){cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode ::slotted(swiper-slide){transition-timing-function:ease-out}.swiper-fade ::slotted(swiper-slide){pointer-events:none;transition-property:opacity}.swiper-fade ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-fade ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-fade ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube{overflow:visible}.swiper-cube ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-cube.swiper-rtl ::slotted(swiper-slide){transform-origin:100% 0}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-cube ::slotted(.swiper-slide-active),.swiper-cube ::slotted(.swiper-slide-next),.swiper-cube ::slotted(.swiper-slide-prev){pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube ::slotted(.swiper-slide-next)+::slotted(swiper-slide){pointer-events:auto;visibility:visible}.swiper-flip{overflow:visible}.swiper-flip ::slotted(swiper-slide){pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip ::slotted(swiper-slide) ::slotted(swiper-slide){pointer-events:none}.swiper-flip ::slotted(.swiper-slide-active),.swiper-flip ::slotted(.swiper-slide-active) ::slotted(.swiper-slide-active){pointer-events:auto}.swiper-creative ::slotted(swiper-slide){-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper-cards{overflow:visible}.swiper-cards ::slotted(swiper-slide){transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}` +const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}` + +class DummyHTMLElement {} +const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; +const arrowSvg = ` + `; +const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } +}; +class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } +} +paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); +}); +class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } +} + +// eslint-disable-next-line +const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); +}; +if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.d.ts new file mode 100644 index 0000000..a119a30 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.d.ts @@ -0,0 +1,444 @@ +// @ts-ignore +import { Swiper, SwiperOptions } from './types/index.d.ts'; + +declare const register: () => void; + +// prettier-ignore +interface SwiperContainerEventMap extends Omit { + /** + * Event will be fired in when autoplay started + */ + autoplaystart: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when autoplay stopped + */ + autoplaystop: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on autoplay pause + */ + autoplaypause: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on autoplay resume + */ + autoplayresume: CustomEvent<[swiper: Swiper]>; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplaytimeleft: CustomEvent<[swiper: Swiper, timeLeft: number, percentage: number]>; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on window hash change + */ + hashchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper updates the hash + */ + hashset: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on key press + */ + keypress: CustomEvent<[swiper: Swiper, keyCode: string]>;/** + * Event will be fired on mousewheel scroll + */ + scroll: CustomEvent<[swiper: Swiper, event: WheelEvent]>;/** + * Event will be fired after pagination rendered + */ + paginationrender: CustomEvent<[swiper: Swiper, paginationEl: HTMLElement]>; + + /** + * Event will be fired when pagination updated + */ + paginationupdate: CustomEvent<[swiper: Swiper, paginationEl: HTMLElement]>; + + /** + * Event will be fired on pagination hide + */ + paginationhide: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired on pagination show + */ + paginationshow: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on navigation hide + */ + navigationhide: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation show + */ + navigationshow: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation prev button click + */ + navigationprev: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on navigation next button click + */ + navigationnext: CustomEvent<[swiper: Swiper]>;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbardragstart: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbardragmove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbardragend: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>;/** + * Event will be fired on zoom change + */ + zoomchange: CustomEvent<[swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement]>; + + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: CustomEvent<[false, + * // other parameters + * }]>; + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: CustomEvent<[{ + * init: function { + * // do something + * }, + * } + * })]>; + * ``` + */ + init: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired right before Swiper destroyed + */ + beforedestroy: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesupdated: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when currently active slide is changed + */ + slidechange: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slidechangetransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slidechangetransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slidenexttransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slidenexttransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slideprevtransitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slideprevtransitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired in the beginning of transition. + */ + transitionstart: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after transition. + */ + transitionend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchstart: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchmove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchmoveopposite: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + slidermove: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchend: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubletap: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: CustomEvent<[swiper: Swiper, progress: number]>; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachbeginning: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper reach last slide + */ + reachend: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toedge: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromedge: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + settranslate: CustomEvent<[swiper: Swiper, translate: number]>; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + settransition: CustomEvent<[swiper: Swiper, transition: number]>; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerupdate: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired right before "loop fix" + */ + beforeloopfix: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired after "loop fix" + */ + loopfix: CustomEvent<[swiper: Swiper]>; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: CustomEvent<[swiper: Swiper, breakpointParams: SwiperOptions]>; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + + + /** + * Event will fired on active index change + */ + activeindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired on snap index change + */ + snapindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired on real index change + */ + realindexchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired right after initialization + */ + afterinit: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired right before initialization + */ + beforeinit: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before resize handler + */ + beforeresize: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before slide change transition start + */ + beforeslidechangestart: CustomEvent<[swiper: Swiper]>; + /** + * Event will fired before transition start + */ + beforetransitionstart: CustomEvent<[swiper: Swiper, speed: number, internal: any]>; // what is internal? + /** + * Event will fired on direction change + */ + changedirection: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleclick: CustomEvent<[swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent]>; + /** + * Event will be fired on swiper destroy + */ + destroy: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on momentum bounce + */ + momentumbounce: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideresettransitionstart: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideresettransitionend: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired with first touch/drag move + */ + sliderfirstmove: CustomEvent<[swiper: Swiper, event: TouchEvent]>; + /** + * Event will be fired when number of slides has changed + */ + slideslengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when slides grid has changed + */ + slidesgridlengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when snap grid has changed + */ + snapgridlengthchange: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired after swiper.update() call + */ + update: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: CustomEvent<[swiper: Swiper]>; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: CustomEvent<[swiper: Swiper]>; + +} + +interface SwiperContainer extends HTMLElement {} +interface SwiperContainer extends SwiperOptions { + swiper: Swiper; + initialize: () => void; + injectStyles: string[]; + injectStylesUrls: string[]; + eventsPrefix: string; + addEventListener( + type: K, + listener: (this: SwiperContainer, ev: SwiperContainerEventMap[K]) => any, + options?: boolean | AddEventListenerOptions, + ): void; + addEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | AddEventListenerOptions, + ): void; + removeEventListener( + type: K, + listener: (this: SwiperContainer, ev: SwiperContainerEventMap[K]) => any, + options?: boolean | EventListenerOptions, + ): void; + removeEventListener( + type: string, + listener: EventListenerOrEventListenerObject, + options?: boolean | EventListenerOptions, + ): void; +} + +interface SwiperSlide extends HTMLElement { + lazy: string | boolean; +} + +declare global { + interface HTMLElementTagNameMap { + 'swiper-container': SwiperContainer; + 'swiper-slide': SwiperSlide; + } +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.js b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.js new file mode 100644 index 0000000..3af4cc2 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.js @@ -0,0 +1,4938 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +(function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$2(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$2(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) { + extend$2(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$2(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$2(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject$1(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend$1() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject$1(to[nextKey]) && isObject$1(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend$1(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + const children = [...element.children]; + if (element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOf(el, parent) { + const isChild = parent.contains(el); + if (!isChild && parent instanceof HTMLSlotElement) { + const children = [...element.assignedElements()]; + return children.includes(el); + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); + if (allSlidesSize + offsetSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend$1(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend$1(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend$1(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend$1(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend$1({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend$1({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend$1({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend$1({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend$1({}, swiper.params); + swiper.passedParams = extend$1({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend$1(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + /* underscore in name -> watch for changes */ + const paramsList = ['eventsPrefix', 'injectStyles', 'injectStylesUrls', 'modules', 'init', '_direction', 'oneWayMovement', 'swiperElementNodeName', 'touchEventsTarget', 'initialSlide', '_speed', 'cssMode', 'updateOnWindowResize', 'resizeObserver', 'nested', 'focusableElements', '_enabled', '_width', '_height', 'preventInteractionOnTransition', 'userAgent', 'url', '_edgeSwipeDetection', '_edgeSwipeThreshold', '_freeMode', '_autoHeight', 'setWrapperSize', 'virtualTranslate', '_effect', 'breakpoints', 'breakpointsBase', '_spaceBetween', '_slidesPerView', 'maxBackfaceHiddenSlides', '_grid', '_slidesPerGroup', '_slidesPerGroupSkip', '_slidesPerGroupAuto', '_centeredSlides', '_centeredSlidesBounds', '_slidesOffsetBefore', '_slidesOffsetAfter', 'normalizeSlideIndex', '_centerInsufficientSlides', '_watchOverflow', 'roundLengths', 'touchRatio', 'touchAngle', 'simulateTouch', '_shortSwipes', '_longSwipes', 'longSwipesRatio', 'longSwipesMs', '_followFinger', 'allowTouchMove', '_threshold', 'touchMoveStopPropagation', 'touchStartPreventDefault', 'touchStartForcePreventDefault', 'touchReleaseOnEdges', 'uniqueNavElements', '_resistance', '_resistanceRatio', '_watchSlidesProgress', '_grabCursor', 'preventClicks', 'preventClicksPropagation', '_slideToClickedSlide', '_loop', 'loopAdditionalSlides', 'loopAddBlankSlides', 'loopPreventsSliding', '_rewind', '_allowSlidePrev', '_allowSlideNext', '_swipeHandler', '_noSwiping', 'noSwipingClass', 'noSwipingSelector', 'passiveListeners', 'containerModifierClass', 'slideClass', 'slideActiveClass', 'slideVisibleClass', 'slideFullyVisibleClass', 'slideNextClass', 'slidePrevClass', 'slideBlankClass', 'wrapperClass', 'lazyPreloaderClass', 'lazyPreloadPrevNext', 'runCallbacksOnInit', 'observer', 'observeParents', 'observeSlideChildren', + // modules + 'a11y', '_autoplay', '_controller', 'coverflowEffect', 'cubeEffect', 'fadeEffect', 'flipEffect', 'creativeEffect', 'cardsEffect', 'hashNavigation', 'history', 'keyboard', 'mousewheel', '_navigation', '_pagination', 'parallax', '_scrollbar', '_thumbs', 'virtual', 'zoom', 'control']; + + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object' && !o.__swiper__; + } + function extend(target, src) { + const noExtend = ['__proto__', 'constructor', 'prototype']; + Object.keys(src).filter(key => noExtend.indexOf(key) < 0).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) { + if (src[key].__swiper__) target[key] = src[key];else extend(target[key], src[key]); + } else { + target[key] = src[key]; + } + }); + } + function needsNavigation(params) { + if (params === void 0) { + params = {}; + } + return params.navigation && typeof params.navigation.nextEl === 'undefined' && typeof params.navigation.prevEl === 'undefined'; + } + function needsPagination(params) { + if (params === void 0) { + params = {}; + } + return params.pagination && typeof params.pagination.el === 'undefined'; + } + function needsScrollbar(params) { + if (params === void 0) { + params = {}; + } + return params.scrollbar && typeof params.scrollbar.el === 'undefined'; + } + function attrToProp(attrName) { + if (attrName === void 0) { + attrName = ''; + } + return attrName.replace(/-[a-z]/g, l => l.toUpperCase().replace('-', '')); + } + + function updateSwiper(_ref) { + let { + swiper, + slides, + passedParams, + changedParams, + nextEl, + prevEl, + scrollbarEl, + paginationEl + } = _ref; + const updateParams = changedParams.filter(key => key !== 'children' && key !== 'direction' && key !== 'wrapperClass'); + const { + params: currentParams, + pagination, + navigation, + scrollbar, + virtual, + thumbs + } = swiper; + let needThumbsInit; + let needControllerInit; + let needPaginationInit; + let needScrollbarInit; + let needNavigationInit; + let loopNeedDestroy; + let loopNeedEnable; + let loopNeedReloop; + if (changedParams.includes('thumbs') && passedParams.thumbs && passedParams.thumbs.swiper && currentParams.thumbs && !currentParams.thumbs.swiper) { + needThumbsInit = true; + } + if (changedParams.includes('controller') && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) { + needControllerInit = true; + } + if (changedParams.includes('pagination') && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) { + needPaginationInit = true; + } + if (changedParams.includes('scrollbar') && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) { + needScrollbarInit = true; + } + if (changedParams.includes('navigation') && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) { + needNavigationInit = true; + } + const destroyModule = mod => { + if (!swiper[mod]) return; + swiper[mod].destroy(); + if (mod === 'navigation') { + if (swiper.isElement) { + swiper[mod].prevEl.remove(); + swiper[mod].nextEl.remove(); + } + currentParams[mod].prevEl = undefined; + currentParams[mod].nextEl = undefined; + swiper[mod].prevEl = undefined; + swiper[mod].nextEl = undefined; + } else { + if (swiper.isElement) { + swiper[mod].el.remove(); + } + currentParams[mod].el = undefined; + swiper[mod].el = undefined; + } + }; + if (changedParams.includes('loop') && swiper.isElement) { + if (currentParams.loop && !passedParams.loop) { + loopNeedDestroy = true; + } else if (!currentParams.loop && passedParams.loop) { + loopNeedEnable = true; + } else { + loopNeedReloop = true; + } + } + updateParams.forEach(key => { + if (isObject(currentParams[key]) && isObject(passedParams[key])) { + Object.assign(currentParams[key], passedParams[key]); + if ((key === 'navigation' || key === 'pagination' || key === 'scrollbar') && 'enabled' in passedParams[key] && !passedParams[key].enabled) { + destroyModule(key); + } + } else { + const newValue = passedParams[key]; + if ((newValue === true || newValue === false) && (key === 'navigation' || key === 'pagination' || key === 'scrollbar')) { + if (newValue === false) { + destroyModule(key); + } + } else { + currentParams[key] = passedParams[key]; + } + } + }); + if (updateParams.includes('controller') && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) { + swiper.controller.control = currentParams.controller.control; + } + if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) { + virtual.slides = slides; + virtual.update(true); + } else if (changedParams.includes('virtual') && virtual && currentParams.virtual.enabled) { + if (slides) virtual.slides = slides; + virtual.update(true); + } + if (changedParams.includes('children') && slides && currentParams.loop) { + loopNeedReloop = true; + } + if (needThumbsInit) { + const initialized = thumbs.init(); + if (initialized) thumbs.update(true); + } + if (needControllerInit) { + swiper.controller.control = currentParams.controller.control; + } + if (needPaginationInit) { + if (swiper.isElement && (!paginationEl || typeof paginationEl === 'string')) { + paginationEl = document.createElement('div'); + paginationEl.classList.add('swiper-pagination'); + paginationEl.part.add('pagination'); + swiper.el.appendChild(paginationEl); + } + if (paginationEl) currentParams.pagination.el = paginationEl; + pagination.init(); + pagination.render(); + pagination.update(); + } + if (needScrollbarInit) { + if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === 'string')) { + scrollbarEl = document.createElement('div'); + scrollbarEl.classList.add('swiper-scrollbar'); + scrollbarEl.part.add('scrollbar'); + swiper.el.appendChild(scrollbarEl); + } + if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl; + scrollbar.init(); + scrollbar.updateSize(); + scrollbar.setTranslate(); + } + if (needNavigationInit) { + if (swiper.isElement) { + if (!nextEl || typeof nextEl === 'string') { + nextEl = document.createElement('div'); + nextEl.classList.add('swiper-button-next'); + nextEl.innerHTML = swiper.hostEl.constructor.nextButtonSvg; + nextEl.part.add('button-next'); + swiper.el.appendChild(nextEl); + } + if (!prevEl || typeof prevEl === 'string') { + prevEl = document.createElement('div'); + prevEl.classList.add('swiper-button-prev'); + prevEl.innerHTML = swiper.hostEl.constructor.prevButtonSvg; + prevEl.part.add('button-prev'); + swiper.el.appendChild(prevEl); + } + } + if (nextEl) currentParams.navigation.nextEl = nextEl; + if (prevEl) currentParams.navigation.prevEl = prevEl; + navigation.init(); + navigation.update(); + } + if (changedParams.includes('allowSlideNext')) { + swiper.allowSlideNext = passedParams.allowSlideNext; + } + if (changedParams.includes('allowSlidePrev')) { + swiper.allowSlidePrev = passedParams.allowSlidePrev; + } + if (changedParams.includes('direction')) { + swiper.changeDirection(passedParams.direction, false); + } + if (loopNeedDestroy || loopNeedReloop) { + swiper.loopDestroy(); + } + if (loopNeedEnable || loopNeedReloop) { + swiper.loopCreate(); + } + swiper.update(); + } + + const formatValue = val => { + if (parseFloat(val) === Number(val)) return Number(val); + if (val === 'true') return true; + if (val === '') return true; + if (val === 'false') return false; + if (val === 'null') return null; + if (val === 'undefined') return undefined; + if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) { + let v; + try { + v = JSON.parse(val); + } catch (err) { + v = val; + } + return v; + } + return val; + }; + const modulesParamsList = ['a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom']; + function getParams(element, propName, propValue) { + const params = {}; + const passedParams = {}; + extend(params, defaults); + const localParamsList = [...paramsList, 'on']; + const allowedParams = localParamsList.map(key => key.replace(/_/, '')); + + // First check props + localParamsList.forEach(paramName => { + paramName = paramName.replace('_', ''); + if (typeof element[paramName] !== 'undefined') { + passedParams[paramName] = element[paramName]; + } + }); + + // Attributes + const attrsList = [...element.attributes]; + if (typeof propName === 'string' && typeof propValue !== 'undefined') { + attrsList.push({ + name: propName, + value: isObject(propValue) ? { + ...propValue + } : propValue + }); + } + attrsList.forEach(attr => { + const moduleParam = modulesParamsList.filter(mParam => attr.name.indexOf(`${mParam}-`) === 0)[0]; + if (moduleParam) { + const parentObjName = attrToProp(moduleParam); + const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); + if (typeof passedParams[parentObjName] === 'undefined') passedParams[parentObjName] = {}; + if (passedParams[parentObjName] === true) { + passedParams[parentObjName] = { + enabled: true + }; + } + passedParams[parentObjName][subObjName] = formatValue(attr.value); + } else { + const name = attrToProp(attr.name); + if (!allowedParams.includes(name)) return; + const value = formatValue(attr.value); + if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) { + if (passedParams[name].constructor !== Object) { + passedParams[name] = {}; + } + passedParams[name].enabled = !!value; + } else { + passedParams[name] = value; + } + } + }); + extend(params, passedParams); + if (params.navigation) { + params.navigation = { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next', + ...(params.navigation !== true ? params.navigation : {}) + }; + } else if (params.navigation === false) { + delete params.navigation; + } + if (params.scrollbar) { + params.scrollbar = { + el: '.swiper-scrollbar', + ...(params.scrollbar !== true ? params.scrollbar : {}) + }; + } else if (params.scrollbar === false) { + delete params.scrollbar; + } + if (params.pagination) { + params.pagination = { + el: '.swiper-pagination', + ...(params.pagination !== true ? params.pagination : {}) + }; + } else if (params.pagination === false) { + delete params.pagination; + } + return { + params, + passedParams + }; + } + + /** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + + + /* eslint-disable spaced-comment */ + + const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}`; + const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}`; + + class DummyHTMLElement {} + const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; + const arrowSvg = ` + `; + const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } + }; + class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } + } + paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); + }); + class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } + } + + // eslint-disable-next-line + const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); + }; + if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; + } + + register(); + +})(); diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.min.js b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.min.js new file mode 100644 index 0000000..4699bb7 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.min.js @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +!function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function n(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function a(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function l(e,t){void 0===t&&(t="x");const s=n();let i,r,a;const o=function(e){const t=n();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=o.transform||o.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map((e=>e.replace(",","."))).join(", ")),a=new s.WebKitCSSMatrix("none"===r?"":r)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=a.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;ta?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{o=(new Date).getTime(),null===l&&(l=o);const e=Math.max(Math.min((o-l)/d,1),0),n=.5-Math.cos(e*Math.PI)/2;let c=a+n*(s-a);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[i]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:c})})),void r.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=r.requestAnimationFrame(u)};u()}function h(e,t){void 0===t&&(t="");const s=[...e.children];return e instanceof HTMLSlotElement&&s.push(...e.assignedElements()),t?s.filter((e=>e.matches(t))):s}function f(e){try{return void console.warn(e)}catch(e){}}function m(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}(t)),s}function v(e,t){return n().getComputedStyle(e,null).getPropertyValue(t)}function g(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function w(e,t,s){const i=n();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let b,S,T;function y(){return b||(b=function(){const e=n(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),b}function x(e){return void 0===e&&(e={}),S||(S=function(e){let{userAgent:t}=void 0===e?{}:e;const s=y(),i=n(),r=i.navigator.platform,a=t||i.navigator.userAgent,o={ios:!1,android:!1},l=i.screen.width,d=i.screen.height,c=a.match(/(Android);?[\s\/]+([\d.]+)?/);let p=a.match(/(iPad).*OS\s([\d_]+)/);const u=a.match(/(iPod)(.*OS\s([\d_]+))?/),h=!p&&a.match(/(iPhone\sOS|iOS)\s([\d_]+)/),f="Win32"===r;let m="MacIntel"===r;return!p&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${d}`)>=0&&(p=a.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),m=!1),c&&!f&&(o.os="android",o.android=!0),(p||h||u)&&(o.os="ios",o.ios=!0),o}(e)),S}function E(){return T||(T=function(){const e=n(),t=x();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),a=i();return{isSafari:s||a,needPerspectiveFix:s,need3dFix:a||r&&t.ios,isWebView:r}}()),T}var C={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const M=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const P=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const k=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},L=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},z=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&L(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&L(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=0?x=parseFloat(x.replace("%",""))/100*n:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let k;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&f.push(e.virtualSize-n)}if(l&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e-n;f=f.map((e=>e<=0?-b:e>t?t+S:e))}if(s.centerInsufficientSlides){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{f[t]=e-s})),m.forEach(((e,t)=>{m[t]=e+s}))}}if(Object.assign(e,{slides:c,snapGrid:f,slidesGrid:m,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-f[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(u!==d&&e.emit("slidesLengthChange"),f.length!==T&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),m.length!==y&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);u<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],m=u>=0&&u1&&h<=t.size||u<=0&&h>=t.size;m&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e)),M(l,m,s.slideVisibleClass),M(l,f,s.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,o=e=>h(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l,d,c;if(n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=o(`[data-swiper-slide-index="${t}"]`)}else l=o(`[data-swiper-slide-index="${r}"]`);else a?(l=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):l=t[r];l&&(a||(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{P(e,e===l,s.slideActiveClass),P(e,e===c,s.slideNextClass),P(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&z(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;el?l:i&&ea?"next":n=l.length&&(g=l.length-1);const w=-l[g];if(o.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(h?w>n.translate&&w>n.minTranslate():wn.translate&&w>n.maxTranslate()&&(p||0)!==a)return!1}let b;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(w),b=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{f[e?"scrollLeft":"scrollTop"]=s}))):f[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return u({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;f.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(w),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,b),0===t?n.transitionEnd(s,b):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,b))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let o=r.params.slidesPerView;"auto"===o?o=r.slidesPerViewDynamic():(o=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&o%2==0&&(o+=1));let l=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r},slideNext:function(e,t,s){void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r||i.destroyed)return i;void 0===e&&(e=i.params.speed);let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex{i.slideTo(i.activeIndex+l,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)},slidePrev:function(e,t,s){void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l||i.destroyed)return i;void 0===e&&(e=i.params.speed);const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),h=n.map((e=>p(e)));let f=n[h.indexOf(u)-1];if(void 0===f&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(f=n[e>0?e-1:e])}let m=0;if(void 0!==f&&(m=a.indexOf(f),m<0&&(m=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(m=m-i.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(m,e,t,s)})),!0):i.slideTo(m,e,t,s)},slideReset:function(e,t,s){void 0===t&&(t=!0);const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(h(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}};var G={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{h(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),o=t.slides.length%a!=0,l=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(h.slideActiveClass)))[0]):y=n;const x="next"===i||!i,E="prev"===i||!i;let C=0,M=0;const P=b?Math.ceil(d.length/h.grid.rows):d.length,k=(b?d[n].column:n)+(m&&void 0===r?-v/2+.5:0);if(k=0;t-=1)d[t].column===e&&S.push(t)}else S.push(P-t-1)}}else if(k+v>P-w){M=Math.max(k-(P-2*w),g);for(let e=0;e{e.column===t&&T.push(s)})):T.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame((()=>{l.__preventObserver__=!1})),E&&S.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),x&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),l.recalcSlides(),"auto"===h.slidesPerView?l.updateSlides():b&&(S.length>0&&E||T.length>0&&x)&&l.slides.forEach(((e,t)=>{l.grid.updateSlide(t,e,l.slides)})),h.watchSlidesProgress&&l.updateSlidesOffset(),s)if(S.length>0&&E){if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y+C]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y+Math.ceil(C),0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(r){const e=b?S.length/h.grid.rows:S.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(T.length>0&&x)if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y-M]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y-M,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{const e=b?T.length/h.grid.rows:T.length;l.slideTo(l.activeIndex-e,0,!1,!0)}if(l.allowSlidePrev=c,l.allowSlideNext=p,l.controller&&l.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===h.slidesPerView&&s})})):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...e,slideTo:l.controller.control.params.slidesPerView===h.slidesPerView&&s})}l.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function D(e,t,s){const i=n(),{params:r}=e,a=r.edgeSwipeDetection,o=r.edgeSwipeThreshold;return!a||!(s<=o||s>=i.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function N(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const a=t.touchEventsData;if("pointerdown"===r.type){if(null!==a.pointerId&&a.pointerId!==r.pointerId)return;a.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(a.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void D(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=r.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=t.contains(e);if(!s&&t instanceof HTMLSlotElement)return[...element.assignedElements()].includes(e);return s}(p,t.wrapperEl))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(a.isTouched&&a.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,h=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&h&&(p=h[0]);const f=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,m=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(m?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===n())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(f,p):p.closest(f)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const v=d.currentX,g=d.currentY;if(!D(t,r,v))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=g,a.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(a.allowThresholdMove=!1);let w=!0;p.matches(a.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||p.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function V(e){const t=i(),s=this,r=s.touchEventsData,{params:n,touches:a,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!n.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==r.touchId)return;if(p.pointerId!==r.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===r.touchId))[0],!c||c.identifier!==r.touchId)return}else c=p;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,h=c.pageY;if(p.preventedByNestedSwiper)return a.startX=u,void(a.startY=h);if(!s.allowTouchMove)return p.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h}),r.touchStartTime=o()));if(n.touchReleaseOnEdges&&!n.loop)if(s.isVertical()){if(ha.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else if(ua.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",p),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=u,a.currentY=h;const f=a.currentX-a.startX,m=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(f**2+m**2)=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(f))/Math.PI,r.isScrolling=s.isHorizontal()?e>n.touchAngle:90-e>n.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",p),void 0===r.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling||"touchmove"===p.type&&r.preventTouchMoveFromPointerMove)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!n.cssMode&&p.cancelable&&p.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&p.stopPropagation();let v=s.isHorizontal()?f:m,g=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;n.oneWayMovement&&(v=Math.abs(v)*(l?1:-1),g=Math.abs(g)*(l?1:-1)),a.diff=v,v*=n.touchRatio,l&&(v=-v,g=-g);const w=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=g>0?"prev":"next";const b=s.params.loop&&!n.cssMode,S="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(b&&S&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!n.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),r.isMoved&&r.allowThresholdMove&&w!==s.touchesDirection&&b&&S&&Math.abs(v)>=1)return Object.assign(a,{startX:u,startY:h,currentX:u,currentY:h,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",p),r.isMoved=!0,r.currentTranslate=v+r.startTranslate;let T=!0,y=n.resistanceRatio;if(n.touchReleaseOnEdges&&(y=0),v>0?(b&&S&&r.allowThresholdMove&&r.currentTranslate>(n.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(T=!1,n.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+v)**y))):v<0&&(b&&S&&r.allowThresholdMove&&r.currentTranslate<(n.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===n.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),n.threshold>0){if(!(Math.abs(v)>n.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&s.freeMode||n.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function B(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:l,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),h=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),h<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),a((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===l.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let f;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,f=n.followFinger?d?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:f});const m=f>=-t.maxTranslate()&&!t.params.loop;let v=0,g=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&f=c[e])&&(v=e,g=c[c.length-1]-c[c.length-2])}let w=null,b=null;n.rewind&&(t.isBeginning?b=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const S=(f-c[v])/g,T=vn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(S>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?w:v+T):t.slideTo(v)),"prev"===t.swipeDirection&&(S>1-n.longSwipesRatio?t.slideTo(v+T):null!==b&&S<0&&Math.abs(S)>n.longSwipesRatio?t.slideTo(b):t.slideTo(v))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(v+T):t.slideTo(v):("next"===t.swipeDirection&&t.slideTo(null!==w?w:v+T),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:v))}}function $(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function F(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function j(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function R(e){const t=this;k(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function H(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const W=(e,t)=>{const s=i(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;n&&"string"!=typeof n&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",$,!0):e[c]("observerUpdate",$,!0),n[d]("load",e.onLoad,{capture:!0}))};const q=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var Y={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function X(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const U={eventsEmitter:C,update:I,translate:O,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),_({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),_({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:A,loop:G,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=N.bind(e),e.onTouchMove=V.bind(e),e.onTouchEnd=B.bind(e),e.onDocumentTouchStart=H.bind(e),t.cssMode&&(e.onScroll=j.bind(e)),e.onClick=F.bind(e),e.onLoad=R.bind(e),W(e,"on")},detachEvents:function(){W(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const o=(a in n?n[a]:void 0)||e.originalParams,l=q(e,i),d=q(e,o),p=e.params.grabCursor,u=o.grabCursor,h=i.enabled;l&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!l&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),p&&!u?e.unsetGrabCursor():!p&&u&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===o[t])return;const s=i[t]&&i[t].enabled,r=o[t]&&o[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const f=o.direction&&o.direction!==i.direction,m=i.loop&&(o.slidesPerView!==i.slidesPerView||f),v=i.loop;f&&s&&e.changeDirection(),c(e.params,o);const g=e.params.enabled,w=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),h&&!g?e.disable():!h&&g&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",o),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!v&&w?(e.loopCreate(t),e.updateSlides()):v&&!w&&e.loopDestroy()),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=n(),a="window"===t?r.innerHeight:s.clientHeight,o=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}}));o.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},K={};class Z{constructor(){let e,t;for(var s=arguments.length,r=new Array(s),n=0;n1){const e=[];return a.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new Z(i))})),e}const o=this;o.__swiper__=!0,o.support=y(),o.device=x({userAgent:t.userAgent}),o.browser=E(),o.eventsListeners={},o.eventsAnyListeners=[],o.modules=[...o.__modules__],t.modules&&Array.isArray(t.modules)&&o.modules.push(...t.modules);const l={};o.modules.forEach((e=>{e({params:t,swiper:o,extendParams:X(t,l),on:o.on.bind(o),once:o.once.bind(o),off:o.off.bind(o),emit:o.emit.bind(o)})}));const d=c({},Y,l);return o.params=c({},d,K,t),o.originalParams=c({},o.params),o.passedParams=c({},t),o.params&&o.params.on&&Object.keys(o.params.on).forEach((e=>{o.on(e,o.params.on[e])})),o.params&&o.params.onAny&&o.onAny(o.params.onAny),Object.assign(o,{enabled:o.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===o.params.direction,isVertical:()=>"vertical"===o.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:o.params.allowSlideNext,allowSlidePrev:o.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:o.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:o.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),o.emit("_swiper"),o.params.init&&o.init(),o}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=g(h(t,`.${s.slideClass}, swiper-slide`)[0]);return g(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=h(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[o]?Math.ceil(i[o].swiperSlideSize):0;for(let s=o+1;sa&&(e=!0));for(let s=o-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e=0;e-=1){r[o]-r[e]{t.complete&&k(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return h(s,i())[0]})();return!r&&t.params.createElements&&(r=m("div",t.params.wrapperClass),s.append(r),h(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?k(t,e):e.addEventListener("load",(e=>{k(t,e.target)}))})),z(t),t.initialized=!0,z(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r&&"string"!=typeof r&&r.removeAttribute("style"),n&&n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(K,e)}static get extendedDefaults(){return K}static get defaults(){return Y}static installModule(e){Z.prototype.__modules__||(Z.prototype.__modules__=[]);const t=Z.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>Z.installModule(e))),Z):(Z.installModule(e),Z)}}Object.keys(U).forEach((e=>{Object.keys(U[e]).forEach((t=>{Z.prototype[t]=U[e][t]}))})),Z.use([function(e){let{swiper:t,on:s,emit:i}=e;const r=n();let a=null,o=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(a=new ResizeObserver((e=>{o=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),a.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",d))})),s("destroy",(()=>{o&&r.cancelAnimationFrame(o),a&&a.unobserve&&t.el&&(a.unobserve(t.el),a=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const a=[],o=n(),l=function(e,s){void 0===s&&(s={});const i=new(o.MutationObserver||o.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};o.requestAnimationFrame?o.requestAnimationFrame(s):o.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),a.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=function(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}(t.hostEl);for(let t=0;t{a.forEach((e=>{e.disconnect()})),a.splice(0,a.length)}))}]);const J=["eventsPrefix","injectStyles","injectStylesUrls","modules","init","_direction","oneWayMovement","swiperElementNodeName","touchEventsTarget","initialSlide","_speed","cssMode","updateOnWindowResize","resizeObserver","nested","focusableElements","_enabled","_width","_height","preventInteractionOnTransition","userAgent","url","_edgeSwipeDetection","_edgeSwipeThreshold","_freeMode","_autoHeight","setWrapperSize","virtualTranslate","_effect","breakpoints","breakpointsBase","_spaceBetween","_slidesPerView","maxBackfaceHiddenSlides","_grid","_slidesPerGroup","_slidesPerGroupSkip","_slidesPerGroupAuto","_centeredSlides","_centeredSlidesBounds","_slidesOffsetBefore","_slidesOffsetAfter","normalizeSlideIndex","_centerInsufficientSlides","_watchOverflow","roundLengths","touchRatio","touchAngle","simulateTouch","_shortSwipes","_longSwipes","longSwipesRatio","longSwipesMs","_followFinger","allowTouchMove","_threshold","touchMoveStopPropagation","touchStartPreventDefault","touchStartForcePreventDefault","touchReleaseOnEdges","uniqueNavElements","_resistance","_resistanceRatio","_watchSlidesProgress","_grabCursor","preventClicks","preventClicksPropagation","_slideToClickedSlide","_loop","loopAdditionalSlides","loopAddBlankSlides","loopPreventsSliding","_rewind","_allowSlidePrev","_allowSlideNext","_swipeHandler","_noSwiping","noSwipingClass","noSwipingSelector","passiveListeners","containerModifierClass","slideClass","slideActiveClass","slideVisibleClass","slideFullyVisibleClass","slideNextClass","slidePrevClass","slideBlankClass","wrapperClass","lazyPreloaderClass","lazyPreloadPrevNext","runCallbacksOnInit","observer","observeParents","observeSlideChildren","a11y","_autoplay","_controller","coverflowEffect","cubeEffect","fadeEffect","flipEffect","creativeEffect","cardsEffect","hashNavigation","history","keyboard","mousewheel","_navigation","_pagination","parallax","_scrollbar","_thumbs","virtual","zoom","control"];function Q(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)&&!e.__swiper__}function ee(e,t){const s=["__proto__","constructor","prototype"];Object.keys(t).filter((e=>s.indexOf(e)<0)).forEach((s=>{void 0===e[s]?e[s]=t[s]:Q(t[s])&&Q(e[s])&&Object.keys(t[s]).length>0?t[s].__swiper__?e[s]=t[s]:ee(e[s],t[s]):e[s]=t[s]}))}function te(e){return void 0===e&&(e=""),e.replace(/-[a-z]/g,(e=>e.toUpperCase().replace("-","")))}const se=e=>{if(parseFloat(e)===Number(e))return Number(e);if("true"===e)return!0;if(""===e)return!0;if("false"===e)return!1;if("null"===e)return null;if("undefined"!==e){if("string"==typeof e&&e.includes("{")&&e.includes("}")&&e.includes('"')){let t;try{t=JSON.parse(e)}catch(s){t=e}return t}return e}},ie=["a11y","autoplay","controller","cards-effect","coverflow-effect","creative-effect","cube-effect","fade-effect","flip-effect","free-mode","grid","hash-navigation","history","keyboard","mousewheel","navigation","pagination","parallax","scrollbar","thumbs","virtual","zoom"];function re(e,t,s){const i={},r={};ee(i,Y);const n=[...J,"on"],a=n.map((e=>e.replace(/_/,"")));n.forEach((t=>{t=t.replace("_",""),void 0!==e[t]&&(r[t]=e[t])}));const o=[...e.attributes];return"string"==typeof t&&void 0!==s&&o.push({name:t,value:Q(s)?{...s}:s}),o.forEach((e=>{const t=ie.filter((t=>0===e.name.indexOf(`${t}-`)))[0];if(t){const s=te(t),i=te(e.name.split(`${t}-`)[1]);void 0===r[s]&&(r[s]={}),!0===r[s]&&(r[s]={enabled:!0}),r[s][i]=se(e.value)}else{const t=te(e.name);if(!a.includes(t))return;const s=se(e.value);r[t]&&ie.includes(e.name)&&!Q(s)?(r[t].constructor!==Object&&(r[t]={}),r[t].enabled=!!s):r[t]=s}})),ee(i,r),i.navigation?i.navigation={prevEl:".swiper-button-prev",nextEl:".swiper-button-next",...!0!==i.navigation?i.navigation:{}}:!1===i.navigation&&delete i.navigation,i.scrollbar?i.scrollbar={el:".swiper-scrollbar",...!0!==i.scrollbar?i.scrollbar:{}}:!1===i.scrollbar&&delete i.scrollbar,i.pagination?i.pagination={el:".swiper-pagination",...!0!==i.pagination?i.pagination:{}}:!1===i.pagination&&delete i.pagination,{params:i,passedParams:r}}const ne=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}";const ae="undefined"==typeof window||"undefined"==typeof HTMLElement?class{}:HTMLElement,oe='\n ',le=(e,t)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const s=new CSSStyleSheet;s.replaceSync(t),e.adoptedStyleSheets=[s]}else{const s=document.createElement("style");s.rel="stylesheet",s.textContent=t,e.appendChild(s)}};class de extends ae{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return oe}static get prevButtonSvg(){return oe.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[ne,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,t=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=t.length?Math.max(...t)+1:0,this.rendered)if(this.slideSlots>e)for(let t=e;t=0;t-=1)t>this.slideSlots&&e[t].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&le(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const t=document.createElement("link");t.rel="stylesheet",t.href=e,this.shadowRoot.appendChild(t)}));const t=document.createElement("div");var s;t.classList.add("swiper"),t.part="container",t.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,t)=>`\n \n \n \n `)).join("")}\n
\n \n ${s=this.passedParams,void 0===s&&(s={}),s.navigation&&void 0===s.navigation.nextEl&&void 0===s.navigation.prevEl?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${function(e){return void 0===e&&(e={}),e.pagination&&void 0===e.pagination.el}(this.passedParams)?'\n
\n ':""}\n ${function(e){return void 0===e&&(e={}),e.scrollbar&&void 0===e.scrollbar.el}(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(t),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:t,passedParams:s}=re(this);this.swiperParams=t,this.passedParams=s,delete this.swiperParams.init,this.render(),this.swiper=new Z(this.shadowRoot.querySelector(".swiper"),{...t.virtual?{}:{observer:!0},...t,touchEventsTarget:"container",onAny:function(s){"observerUpdate"===s&&e.calcSlideSlots();const i=t.eventsPrefix?`${t.eventsPrefix}${s.toLowerCase()}`:s.toLowerCase();for(var r=arguments.length,n=new Array(r>1?r-1:0),a=1;a"children"!==e&&"direction"!==e&&"wrapperClass"!==e)),{params:c,pagination:p,navigation:u,scrollbar:h,virtual:f,thumbs:m}=t;let v,g,w,b,S,T,y,x;r.includes("thumbs")&&i.thumbs&&i.thumbs.swiper&&c.thumbs&&!c.thumbs.swiper&&(v=!0),r.includes("controller")&&i.controller&&i.controller.control&&c.controller&&!c.controller.control&&(g=!0),r.includes("pagination")&&i.pagination&&(i.pagination.el||l)&&(c.pagination||!1===c.pagination)&&p&&!p.el&&(w=!0),r.includes("scrollbar")&&i.scrollbar&&(i.scrollbar.el||o)&&(c.scrollbar||!1===c.scrollbar)&&h&&!h.el&&(b=!0),r.includes("navigation")&&i.navigation&&(i.navigation.prevEl||a)&&(i.navigation.nextEl||n)&&(c.navigation||!1===c.navigation)&&u&&!u.prevEl&&!u.nextEl&&(S=!0);const E=e=>{t[e]&&(t[e].destroy(),"navigation"===e?(t.isElement&&(t[e].prevEl.remove(),t[e].nextEl.remove()),c[e].prevEl=void 0,c[e].nextEl=void 0,t[e].prevEl=void 0,t[e].nextEl=void 0):(t.isElement&&t[e].el.remove(),c[e].el=void 0,t[e].el=void 0))};r.includes("loop")&&t.isElement&&(c.loop&&!i.loop?T=!0:!c.loop&&i.loop?y=!0:x=!0),d.forEach((e=>{if(Q(c[e])&&Q(i[e]))Object.assign(c[e],i[e]),"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e||!("enabled"in i[e])||i[e].enabled||E(e);else{const t=i[e];!0!==t&&!1!==t||"navigation"!==e&&"pagination"!==e&&"scrollbar"!==e?c[e]=i[e]:!1===t&&E(e)}})),d.includes("controller")&&!g&&t.controller&&t.controller.control&&c.controller&&c.controller.control&&(t.controller.control=c.controller.control),r.includes("children")&&s&&f&&c.virtual.enabled?(f.slides=s,f.update(!0)):r.includes("virtual")&&f&&c.virtual.enabled&&(s&&(f.slides=s),f.update(!0)),r.includes("children")&&s&&c.loop&&(x=!0),v&&m.init()&&m.update(!0);g&&(t.controller.control=c.controller.control),w&&(!t.isElement||l&&"string"!=typeof l||(l=document.createElement("div"),l.classList.add("swiper-pagination"),l.part.add("pagination"),t.el.appendChild(l)),l&&(c.pagination.el=l),p.init(),p.render(),p.update()),b&&(!t.isElement||o&&"string"!=typeof o||(o=document.createElement("div"),o.classList.add("swiper-scrollbar"),o.part.add("scrollbar"),t.el.appendChild(o)),o&&(c.scrollbar.el=o),h.init(),h.updateSize(),h.setTranslate()),S&&(t.isElement&&(n&&"string"!=typeof n||(n=document.createElement("div"),n.classList.add("swiper-button-next"),n.innerHTML=t.hostEl.constructor.nextButtonSvg,n.part.add("button-next"),t.el.appendChild(n)),a&&"string"!=typeof a||(a=document.createElement("div"),a.classList.add("swiper-button-prev"),a.innerHTML=t.hostEl.constructor.prevButtonSvg,a.part.add("button-prev"),t.el.appendChild(a))),n&&(c.navigation.nextEl=n),a&&(c.navigation.prevEl=a),u.init(),u.update()),r.includes("allowSlideNext")&&(t.allowSlideNext=i.allowSlideNext),r.includes("allowSlidePrev")&&(t.allowSlidePrev=i.allowSlidePrev),r.includes("direction")&&t.changeDirection(i.direction,!1),(T||x)&&t.loopDestroy(),(y||x)&&t.loopCreate(),t.update()}({swiper:this.swiper,passedParams:this.passedParams,changedParams:[te(e)],..."navigation"===e&&i[e]?{prevEl:".swiper-button-prev",nextEl:".swiper-button-next"}:{},..."pagination"===e&&i[e]?{paginationEl:".swiper-pagination"}:{},..."scrollbar"===e&&i[e]?{scrollbarEl:".swiper-scrollbar"}:{}})}attributeChangedCallback(e,t,s){this.initialized&&("true"===t&&null===s&&(s=!1),this.updateSwiperOnPropChange(e,s))}static get observedAttributes(){return J.filter((e=>e.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}J.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(de.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(t){this.passedParams||(this.passedParams={}),this.passedParams[e]=t,this.initialized&&this.updateSwiperOnPropChange(e,t)}}))}));class ce extends ae{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(le(this.shadowRoot,"::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}"),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{J.push(...e)}),"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",de),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",ce))}(); +//# sourceMappingURL=swiper-element.min.js.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.min.js.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.min.js.map new file mode 100644 index 0000000..e0f34c9 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element.js.js","names":["isObject$2","obj","constructor","Object","extend$2","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject$1","o","prototype","call","slice","extend$1","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","slideEl","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","e","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","parent","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","Swiper","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parentElement","elementParents","disconnect","paramsList","isObject","extend","attrToProp","attrName","l","formatValue","JSON","parse","modulesParamsList","getParams","propName","propValue","localParamsList","allowedParams","paramName","attrsList","name","attr","moduleParam","mParam","parentObjName","subObjName","scrollbar","pagination","SwiperCSS","ClassToExtend","arrowSvg","addStyle","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","rel","textContent","appendChild","SwiperContainer","super","attachShadow","mode","nextButtonSvg","prevButtonSvg","cssStyles","injectStyles","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlotChildren","rendered","slotEl","render","localStyles","linkEl","part","innerHTML","needsPagination","needsScrollbar","initialize","_this","connectedCallback","disconnectedCallback","updateSwiperOnPropChange","changedParams","scrollbarEl","paginationEl","updateParams","currentParams","thumbs","needThumbsInit","needControllerInit","needPaginationInit","needScrollbarInit","needNavigationInit","loopNeedDestroy","loopNeedEnable","loopNeedReloop","destroyModule","newValue","updateSwiper","attributeChangedCallback","prevValue","observedAttributes","param","defineProperty","configurable","get","set","SwiperSlide","lazy","lazyDiv","SwiperElementRegisterParams","customElements","define"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.min.mjs new file mode 100644 index 0000000..e31aece --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import{S as Swiper}from"./shared/swiper-core.min.mjs";import{p as paramsList,n as needsNavigation,a as needsPagination,b as needsScrollbar,u as updateSwiper,c as attrToProp}from"./shared/update-swiper.min.mjs";import{g as getParams}from"./shared/get-element-params.min.mjs";const SwiperCSS=":host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}",SwiperSlideCSS="::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}";class DummyHTMLElement{}const ClassToExtend="undefined"==typeof window||"undefined"==typeof HTMLElement?DummyHTMLElement:HTMLElement,arrowSvg='\n ',addStyle=(e,s)=>{if("undefined"!=typeof CSSStyleSheet&&e.adoptedStyleSheets){const t=new CSSStyleSheet;t.replaceSync(s),e.adoptedStyleSheets=[t]}else{const t=document.createElement("style");t.rel="stylesheet",t.textContent=s,e.appendChild(t)}};class SwiperContainer extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}static get nextButtonSvg(){return arrowSvg}static get prevButtonSvg(){return arrowSvg.replace("/>",' transform-origin="center" transform="rotate(180)"/>')}cssStyles(){return[SwiperCSS,...this.injectStyles&&Array.isArray(this.injectStyles)?this.injectStyles:[]].join("\n")}cssLinks(){return this.injectStylesUrls||[]}calcSlideSlots(){const e=this.slideSlots||0,s=[...this.querySelectorAll("[slot^=slide-]")].map((e=>parseInt(e.getAttribute("slot").split("slide-")[1],10)));if(this.slideSlots=s.length?Math.max(...s)+1:0,this.rendered)if(this.slideSlots>e)for(let s=e;s=0;s-=1)s>this.slideSlots&&e[s].remove()}}render(){if(this.rendered)return;this.calcSlideSlots();let e=this.cssStyles();this.slideSlots>0&&(e=e.replace(/::slotted\(([a-z-0-9.]*)\)/g,"$1")),e.length&&addStyle(this.shadowRoot,e),this.cssLinks().forEach((e=>{if(this.shadowRoot.querySelector(`link[href="${e}"]`))return;const s=document.createElement("link");s.rel="stylesheet",s.href=e,this.shadowRoot.appendChild(s)}));const s=document.createElement("div");s.classList.add("swiper"),s.part="container",s.innerHTML=`\n \n
\n \n ${Array.from({length:this.slideSlots}).map(((e,s)=>`\n \n \n \n `)).join("")}\n
\n \n ${needsNavigation(this.passedParams)?`\n
${this.constructor.prevButtonSvg}
\n
${this.constructor.nextButtonSvg}
\n `:""}\n ${needsPagination(this.passedParams)?'\n
\n ':""}\n ${needsScrollbar(this.passedParams)?'\n
\n ':""}\n `,this.shadowRoot.appendChild(s),this.rendered=!0}initialize(){var e=this;if(this.initialized)return;this.initialized=!0;const{params:s,passedParams:t}=getParams(this);this.swiperParams=s,this.passedParams=t,delete this.swiperParams.init,this.render(),this.swiper=new Swiper(this.shadowRoot.querySelector(".swiper"),{...s.virtual?{}:{observer:!0},...s,touchEventsTarget:"container",onAny:function(t){"observerUpdate"===t&&e.calcSlideSlots();const i=s.eventsPrefix?`${s.eventsPrefix}${t.toLowerCase()}`:t.toLowerCase();for(var r=arguments.length,a=new Array(r>1?r-1:0),o=1;oe.includes("_"))).map((e=>e.replace(/[A-Z]/g,(e=>`-${e}`)).replace("_","").toLowerCase()))}}paramsList.forEach((e=>{"init"!==e&&(e=e.replace("_",""),Object.defineProperty(SwiperContainer.prototype,e,{configurable:!0,get(){return(this.passedParams||{})[e]},set(s){this.passedParams||(this.passedParams={}),this.passedParams[e]=s,this.initialized&&this.updateSwiperOnPropChange(e,s)}}))}));class SwiperSlide extends ClassToExtend{constructor(){super(),this.attachShadow({mode:"open"})}render(){const e=this.lazy||""===this.getAttribute("lazy")||"true"===this.getAttribute("lazy");if(addStyle(this.shadowRoot,SwiperSlideCSS),this.shadowRoot.appendChild(document.createElement("slot")),e){const e=document.createElement("div");e.classList.add("swiper-lazy-preloader"),e.part.add("preloader"),this.shadowRoot.appendChild(e)}}initialize(){this.render()}connectedCallback(){this.initialize()}}const register=()=>{"undefined"!=typeof window&&(window.customElements.get("swiper-container")||window.customElements.define("swiper-container",SwiperContainer),window.customElements.get("swiper-slide")||window.customElements.define("swiper-slide",SwiperSlide))};"undefined"!=typeof window&&(window.SwiperElementRegisterParams=e=>{paramsList.push(...e)});export{SwiperContainer,SwiperSlide,register}; +//# sourceMappingURL=swiper-element.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.min.mjs.map new file mode 100644 index 0000000..41113f3 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-element.mjs.mjs","names":["Swiper","paramsList","needsNavigation","needsPagination","needsScrollbar","updateSwiper","attrToProp","getParams","SwiperCSS","SwiperSlideCSS","DummyHTMLElement","ClassToExtend","window","HTMLElement","arrowSvg","addStyle","shadowRoot","styles","CSSStyleSheet","adoptedStyleSheets","styleSheet","replaceSync","style","document","createElement","rel","textContent","appendChild","SwiperContainer","constructor","super","this","attachShadow","mode","nextButtonSvg","prevButtonSvg","replace","cssStyles","injectStyles","Array","isArray","join","cssLinks","injectStylesUrls","calcSlideSlots","currentSideSlots","slideSlots","slideSlotChildren","querySelectorAll","map","child","parseInt","getAttribute","split","length","Math","max","rendered","i","slideEl","setAttribute","slotEl","querySelector","slides","swiper","remove","render","localStyles","forEach","url","linkEl","href","el","classList","add","part","innerHTML","from","_","index","passedParams","initialize","_this","initialized","params","swiperParams","init","virtual","observer","touchEventsTarget","onAny","name","eventName","eventsPrefix","toLowerCase","_len","arguments","args","_key","event","CustomEvent","detail","bubbles","cancelable","dispatchEvent","connectedCallback","nested","closest","swiperLoopMoveDOM","disconnectedCallback","destroy","updateSwiperOnPropChange","propName","propValue","changedParams","prevEl","nextEl","paginationEl","scrollbarEl","attributeChangedCallback","attr","prevValue","newValue","observedAttributes","filter","param","includes","v","paramName","Object","defineProperty","prototype","configurable","get","set","value","SwiperSlide","lazy","lazyDiv","register","customElements","define","SwiperElementRegisterParams","push"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.mjs new file mode 100644 index 0000000..8a25a8f --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-element.mjs @@ -0,0 +1,285 @@ +/** + * Swiper Custom Element 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import { S as Swiper } from './shared/swiper-core.mjs'; +import { p as paramsList, n as needsNavigation, a as needsPagination, b as needsScrollbar, u as updateSwiper, c as attrToProp } from './shared/update-swiper.mjs'; +import { g as getParams } from './shared/get-element-params.mjs'; + +/* eslint-disable spaced-comment */ + +const SwiperCSS = `:host{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{width:100%;height:100%;margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android ::slotted(swiper-slide),.swiper-ios ::slotted(swiper-slide),.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}::slotted(swiper-slide){flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}::slotted(.swiper-slide-invisible-blank){visibility:hidden}.swiper-autoheight,.swiper-autoheight ::slotted(swiper-slide){height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden ::slotted(swiper-slide){transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d ::slotted(swiper-slide){transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode ::slotted(swiper-slide){scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode ::slotted(swiper-slide){scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered ::slotted(swiper-slide){scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal ::slotted(swiper-slide):first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical ::slotted(swiper-slide):first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}` +const SwiperSlideCSS = `::slotted(.swiper-slide-shadow),::slotted(.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-top){position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}::slotted(.swiper-slide-shadow){background:rgba(0,0,0,.15)}::slotted(.swiper-slide-shadow-left){background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-right){background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-top){background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}::slotted(.swiper-slide-shadow-bottom){background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear;width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-cube.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-bottom),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-left),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-right),::slotted(.swiper-slide-shadow-flip.swiper-slide-shadow-top){z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}::slotted(.swiper-zoom-container){width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}::slotted(.swiper-zoom-container)>canvas,::slotted(.swiper-zoom-container)>img,::slotted(.swiper-zoom-container)>svg{max-width:100%;max-height:100%;object-fit:contain}` + +class DummyHTMLElement {} +const ClassToExtend = typeof window === 'undefined' || typeof HTMLElement === 'undefined' ? DummyHTMLElement : HTMLElement; +const arrowSvg = ` + `; +const addStyle = (shadowRoot, styles) => { + if (typeof CSSStyleSheet !== 'undefined' && shadowRoot.adoptedStyleSheets) { + const styleSheet = new CSSStyleSheet(); + styleSheet.replaceSync(styles); + shadowRoot.adoptedStyleSheets = [styleSheet]; + } else { + const style = document.createElement('style'); + style.rel = 'stylesheet'; + style.textContent = styles; + shadowRoot.appendChild(style); + } +}; +class SwiperContainer extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + static get nextButtonSvg() { + return arrowSvg; + } + static get prevButtonSvg() { + return arrowSvg.replace('/>', ' transform-origin="center" transform="rotate(180)"/>'); + } + cssStyles() { + return [SwiperCSS, + // eslint-disable-line + ...(this.injectStyles && Array.isArray(this.injectStyles) ? this.injectStyles : [])].join('\n'); + } + cssLinks() { + return this.injectStylesUrls || []; + } + calcSlideSlots() { + const currentSideSlots = this.slideSlots || 0; + // slide slots + const slideSlotChildren = [...this.querySelectorAll(`[slot^=slide-]`)].map(child => { + return parseInt(child.getAttribute('slot').split('slide-')[1], 10); + }); + this.slideSlots = slideSlotChildren.length ? Math.max(...slideSlotChildren) + 1 : 0; + if (!this.rendered) return; + if (this.slideSlots > currentSideSlots) { + for (let i = currentSideSlots; i < this.slideSlots; i += 1) { + const slideEl = document.createElement('swiper-slide'); + slideEl.setAttribute('part', `slide slide-${i + 1}`); + const slotEl = document.createElement('slot'); + slotEl.setAttribute('name', `slide-${i + 1}`); + slideEl.appendChild(slotEl); + this.shadowRoot.querySelector('.swiper-wrapper').appendChild(slideEl); + } + } else if (this.slideSlots < currentSideSlots) { + const slides = this.swiper.slides; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (i > this.slideSlots) { + slides[i].remove(); + } + } + } + } + render() { + if (this.rendered) return; + this.calcSlideSlots(); + + // local styles + let localStyles = this.cssStyles(); + if (this.slideSlots > 0) { + localStyles = localStyles.replace(/::slotted\(([a-z-0-9.]*)\)/g, '$1'); + } + if (localStyles.length) { + addStyle(this.shadowRoot, localStyles); + } + this.cssLinks().forEach(url => { + const linkExists = this.shadowRoot.querySelector(`link[href="${url}"]`); + if (linkExists) return; + const linkEl = document.createElement('link'); + linkEl.rel = 'stylesheet'; + linkEl.href = url; + this.shadowRoot.appendChild(linkEl); + }); + // prettier-ignore + const el = document.createElement('div'); + el.classList.add('swiper'); + el.part = 'container'; + + // prettier-ignore + el.innerHTML = ` + +
+ + ${Array.from({ + length: this.slideSlots + }).map((_, index) => ` + + + + `).join('')} +
+ + ${needsNavigation(this.passedParams) ? ` +
${this.constructor.prevButtonSvg}
+
${this.constructor.nextButtonSvg}
+ ` : ''} + ${needsPagination(this.passedParams) ? ` +
+ ` : ''} + ${needsScrollbar(this.passedParams) ? ` +
+ ` : ''} + `; + this.shadowRoot.appendChild(el); + this.rendered = true; + } + initialize() { + var _this = this; + if (this.initialized) return; + this.initialized = true; + const { + params: swiperParams, + passedParams + } = getParams(this); + this.swiperParams = swiperParams; + this.passedParams = passedParams; + delete this.swiperParams.init; + this.render(); + + // eslint-disable-next-line + this.swiper = new Swiper(this.shadowRoot.querySelector('.swiper'), { + ...(swiperParams.virtual ? {} : { + observer: true + }), + ...swiperParams, + touchEventsTarget: 'container', + onAny: function (name) { + if (name === 'observerUpdate') { + _this.calcSlideSlots(); + } + const eventName = swiperParams.eventsPrefix ? `${swiperParams.eventsPrefix}${name.toLowerCase()}` : name.toLowerCase(); + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + const event = new CustomEvent(eventName, { + detail: args, + bubbles: name !== 'hashChange', + cancelable: true + }); + _this.dispatchEvent(event); + } + }); + } + connectedCallback() { + if (this.initialized && this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.init === false || this.getAttribute('init') === 'false') { + return; + } + this.initialize(); + } + disconnectedCallback() { + if (this.nested && this.closest('swiper-slide') && this.closest('swiper-slide').swiperLoopMoveDOM) { + return; + } + if (this.swiper && this.swiper.destroy) { + this.swiper.destroy(); + } + this.initialized = false; + } + updateSwiperOnPropChange(propName, propValue) { + const { + params: swiperParams, + passedParams + } = getParams(this, propName, propValue); + this.passedParams = passedParams; + this.swiperParams = swiperParams; + if (this.swiper && this.swiper.params[propName] === propValue) { + return; + } + updateSwiper({ + swiper: this.swiper, + passedParams: this.passedParams, + changedParams: [attrToProp(propName)], + ...(propName === 'navigation' && passedParams[propName] ? { + prevEl: '.swiper-button-prev', + nextEl: '.swiper-button-next' + } : {}), + ...(propName === 'pagination' && passedParams[propName] ? { + paginationEl: '.swiper-pagination' + } : {}), + ...(propName === 'scrollbar' && passedParams[propName] ? { + scrollbarEl: '.swiper-scrollbar' + } : {}) + }); + } + attributeChangedCallback(attr, prevValue, newValue) { + if (!this.initialized) return; + if (prevValue === 'true' && newValue === null) { + newValue = false; + } + this.updateSwiperOnPropChange(attr, newValue); + } + static get observedAttributes() { + const attrs = paramsList.filter(param => param.includes('_')).map(param => param.replace(/[A-Z]/g, v => `-${v}`).replace('_', '').toLowerCase()); + return attrs; + } +} +paramsList.forEach(paramName => { + if (paramName === 'init') return; + paramName = paramName.replace('_', ''); + Object.defineProperty(SwiperContainer.prototype, paramName, { + configurable: true, + get() { + return (this.passedParams || {})[paramName]; + }, + set(value) { + if (!this.passedParams) this.passedParams = {}; + this.passedParams[paramName] = value; + if (!this.initialized) return; + this.updateSwiperOnPropChange(paramName, value); + } + }); +}); +class SwiperSlide extends ClassToExtend { + constructor() { + super(); + this.attachShadow({ + mode: 'open' + }); + } + render() { + const lazy = this.lazy || this.getAttribute('lazy') === '' || this.getAttribute('lazy') === 'true'; + addStyle(this.shadowRoot, SwiperSlideCSS); + this.shadowRoot.appendChild(document.createElement('slot')); + if (lazy) { + const lazyDiv = document.createElement('div'); + lazyDiv.classList.add('swiper-lazy-preloader'); + lazyDiv.part.add('preloader'); + this.shadowRoot.appendChild(lazyDiv); + } + } + initialize() { + this.render(); + } + connectedCallback() { + this.initialize(); + } +} + +// eslint-disable-next-line +const register = () => { + if (typeof window === 'undefined') return; + if (!window.customElements.get('swiper-container')) window.customElements.define('swiper-container', SwiperContainer); + if (!window.customElements.get('swiper-slide')) window.customElements.define('swiper-slide', SwiperSlide); +}; +if (typeof window !== 'undefined') { + window.SwiperElementRegisterParams = params => { + paramsList.push(...params); + }; +} + +export { SwiperContainer, SwiperSlide, register }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-react.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-react.d.ts new file mode 100644 index 0000000..a5d3e60 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-react.d.ts @@ -0,0 +1,501 @@ +import * as React from 'react'; + +import type { SwiperOptions, Swiper as SwiperClass } from './types/index.d.ts'; + +type SwiperProps = Omit< + React.HTMLAttributes, + | 'onProgress' + | 'onClick' + | 'onTouchEnd' + | 'onTouchMove' + | 'onTouchStart' + | 'onTransitionEnd' + | 'onKeyPress' + | 'onDoubleClick' + | 'onScroll' + | 'onResize' +> & + SwiperOptions & { + /** + * Swiper container tag + * + * @default 'div' + */ + tag?: string; + + /** + * Swiper wrapper tag + * + * @default 'div' + */ + wrapperTag?: string; + + /** + * Get Swiper instance + */ + onSwiper?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in when autoplay started + */ + onAutoplayStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + onAutoplayStop?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause + */ + onAutoplayPause?: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume + */ + onAutoplayResume?: (swiper: SwiperClass) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + onAutoplayTimeLeft?: (swiper: SwiperClass, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + onAutoplay?: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + onHashChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + onHashSet?: (swiper: SwiperClass) => void;/** + * Event will be fired on key press + */ + onKeyPress?: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired on mousewheel scroll + */ + onScroll?: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired after pagination rendered + */ + onPaginationRender?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + onPaginationUpdate?: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + onPaginationHide?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + onPaginationShow?: (swiper: SwiperClass) => void;/** + * Event will be fired on navigation hide + */ + onNavigationHide?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + onNavigationShow?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + onNavigationPrev?: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + onNavigationNext?: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + onScrollbarDragStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + onScrollbarDragMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + onScrollbarDragEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on zoom change + */ + onZoomChange?: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + onInit?: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + onBeforeDestroy?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + onSlidesUpdated?: (swiper: SwiperClass) => void; + /** + * Event will be fired when currently active slide is changed + */ + onSlideChange?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + onSlideChangeTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + onSlideChangeTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + onSlideNextTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + onSlideNextTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + onSlidePrevTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + onSlidePrevTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + onTransitionStart?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + onTransitionEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + onTouchStart?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + onTouchMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + onTouchMoveOpposite?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + onSliderMove?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + onTouchEnd?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + onClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + onTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + onDoubleTap?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + onProgress?: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + onReachBeginning?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + onReachEnd?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + onToEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + onFromEdge?: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + onSetTranslate?: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + onSetTransition?: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + onResize?: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + onObserverUpdate?: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + onBeforeLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + onLoopFix?: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + onBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + onActiveIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + onSnapIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + onRealIndexChange?: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + onAfterInit?: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + onBeforeInit?: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + onBeforeResize?: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + onBeforeSlideChangeStart?: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + onBeforeTransitionStart?: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + onChangeDirection?: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + onDoubleClick?: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + onDestroy?: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + onMomentumBounce?: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + onOrientationchange?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + onSlideResetTransitionStart?: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + onSlideResetTransitionEnd?: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + onSliderFirstMove?: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + onSlidesLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + onSlidesGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + onSnapGridLengthChange?: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + onUpdate?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + onLock?: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + onUnlock?: (swiper: SwiperClass) => void; + + }; + +interface SlideData { + isActive: boolean; + isVisible: boolean; + isPrev: boolean; + isNext: boolean; +} + +type SwiperSlideProps = Omit, 'children'> & { + /** + * Slide tag + * + * @default 'div' + */ + tag?: string; + + /** + * Enables additional wrapper required for zoom mode + * + * @default false + */ + zoom?: boolean; + + /** + * Adds lazy preloader to the slide + * + * @default false + */ + lazy?: boolean; + + /** + * Slide's index in slides array/collection + * + * @default false + */ + virtualIndex?: number; + + /** + * Slide's child element or render function + * + * @default undefined + */ + children?: React.ReactNode | ((slideData: SlideData) => React.ReactNode); +}; + +interface SwiperRef extends React.HTMLAttributes { + swiper: SwiperClass; +} + +declare const Swiper: React.FunctionComponent< + React.RefAttributes & React.PropsWithChildren +>; +declare const SwiperSlide: React.FunctionComponent; + +declare const useSwiper: () => SwiperClass; +declare const useSwiperSlide: () => SlideData; + +export { + Swiper, + SwiperSlide, + SwiperProps, + SwiperSlideProps, + SwiperRef, + useSwiper, + useSwiperSlide, + SwiperClass, +}; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-react.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-react.mjs new file mode 100644 index 0000000..a7c4007 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-react.mjs @@ -0,0 +1,394 @@ +/** + * Swiper React 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import React, { useEffect, useLayoutEffect, useContext, createContext, forwardRef, useState, useRef } from 'react'; +import { S as Swiper$1 } from './shared/swiper-core.mjs'; +import { g as getParams, m as mountSwiper, a as getChangedParams, u as updateOnVirtualData } from './shared/update-on-virtual-data.mjs'; +import { d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination, e as extend, u as updateSwiper } from './shared/update-swiper.mjs'; + +function _extends() { + _extends = Object.assign ? Object.assign.bind() : function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + return target; + }; + return _extends.apply(this, arguments); +} + +function isChildSwiperSlide(child) { + return child.type && child.type.displayName && child.type.displayName.includes('SwiperSlide'); +} +function processChildren(c) { + const slides = []; + React.Children.toArray(c).forEach(child => { + if (isChildSwiperSlide(child)) { + slides.push(child); + } else if (child.props && child.props.children) { + processChildren(child.props.children).forEach(slide => slides.push(slide)); + } + }); + return slides; +} +function getChildren(c) { + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + React.Children.toArray(c).forEach(child => { + if (isChildSwiperSlide(child)) { + slides.push(child); + } else if (child.props && child.props.slot && slots[child.props.slot]) { + slots[child.props.slot].push(child); + } else if (child.props && child.props.children) { + const foundSlides = processChildren(child.props.children); + if (foundSlides.length > 0) { + foundSlides.forEach(slide => slides.push(slide)); + } else { + slots['container-end'].push(child); + } + } else { + slots['container-end'].push(child); + } + }); + return { + slides, + slots + }; +} + +function renderVirtual(swiper, slides, virtualData) { + if (!virtualData) return null; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + const style = swiper.isHorizontal() ? { + [swiper.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + const { + from, + to + } = virtualData; + const loopFrom = swiper.params.loop ? -slides.length : 0; + const loopTo = swiper.params.loop ? slides.length * 2 : slides.length; + const slidesToRender = []; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to) { + slidesToRender.push(slides[getSlideIndex(i)]); + } + } + return slidesToRender.map((child, index) => { + return /*#__PURE__*/React.cloneElement(child, { + swiper, + style, + key: child.props.virtualIndex || child.key || `slide-${index}` + }); + }); +} + +function useIsomorphicLayoutEffect(callback, deps) { + // eslint-disable-next-line + if (typeof window === 'undefined') return useEffect(callback, deps); + return useLayoutEffect(callback, deps); +} + +const SwiperSlideContext = /*#__PURE__*/createContext(null); +const useSwiperSlide = () => { + return useContext(SwiperSlideContext); +}; +const SwiperContext = /*#__PURE__*/createContext(null); +const useSwiper = () => { + return useContext(SwiperContext); +}; + +const Swiper = /*#__PURE__*/forwardRef(function (_temp, externalElRef) { + let { + className, + tag: Tag = 'div', + wrapperTag: WrapperTag = 'div', + children, + onSwiper, + ...rest + } = _temp === void 0 ? {} : _temp; + let eventsAssigned = false; + const [containerClasses, setContainerClasses] = useState('swiper'); + const [virtualData, setVirtualData] = useState(null); + const [breakpointChanged, setBreakpointChanged] = useState(false); + const initializedRef = useRef(false); + const swiperElRef = useRef(null); + const swiperRef = useRef(null); + const oldPassedParamsRef = useRef(null); + const oldSlides = useRef(null); + const nextElRef = useRef(null); + const prevElRef = useRef(null); + const paginationElRef = useRef(null); + const scrollbarElRef = useRef(null); + const { + params: swiperParams, + passedParams, + rest: restProps, + events + } = getParams(rest); + const { + slides, + slots + } = getChildren(children); + const onBeforeBreakpoint = () => { + setBreakpointChanged(!breakpointChanged); + }; + Object.assign(swiperParams.on, { + _containerClasses(swiper, classes) { + setContainerClasses(classes); + } + }); + const initSwiper = () => { + // init swiper + Object.assign(swiperParams.on, events); + eventsAssigned = true; + const passParams = { + ...swiperParams + }; + delete passParams.wrapperClass; + swiperRef.current = new Swiper$1(passParams); + if (swiperRef.current.virtual && swiperRef.current.params.virtual.enabled) { + swiperRef.current.virtual.slides = slides; + const extendWith = { + cache: false, + slides, + renderExternal: setVirtualData, + renderExternalUpdate: false + }; + extend(swiperRef.current.params.virtual, extendWith); + extend(swiperRef.current.originalParams.virtual, extendWith); + } + }; + if (!swiperElRef.current) { + initSwiper(); + } + + // Listen for breakpoints change + if (swiperRef.current) { + swiperRef.current.on('_beforeBreakpoint', onBeforeBreakpoint); + } + const attachEvents = () => { + if (eventsAssigned || !events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.on(eventName, events[eventName]); + }); + }; + const detachEvents = () => { + if (!events || !swiperRef.current) return; + Object.keys(events).forEach(eventName => { + swiperRef.current.off(eventName, events[eventName]); + }); + }; + useEffect(() => { + return () => { + if (swiperRef.current) swiperRef.current.off('_beforeBreakpoint', onBeforeBreakpoint); + }; + }); + + // set initialized flag + useEffect(() => { + if (!initializedRef.current && swiperRef.current) { + swiperRef.current.emitSlidesClasses(); + initializedRef.current = true; + } + }); + + // mount swiper + useIsomorphicLayoutEffect(() => { + if (externalElRef) { + externalElRef.current = swiperElRef.current; + } + if (!swiperElRef.current) return; + if (swiperRef.current.destroyed) { + initSwiper(); + } + mountSwiper({ + el: swiperElRef.current, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + paginationEl: paginationElRef.current, + scrollbarEl: scrollbarElRef.current, + swiper: swiperRef.current + }, swiperParams); + if (onSwiper && !swiperRef.current.destroyed) onSwiper(swiperRef.current); + // eslint-disable-next-line + return () => { + if (swiperRef.current && !swiperRef.current.destroyed) { + swiperRef.current.destroy(true, false); + } + }; + }, []); + + // watch for params change + useIsomorphicLayoutEffect(() => { + attachEvents(); + const changedParams = getChangedParams(passedParams, oldPassedParamsRef.current, slides, oldSlides.current, c => c.key); + oldPassedParamsRef.current = passedParams; + oldSlides.current = slides; + if (changedParams.length && swiperRef.current && !swiperRef.current.destroyed) { + updateSwiper({ + swiper: swiperRef.current, + slides, + passedParams, + changedParams, + nextEl: nextElRef.current, + prevEl: prevElRef.current, + scrollbarEl: scrollbarElRef.current, + paginationEl: paginationElRef.current + }); + } + return () => { + detachEvents(); + }; + }); + + // update on virtual update + useIsomorphicLayoutEffect(() => { + updateOnVirtualData(swiperRef.current); + }, [virtualData]); + + // bypass swiper instance to slides + function renderSlides() { + if (swiperParams.virtual) { + return renderVirtual(swiperRef.current, slides, virtualData); + } + return slides.map((child, index) => { + return /*#__PURE__*/React.cloneElement(child, { + swiper: swiperRef.current, + swiperSlideIndex: index + }); + }); + } + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: swiperElRef, + className: uniqueClasses(`${containerClasses}${className ? ` ${className}` : ''}`) + }, restProps), /*#__PURE__*/React.createElement(SwiperContext.Provider, { + value: swiperRef.current + }, slots['container-start'], /*#__PURE__*/React.createElement(WrapperTag, { + className: wrapperClass(swiperParams.wrapperClass) + }, slots['wrapper-start'], renderSlides(), slots['wrapper-end']), needsNavigation(swiperParams) && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", { + ref: prevElRef, + className: "swiper-button-prev" + }), /*#__PURE__*/React.createElement("div", { + ref: nextElRef, + className: "swiper-button-next" + })), needsScrollbar(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: scrollbarElRef, + className: "swiper-scrollbar" + }), needsPagination(swiperParams) && /*#__PURE__*/React.createElement("div", { + ref: paginationElRef, + className: "swiper-pagination" + }), slots['container-end'])); +}); +Swiper.displayName = 'Swiper'; + +const SwiperSlide = /*#__PURE__*/forwardRef(function (_temp, externalRef) { + let { + tag: Tag = 'div', + children, + className = '', + swiper, + zoom, + lazy, + virtualIndex, + swiperSlideIndex, + ...rest + } = _temp === void 0 ? {} : _temp; + const slideElRef = useRef(null); + const [slideClasses, setSlideClasses] = useState('swiper-slide'); + const [lazyLoaded, setLazyLoaded] = useState(false); + function updateClasses(_s, el, classNames) { + if (el === slideElRef.current) { + setSlideClasses(classNames); + } + } + useIsomorphicLayoutEffect(() => { + if (typeof swiperSlideIndex !== 'undefined') { + slideElRef.current.swiperSlideIndex = swiperSlideIndex; + } + if (externalRef) { + externalRef.current = slideElRef.current; + } + if (!slideElRef.current || !swiper) { + return; + } + if (swiper.destroyed) { + if (slideClasses !== 'swiper-slide') { + setSlideClasses('swiper-slide'); + } + return; + } + swiper.on('_slideClass', updateClasses); + // eslint-disable-next-line + return () => { + if (!swiper) return; + swiper.off('_slideClass', updateClasses); + }; + }); + useIsomorphicLayoutEffect(() => { + if (swiper && slideElRef.current && !swiper.destroyed) { + setSlideClasses(swiper.getSlideClasses(slideElRef.current)); + } + }, [swiper]); + const slideData = { + isActive: slideClasses.indexOf('swiper-slide-active') >= 0, + isVisible: slideClasses.indexOf('swiper-slide-visible') >= 0, + isPrev: slideClasses.indexOf('swiper-slide-prev') >= 0, + isNext: slideClasses.indexOf('swiper-slide-next') >= 0 + }; + const renderChildren = () => { + return typeof children === 'function' ? children(slideData) : children; + }; + const onLoad = () => { + setLazyLoaded(true); + }; + return /*#__PURE__*/React.createElement(Tag, _extends({ + ref: slideElRef, + className: uniqueClasses(`${slideClasses}${className ? ` ${className}` : ''}`), + "data-swiper-slide-index": virtualIndex, + onLoad: onLoad + }, rest), zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, { + value: slideData + }, /*#__PURE__*/React.createElement("div", { + className: "swiper-zoom-container", + "data-swiper-zoom": typeof zoom === 'number' ? zoom : undefined + }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", { + className: "swiper-lazy-preloader" + }))), !zoom && /*#__PURE__*/React.createElement(SwiperSlideContext.Provider, { + value: slideData + }, renderChildren(), lazy && !lazyLoaded && /*#__PURE__*/React.createElement("div", { + className: "swiper-lazy-preloader" + }))); +}); +SwiperSlide.displayName = 'SwiperSlide'; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-vars.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-vars.less new file mode 100644 index 0000000..a4db17f --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-vars.less @@ -0,0 +1 @@ +@themeColor: #007aff; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-vars.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-vars.scss new file mode 100644 index 0000000..65ccf42 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-vars.scss @@ -0,0 +1 @@ +$themeColor: #007aff !default; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-vue.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-vue.d.ts new file mode 100644 index 0000000..ce28455 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-vue.d.ts @@ -0,0 +1,866 @@ +import type { + A11yOptions, + AutoplayOptions, + ControllerOptions, + CoverflowEffectOptions, + CubeEffectOptions, + FadeEffectOptions, + FlipEffectOptions, + CreativeEffectOptions, + CardsEffectOptions, + HashNavigationOptions, + HistoryOptions, + KeyboardOptions, + MousewheelOptions, + NavigationOptions, + PaginationOptions, + ParallaxOptions, + ScrollbarOptions, + ThumbsOptions, + VirtualOptions, + ZoomOptions, + FreeModeOptions, + GridOptions, +} from './types/index.d.ts'; +import { ComponentOptionsMixin, DefineComponent, PropType, Ref } from 'vue'; +import type { SwiperOptions, Swiper as SwiperClass } from './types/index.d.ts'; + +declare const Swiper: DefineComponent< + { + tag: { + type: StringConstructor; + default: string; + }; + wrapperTag: { + type: StringConstructor; + default: string; + }; + modules: { + type: ArrayConstructor; + default: undefined; + }; + init: { + type: BooleanConstructor; + default: undefined; + }; + direction: { + type: PropType; + default: SwiperOptions['direction']; + }; + oneWayMovement: { + type: PropType; + default: SwiperOptions['oneWayMovement']; + }; + swiperElementNodeName: { + type: PropType; + default: SwiperOptions['swiperElementNodeName']; + }; + touchEventsTarget: { + type: PropType; + default: undefined; + }; + initialSlide: { + type: NumberConstructor; + default: undefined; + }; + speed: { type: NumberConstructor; default: undefined }; + cssMode: { type: BooleanConstructor; default: undefined }; + updateOnWindowResize: { + type: BooleanConstructor; + default: undefined; + }; + resizeObserver: { + type: BooleanConstructor; + default: undefined; + }; + nested: { type: BooleanConstructor; default: undefined }; + focusableElements: { + type: StringConstructor; + default: undefined; + }; + width: { type: NumberConstructor; default: undefined }; + height: { type: NumberConstructor; default: undefined }; + preventInteractionOnTransition: { + type: BooleanConstructor; + default: undefined; + }; + userAgent: { type: StringConstructor; default: undefined }; + url: { type: StringConstructor; default: undefined }; + edgeSwipeDetection: { + type: BooleanConstructor | StringConstructor; + default: undefined; + }; + edgeSwipeThreshold: { + type: NumberConstructor; + default: undefined; + }; + autoHeight: { + type: BooleanConstructor; + default: undefined; + }; + setWrapperSize: { + type: BooleanConstructor; + default: undefined; + }; + virtualTranslate: { + type: BooleanConstructor; + default: undefined; + }; + effect: { + type: PropType; + default: undefined; + }; + breakpoints: { + type: PropType; + default: undefined; + }; + spaceBetween: { + type: PropType; + default: undefined; + }; + slidesPerView: { + type: PropType; + default: undefined; + }; + maxBackfaceHiddenSlides: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroup: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupSkip: { + type: NumberConstructor; + default: undefined; + }; + slidesPerGroupAuto: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlides: { + type: BooleanConstructor; + default: undefined; + }; + centeredSlidesBounds: { + type: BooleanConstructor; + default: undefined; + }; + slidesOffsetBefore: { + type: NumberConstructor; + default: undefined; + }; + slidesOffsetAfter: { + type: NumberConstructor; + default: undefined; + }; + normalizeSlideIndex: { + type: BooleanConstructor; + default: undefined; + }; + centerInsufficientSlides: { + type: BooleanConstructor; + default: undefined; + }; + watchOverflow: { + type: BooleanConstructor; + default: undefined; + }; + roundLengths: { + type: BooleanConstructor; + default: undefined; + }; + touchRatio: { + type: NumberConstructor; + default: undefined; + }; + touchAngle: { + type: NumberConstructor; + default: undefined; + }; + simulateTouch: { + type: BooleanConstructor; + default: undefined; + }; + shortSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipes: { + type: BooleanConstructor; + default: undefined; + }; + longSwipesRatio: { + type: NumberConstructor; + default: undefined; + }; + longSwipesMs: { + type: NumberConstructor; + default: undefined; + }; + followFinger: { + type: BooleanConstructor; + default: undefined; + }; + allowTouchMove: { + type: BooleanConstructor; + default: undefined; + }; + threshold: { type: NumberConstructor; default: undefined }; + touchMoveStopPropagation: { + type: BooleanConstructor; + default: undefined; + }; + touchStartPreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchStartForcePreventDefault: { + type: BooleanConstructor; + default: undefined; + }; + touchReleaseOnEdges: { + type: BooleanConstructor; + default: undefined; + }; + uniqueNavElements: { + type: BooleanConstructor; + default: undefined; + }; + resistance: { + type: BooleanConstructor; + default: undefined; + }; + resistanceRatio: { + type: NumberConstructor; + default: undefined; + }; + watchSlidesProgress: { + type: BooleanConstructor; + default: undefined; + }; + grabCursor: { + type: BooleanConstructor; + default: undefined; + }; + preventClicks: { + type: BooleanConstructor; + default: undefined; + }; + preventClicksPropagation: { + type: BooleanConstructor; + default: undefined; + }; + slideToClickedSlide: { + type: BooleanConstructor; + default: undefined; + }; + loop: { type: BooleanConstructor; default: undefined }; + loopAddBlankSlides: { type: BooleanConstructor; default: undefined }; + loopAdditionalSlides: { + type: NumberConstructor; + default: undefined; + }; + loopPreventsSliding: { type: BooleanConstructor; default: undefined }; + rewind: { type: BooleanConstructor; default: undefined }; + allowSlidePrev: { + type: BooleanConstructor; + default: undefined; + }; + allowSlideNext: { + type: BooleanConstructor; + default: undefined; + }; + swipeHandler: { + type: BooleanConstructor; + default: undefined; + }; + noSwiping: { + type: BooleanConstructor; + default: undefined; + }; + noSwipingClass: { + type: StringConstructor; + default: undefined; + }; + noSwipingSelector: { + type: StringConstructor; + default: undefined; + }; + passiveListeners: { + type: BooleanConstructor; + default: undefined; + }; + containerModifierClass: { + type: StringConstructor; + default: undefined; + }; + slideClass: { + type: StringConstructor; + default: undefined; + }; + slideActiveClass: { + type: StringConstructor; + default: undefined; + }; + slideVisibleClass: { + type: StringConstructor; + default: undefined; + }; + slideFullyVisibleClass: { + type: StringConstructor; + default: undefined; + }; + slideBlankClass: { + type: StringConstructor; + default: undefined; + }; + slideNextClass: { + type: StringConstructor; + default: undefined; + }; + slidePrevClass: { + type: StringConstructor; + default: undefined; + }; + wrapperClass: { + type: StringConstructor; + default: undefined; + }; + lazyPreloaderClass: { + type: StringConstructor; + default: undefined; + }; + lazyPreloadPrevNext: { + type: NumberConstructor; + default: undefined; + }; + runCallbacksOnInit: { + type: BooleanConstructor; + default: undefined; + }; + observer: { type: BooleanConstructor; default: undefined }; + observeParents: { + type: BooleanConstructor; + default: undefined; + }; + observeSlideChildren: { + type: BooleanConstructor; + default: undefined; + }; + a11y: { + type: PropType; + default: undefined; + }; + autoplay: { + type: PropType; + default: undefined; + }; + controller: { + type: PropType; + default: undefined; + }; + coverflowEffect: { + type: PropType; + default: undefined; + }; + cubeEffect: { + type: PropType; + default: undefined; + }; + fadeEffect: { + type: PropType; + default: undefined; + }; + flipEffect: { + type: PropType; + default: undefined; + }; + creativeEffect: { + type: PropType; + default: undefined; + }; + cardsEffect: { + type: PropType; + default: undefined; + }; + hashNavigation: { + type: PropType; + default: undefined; + }; + history: { + type: PropType; + default: undefined; + }; + keyboard: { + type: PropType; + default: undefined; + }; + mousewheel: { + type: PropType; + default: undefined; + }; + navigation: { + type: PropType; + default: undefined; + }; + pagination: { + type: PropType; + default: undefined; + }; + parallax: { + type: PropType; + default: undefined; + }; + scrollbar: { + type: PropType; + default: undefined; + }; + thumbs: { type: PropType; default: undefined }; + virtual: { + type: PropType; + default: undefined; + }; + zoom: { + type: PropType; + default: undefined; + }; + freeMode: { + type: PropType; + default: undefined; + }; + grid: { + type: PropType; + default: undefined; + }; + }, + () => JSX.Element, + unknown, + {}, + {}, + ComponentOptionsMixin, + ComponentOptionsMixin, + { + swiper: (swiper: SwiperClass) => void; + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: SwiperClass) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay pause + */ + autoplayPause: (swiper: SwiperClass) => void; + /** + * Event will be fired on autoplay resume + */ + autoplayResume: (swiper: SwiperClass) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplayTimeLeft: (swiper: SwiperClass, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: SwiperClass) => void;/** + * Event will be fired on window hash change + */ + hashChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: SwiperClass) => void;/** + * Event will be fired on key press + */ + keyPress: (swiper: SwiperClass, keyCode: string) => void;/** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: SwiperClass, event: WheelEvent) => void;/** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: SwiperClass, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: SwiperClass) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: SwiperClass) => void;/** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: SwiperClass) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: SwiperClass) => void;/** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void;/** + * Event will be fired on zoom change + */ + zoomChange: (swiper: SwiperClass, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; + + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: SwiperClass) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: SwiperClass) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesUpdated: (swiper: SwiperClass) => void; + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: SwiperClass) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: SwiperClass) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchStart: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchMoveOpposite: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + sliderMove: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchEnd: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubleTap: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: SwiperClass, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: SwiperClass) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: SwiperClass, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: SwiperClass, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: SwiperClass) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: SwiperClass) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: SwiperClass) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint: (swiper: SwiperClass, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses: (swiper: SwiperClass, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass: (swiper: SwiperClass, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses: ( + swiper: SwiperClass, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper: (swiper: SwiperClass) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease: (swiper: SwiperClass) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: SwiperClass) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: SwiperClass) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: SwiperClass) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: SwiperClass) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: SwiperClass) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: SwiperClass, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: SwiperClass) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: SwiperClass, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: SwiperClass) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: SwiperClass) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: SwiperClass) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: SwiperClass) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: SwiperClass) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: SwiperClass, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: SwiperClass) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: SwiperClass) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: SwiperClass) => void; + + } +>; + +declare const SwiperSlide: DefineComponent<{ + tag: { + type: StringConstructor; + default: string; + }; + swiperRef: { type: PropType; required: false }; + lazy: { type: BooleanConstructor; default: false }; + zoom: { type: BooleanConstructor; default: undefined }; + virtualIndex: { + type: StringConstructor | NumberConstructor; + default: undefined; + }; +}>; + +declare const useSwiper: () => Ref; +declare const useSwiperSlide: () => Ref<{ + isActive: boolean; + isVisible: boolean; + isPrev: boolean; + isNext: boolean; +}>; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-vue.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-vue.mjs new file mode 100644 index 0000000..cf5d478 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper-vue.mjs @@ -0,0 +1,830 @@ +/** + * Swiper Vue 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +import { h, ref, onUpdated, provide, watch, nextTick, onMounted, onBeforeUnmount, onBeforeUpdate, computed, inject } from 'vue'; +import { S as Swiper$1 } from './shared/swiper-core.mjs'; +import { g as getParams, a as getChangedParams, u as updateOnVirtualData, m as mountSwiper } from './shared/update-on-virtual-data.mjs'; +import { e as extend, u as updateSwiper, d as uniqueClasses, w as wrapperClass, n as needsNavigation, b as needsScrollbar, a as needsPagination } from './shared/update-swiper.mjs'; + +function getChildren(originalSlots, slidesRef, oldSlidesRef) { + if (originalSlots === void 0) { + originalSlots = {}; + } + const slides = []; + const slots = { + 'container-start': [], + 'container-end': [], + 'wrapper-start': [], + 'wrapper-end': [] + }; + const getSlidesFromElements = (els, slotName) => { + if (!Array.isArray(els)) { + return; + } + els.forEach(vnode => { + const isFragment = typeof vnode.type === 'symbol'; + if (slotName === 'default') slotName = 'container-end'; + if (isFragment && vnode.children) { + getSlidesFromElements(vnode.children, slotName); + } else if (vnode.type && (vnode.type.name === 'SwiperSlide' || vnode.type.name === 'AsyncComponentWrapper') || vnode.componentOptions && vnode.componentOptions.tag === 'SwiperSlide') { + slides.push(vnode); + } else if (slots[slotName]) { + slots[slotName].push(vnode); + } + }); + }; + Object.keys(originalSlots).forEach(slotName => { + if (typeof originalSlots[slotName] !== 'function') return; + const els = originalSlots[slotName](); + getSlidesFromElements(els, slotName); + }); + oldSlidesRef.value = slidesRef.value; + slidesRef.value = slides; + return { + slides, + slots + }; +} + +function renderVirtual(swiperRef, slides, virtualData) { + if (!virtualData) return null; + const getSlideIndex = index => { + let slideIndex = index; + if (index < 0) { + slideIndex = slides.length + index; + } else if (slideIndex >= slides.length) { + // eslint-disable-next-line + slideIndex = slideIndex - slides.length; + } + return slideIndex; + }; + const style = swiperRef.value.isHorizontal() ? { + [swiperRef.value.rtlTranslate ? 'right' : 'left']: `${virtualData.offset}px` + } : { + top: `${virtualData.offset}px` + }; + const { + from, + to + } = virtualData; + const loopFrom = swiperRef.value.params.loop ? -slides.length : 0; + const loopTo = swiperRef.value.params.loop ? slides.length * 2 : slides.length; + const slidesToRender = []; + for (let i = loopFrom; i < loopTo; i += 1) { + if (i >= from && i <= to && slidesToRender.length < slides.length) { + slidesToRender.push(slides[getSlideIndex(i)]); + } + } + return slidesToRender.map(slide => { + if (!slide.props) slide.props = {}; + if (!slide.props.style) slide.props.style = {}; + slide.props.swiperRef = swiperRef; + slide.props.style = style; + if (slide.type) { + return h(slide.type, { + ...slide.props + }, slide.children); + } else if (slide.componentOptions) { + return h(slide.componentOptions.Ctor, { + ...slide.props + }, slide.componentOptions.children); + } + }); +} + +const Swiper = { + name: 'Swiper', + props: { + tag: { + type: String, + default: 'div' + }, + wrapperTag: { + type: String, + default: 'div' + }, + modules: { + type: Array, + default: undefined + }, + init: { + type: Boolean, + default: undefined + }, + direction: { + type: String, + default: undefined + }, + oneWayMovement: { + type: Boolean, + default: undefined + }, + swiperElementNodeName: { + type: String, + default: 'SWIPER-CONTAINER' + }, + touchEventsTarget: { + type: String, + default: undefined + }, + initialSlide: { + type: Number, + default: undefined + }, + speed: { + type: Number, + default: undefined + }, + cssMode: { + type: Boolean, + default: undefined + }, + updateOnWindowResize: { + type: Boolean, + default: undefined + }, + resizeObserver: { + type: Boolean, + default: undefined + }, + nested: { + type: Boolean, + default: undefined + }, + focusableElements: { + type: String, + default: undefined + }, + width: { + type: Number, + default: undefined + }, + height: { + type: Number, + default: undefined + }, + preventInteractionOnTransition: { + type: Boolean, + default: undefined + }, + userAgent: { + type: String, + default: undefined + }, + url: { + type: String, + default: undefined + }, + edgeSwipeDetection: { + type: [Boolean, String], + default: undefined + }, + edgeSwipeThreshold: { + type: Number, + default: undefined + }, + autoHeight: { + type: Boolean, + default: undefined + }, + setWrapperSize: { + type: Boolean, + default: undefined + }, + virtualTranslate: { + type: Boolean, + default: undefined + }, + effect: { + type: String, + default: undefined + }, + breakpoints: { + type: Object, + default: undefined + }, + breakpointsBase: { + type: String, + default: undefined + }, + spaceBetween: { + type: [Number, String], + default: undefined + }, + slidesPerView: { + type: [Number, String], + default: undefined + }, + maxBackfaceHiddenSlides: { + type: Number, + default: undefined + }, + slidesPerGroup: { + type: Number, + default: undefined + }, + slidesPerGroupSkip: { + type: Number, + default: undefined + }, + slidesPerGroupAuto: { + type: Boolean, + default: undefined + }, + centeredSlides: { + type: Boolean, + default: undefined + }, + centeredSlidesBounds: { + type: Boolean, + default: undefined + }, + slidesOffsetBefore: { + type: Number, + default: undefined + }, + slidesOffsetAfter: { + type: Number, + default: undefined + }, + normalizeSlideIndex: { + type: Boolean, + default: undefined + }, + centerInsufficientSlides: { + type: Boolean, + default: undefined + }, + watchOverflow: { + type: Boolean, + default: undefined + }, + roundLengths: { + type: Boolean, + default: undefined + }, + touchRatio: { + type: Number, + default: undefined + }, + touchAngle: { + type: Number, + default: undefined + }, + simulateTouch: { + type: Boolean, + default: undefined + }, + shortSwipes: { + type: Boolean, + default: undefined + }, + longSwipes: { + type: Boolean, + default: undefined + }, + longSwipesRatio: { + type: Number, + default: undefined + }, + longSwipesMs: { + type: Number, + default: undefined + }, + followFinger: { + type: Boolean, + default: undefined + }, + allowTouchMove: { + type: Boolean, + default: undefined + }, + threshold: { + type: Number, + default: undefined + }, + touchMoveStopPropagation: { + type: Boolean, + default: undefined + }, + touchStartPreventDefault: { + type: Boolean, + default: undefined + }, + touchStartForcePreventDefault: { + type: Boolean, + default: undefined + }, + touchReleaseOnEdges: { + type: Boolean, + default: undefined + }, + uniqueNavElements: { + type: Boolean, + default: undefined + }, + resistance: { + type: Boolean, + default: undefined + }, + resistanceRatio: { + type: Number, + default: undefined + }, + watchSlidesProgress: { + type: Boolean, + default: undefined + }, + grabCursor: { + type: Boolean, + default: undefined + }, + preventClicks: { + type: Boolean, + default: undefined + }, + preventClicksPropagation: { + type: Boolean, + default: undefined + }, + slideToClickedSlide: { + type: Boolean, + default: undefined + }, + loop: { + type: Boolean, + default: undefined + }, + loopedSlides: { + type: Number, + default: undefined + }, + loopPreventsSliding: { + type: Boolean, + default: undefined + }, + rewind: { + type: Boolean, + default: undefined + }, + allowSlidePrev: { + type: Boolean, + default: undefined + }, + allowSlideNext: { + type: Boolean, + default: undefined + }, + swipeHandler: { + type: Boolean, + default: undefined + }, + noSwiping: { + type: Boolean, + default: undefined + }, + noSwipingClass: { + type: String, + default: undefined + }, + noSwipingSelector: { + type: String, + default: undefined + }, + passiveListeners: { + type: Boolean, + default: undefined + }, + containerModifierClass: { + type: String, + default: undefined + }, + slideClass: { + type: String, + default: undefined + }, + slideActiveClass: { + type: String, + default: undefined + }, + slideVisibleClass: { + type: String, + default: undefined + }, + slideFullyVisibleClass: { + type: String, + default: undefined + }, + slideBlankClass: { + type: String, + default: undefined + }, + slideNextClass: { + type: String, + default: undefined + }, + slidePrevClass: { + type: String, + default: undefined + }, + wrapperClass: { + type: String, + default: undefined + }, + lazyPreloaderClass: { + type: String, + default: undefined + }, + lazyPreloadPrevNext: { + type: Number, + default: undefined + }, + runCallbacksOnInit: { + type: Boolean, + default: undefined + }, + observer: { + type: Boolean, + default: undefined + }, + observeParents: { + type: Boolean, + default: undefined + }, + observeSlideChildren: { + type: Boolean, + default: undefined + }, + a11y: { + type: [Boolean, Object], + default: undefined + }, + autoplay: { + type: [Boolean, Object], + default: undefined + }, + controller: { + type: Object, + default: undefined + }, + coverflowEffect: { + type: Object, + default: undefined + }, + cubeEffect: { + type: Object, + default: undefined + }, + fadeEffect: { + type: Object, + default: undefined + }, + flipEffect: { + type: Object, + default: undefined + }, + creativeEffect: { + type: Object, + default: undefined + }, + cardsEffect: { + type: Object, + default: undefined + }, + hashNavigation: { + type: [Boolean, Object], + default: undefined + }, + history: { + type: [Boolean, Object], + default: undefined + }, + keyboard: { + type: [Boolean, Object], + default: undefined + }, + mousewheel: { + type: [Boolean, Object], + default: undefined + }, + navigation: { + type: [Boolean, Object], + default: undefined + }, + pagination: { + type: [Boolean, Object], + default: undefined + }, + parallax: { + type: [Boolean, Object], + default: undefined + }, + scrollbar: { + type: [Boolean, Object], + default: undefined + }, + thumbs: { + type: Object, + default: undefined + }, + virtual: { + type: [Boolean, Object], + default: undefined + }, + zoom: { + type: [Boolean, Object], + default: undefined + }, + grid: { + type: [Object], + default: undefined + }, + freeMode: { + type: [Boolean, Object], + default: undefined + }, + enabled: { + type: Boolean, + default: undefined + } + }, + emits: ['_beforeBreakpoint', '_containerClasses', '_slideClass', '_slideClasses', '_swiper', '_freeModeNoMomentumRelease', 'activeIndexChange', 'afterInit', 'autoplay', 'autoplayStart', 'autoplayStop', 'autoplayPause', 'autoplayResume', 'autoplayTimeLeft', 'beforeDestroy', 'beforeInit', 'beforeLoopFix', 'beforeResize', 'beforeSlideChangeStart', 'beforeTransitionStart', 'breakpoint', 'changeDirection', 'click', 'disable', 'doubleTap', 'doubleClick', 'destroy', 'enable', 'fromEdge', 'hashChange', 'hashSet', 'init', 'keyPress', 'lock', 'loopFix', 'momentumBounce', 'navigationHide', 'navigationShow', 'navigationPrev', 'navigationNext', 'observerUpdate', 'orientationchange', 'paginationHide', 'paginationRender', 'paginationShow', 'paginationUpdate', 'progress', 'reachBeginning', 'reachEnd', 'realIndexChange', 'resize', 'scroll', 'scrollbarDragEnd', 'scrollbarDragMove', 'scrollbarDragStart', 'setTransition', 'setTranslate', 'slidesUpdated', 'slideChange', 'slideChangeTransitionEnd', 'slideChangeTransitionStart', 'slideNextTransitionEnd', 'slideNextTransitionStart', 'slidePrevTransitionEnd', 'slidePrevTransitionStart', 'slideResetTransitionStart', 'slideResetTransitionEnd', 'sliderMove', 'sliderFirstMove', 'slidesLengthChange', 'slidesGridLengthChange', 'snapGridLengthChange', 'snapIndexChange', 'swiper', 'tap', 'toEdge', 'touchEnd', 'touchMove', 'touchMoveOpposite', 'touchStart', 'transitionEnd', 'transitionStart', 'unlock', 'update', 'virtualUpdate', 'zoomChange'], + setup(props, _ref) { + let { + slots: originalSlots, + emit + } = _ref; + const { + tag: Tag, + wrapperTag: WrapperTag + } = props; + const containerClasses = ref('swiper'); + const virtualData = ref(null); + const breakpointChanged = ref(false); + const initializedRef = ref(false); + const swiperElRef = ref(null); + const swiperRef = ref(null); + const oldPassedParamsRef = ref(null); + const slidesRef = { + value: [] + }; + const oldSlidesRef = { + value: [] + }; + const nextElRef = ref(null); + const prevElRef = ref(null); + const paginationElRef = ref(null); + const scrollbarElRef = ref(null); + const { + params: swiperParams, + passedParams + } = getParams(props, false); + getChildren(originalSlots, slidesRef, oldSlidesRef); + oldPassedParamsRef.value = passedParams; + oldSlidesRef.value = slidesRef.value; + const onBeforeBreakpoint = () => { + getChildren(originalSlots, slidesRef, oldSlidesRef); + breakpointChanged.value = true; + }; + swiperParams.onAny = function (event) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + emit(event, ...args); + }; + Object.assign(swiperParams.on, { + _beforeBreakpoint: onBeforeBreakpoint, + _containerClasses(swiper, classes) { + containerClasses.value = classes; + } + }); + + // init Swiper + const passParams = { + ...swiperParams + }; + delete passParams.wrapperClass; + swiperRef.value = new Swiper$1(passParams); + if (swiperRef.value.virtual && swiperRef.value.params.virtual.enabled) { + swiperRef.value.virtual.slides = slidesRef.value; + const extendWith = { + cache: false, + slides: slidesRef.value, + renderExternal: data => { + virtualData.value = data; + }, + renderExternalUpdate: false + }; + extend(swiperRef.value.params.virtual, extendWith); + extend(swiperRef.value.originalParams.virtual, extendWith); + } + onUpdated(() => { + // set initialized flag + if (!initializedRef.value && swiperRef.value) { + swiperRef.value.emitSlidesClasses(); + initializedRef.value = true; + } + // watch for params change + const { + passedParams: newPassedParams + } = getParams(props, false); + const changedParams = getChangedParams(newPassedParams, oldPassedParamsRef.value, slidesRef.value, oldSlidesRef.value, c => c.props && c.props.key); + oldPassedParamsRef.value = newPassedParams; + if ((changedParams.length || breakpointChanged.value) && swiperRef.value && !swiperRef.value.destroyed) { + updateSwiper({ + swiper: swiperRef.value, + slides: slidesRef.value, + passedParams: newPassedParams, + changedParams, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + scrollbarEl: scrollbarElRef.value, + paginationEl: paginationElRef.value + }); + } + breakpointChanged.value = false; + }); + provide('swiper', swiperRef); + + // update on virtual update + watch(virtualData, () => { + nextTick(() => { + updateOnVirtualData(swiperRef.value); + }); + }); + + // mount swiper + onMounted(() => { + if (!swiperElRef.value) return; + mountSwiper({ + el: swiperElRef.value, + nextEl: nextElRef.value, + prevEl: prevElRef.value, + paginationEl: paginationElRef.value, + scrollbarEl: scrollbarElRef.value, + swiper: swiperRef.value + }, swiperParams); + emit('swiper', swiperRef.value); + }); + onBeforeUnmount(() => { + if (swiperRef.value && !swiperRef.value.destroyed) { + swiperRef.value.destroy(true, false); + } + }); + + // bypass swiper instance to slides + function renderSlides(slides) { + if (swiperParams.virtual) { + return renderVirtual(swiperRef, slides, virtualData.value); + } + slides.forEach((slide, index) => { + if (!slide.props) slide.props = {}; + slide.props.swiperRef = swiperRef; + slide.props.swiperSlideIndex = index; + }); + return slides; + } + return () => { + const { + slides, + slots + } = getChildren(originalSlots, slidesRef, oldSlidesRef); + return h(Tag, { + ref: swiperElRef, + class: uniqueClasses(containerClasses.value) + }, [slots['container-start'], h(WrapperTag, { + class: wrapperClass(swiperParams.wrapperClass) + }, [slots['wrapper-start'], renderSlides(slides), slots['wrapper-end']]), needsNavigation(props) && [h('div', { + ref: prevElRef, + class: 'swiper-button-prev' + }), h('div', { + ref: nextElRef, + class: 'swiper-button-next' + })], needsScrollbar(props) && h('div', { + ref: scrollbarElRef, + class: 'swiper-scrollbar' + }), needsPagination(props) && h('div', { + ref: paginationElRef, + class: 'swiper-pagination' + }), slots['container-end']]); + }; + } +}; + +const SwiperSlide = { + name: 'SwiperSlide', + props: { + tag: { + type: String, + default: 'div' + }, + swiperRef: { + type: Object, + required: false + }, + swiperSlideIndex: { + type: Number, + default: undefined, + required: false + }, + zoom: { + type: Boolean, + default: undefined, + required: false + }, + lazy: { + type: Boolean, + default: false, + required: false + }, + virtualIndex: { + type: [String, Number], + default: undefined + } + }, + setup(props, _ref) { + let { + slots + } = _ref; + let eventAttached = false; + const { + swiperRef + } = props; + const slideElRef = ref(null); + const slideClasses = ref('swiper-slide'); + const lazyLoaded = ref(false); + function updateClasses(swiper, el, classNames) { + if (el === slideElRef.value) { + slideClasses.value = classNames; + } + } + onMounted(() => { + if (!swiperRef || !swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onBeforeUpdate(() => { + if (eventAttached || !swiperRef || !swiperRef.value) return; + swiperRef.value.on('_slideClass', updateClasses); + eventAttached = true; + }); + onUpdated(() => { + if (!slideElRef.value || !swiperRef || !swiperRef.value) return; + if (typeof props.swiperSlideIndex !== 'undefined') { + slideElRef.value.swiperSlideIndex = props.swiperSlideIndex; + } + if (swiperRef.value.destroyed) { + if (slideClasses.value !== 'swiper-slide') { + slideClasses.value = 'swiper-slide'; + } + } + }); + onBeforeUnmount(() => { + if (!swiperRef || !swiperRef.value) return; + swiperRef.value.off('_slideClass', updateClasses); + }); + const slideData = computed(() => ({ + isActive: slideClasses.value.indexOf('swiper-slide-active') >= 0, + isVisible: slideClasses.value.indexOf('swiper-slide-visible') >= 0, + isPrev: slideClasses.value.indexOf('swiper-slide-prev') >= 0, + isNext: slideClasses.value.indexOf('swiper-slide-next') >= 0 + })); + provide('swiperSlide', slideData); + const onLoad = () => { + lazyLoaded.value = true; + }; + return () => { + return h(props.tag, { + class: uniqueClasses(`${slideClasses.value}`), + ref: slideElRef, + 'data-swiper-slide-index': typeof props.virtualIndex === 'undefined' && swiperRef && swiperRef.value && swiperRef.value.params.loop ? props.swiperSlideIndex : props.virtualIndex, + onLoadCapture: onLoad + }, props.zoom ? h('div', { + class: 'swiper-zoom-container', + 'data-swiper-zoom': typeof props.zoom === 'number' ? props.zoom : undefined + }, [slots.default && slots.default(slideData.value), props.lazy && !lazyLoaded.value && h('div', { + class: 'swiper-lazy-preloader' + })]) : [slots.default && slots.default(slideData.value), props.lazy && !lazyLoaded.value && h('div', { + class: 'swiper-lazy-preloader' + })]); + }; + } +}; + +const useSwiperSlide = () => { + return inject('swiperSlide'); +}; +const useSwiper = () => { + return inject('swiper'); +}; + +export { Swiper, SwiperSlide, useSwiper, useSwiperSlide }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.css new file mode 100644 index 0000000..350282c --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.css @@ -0,0 +1,228 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ +:root { + --swiper-theme-color: #007aff; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; +} +.swiper-3d .swiper-slide, +.swiper-3d .swiper-cube-shadow { + transform-style: preserve-3d; +} +/* CSS Mode */ +.swiper-css-mode > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; + /* For Firefox */ + -ms-overflow-style: none; + /* For Internet Explorer and Edge */ +} +.swiper-css-mode > .swiper-wrapper::-webkit-scrollbar { + display: none; +} +.swiper-css-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; +} +.swiper-css-mode.swiper-horizontal > .swiper-wrapper { + scroll-snap-type: x mandatory; +} +.swiper-css-mode.swiper-vertical > .swiper-wrapper { + scroll-snap-type: y mandatory; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper { + scroll-snap-type: none; +} +.swiper-css-mode.swiper-free-mode > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; +} +.swiper-css-mode.swiper-centered > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-horizontal > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); +} +.swiper-css-mode.swiper-centered.swiper-vertical > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); +} +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom, +.swiper-3d .swiper-slide-shadow, +.swiper-3d .swiper-slide-shadow-left, +.swiper-3d .swiper-slide-shadow-right, +.swiper-3d .swiper-slide-shadow-top, +.swiper-3d .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; +} +.swiper-3d .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); +} +.swiper-3d .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-3d .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader, +.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.d.ts new file mode 100644 index 0000000..07e4e50 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.d.ts @@ -0,0 +1,5 @@ +// @ts-ignore +import Swiper from './types/swiper-class.d.ts'; + +export default Swiper; +export { Swiper }; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.js b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.js new file mode 100644 index 0000000..4d720b5 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.js @@ -0,0 +1,4339 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +var Swiper = (function () { + 'use strict'; + + /** + * SSR Window 4.0.2 + * Better handling for window object in SSR environment + * https://github.com/nolimits4web/ssr-window + * + * Copyright 2021, Vladimir Kharlampidi + * + * Licensed under MIT + * + * Released on: December 13, 2021 + */ + /* eslint-disable no-param-reassign */ + function isObject$1(obj) { + return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object; + } + function extend$1(target, src) { + if (target === void 0) { + target = {}; + } + if (src === void 0) { + src = {}; + } + Object.keys(src).forEach(key => { + if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject$1(src[key]) && isObject$1(target[key]) && Object.keys(src[key]).length > 0) { + extend$1(target[key], src[key]); + } + }); + } + const ssrDocument = { + body: {}, + addEventListener() {}, + removeEventListener() {}, + activeElement: { + blur() {}, + nodeName: '' + }, + querySelector() { + return null; + }, + querySelectorAll() { + return []; + }, + getElementById() { + return null; + }, + createEvent() { + return { + initEvent() {} + }; + }, + createElement() { + return { + children: [], + childNodes: [], + style: {}, + setAttribute() {}, + getElementsByTagName() { + return []; + } + }; + }, + createElementNS() { + return {}; + }, + importNode() { + return null; + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + } + }; + function getDocument() { + const doc = typeof document !== 'undefined' ? document : {}; + extend$1(doc, ssrDocument); + return doc; + } + const ssrWindow = { + document: ssrDocument, + navigator: { + userAgent: '' + }, + location: { + hash: '', + host: '', + hostname: '', + href: '', + origin: '', + pathname: '', + protocol: '', + search: '' + }, + history: { + replaceState() {}, + pushState() {}, + go() {}, + back() {} + }, + CustomEvent: function CustomEvent() { + return this; + }, + addEventListener() {}, + removeEventListener() {}, + getComputedStyle() { + return { + getPropertyValue() { + return ''; + } + }; + }, + Image() {}, + Date() {}, + screen: {}, + setTimeout() {}, + clearTimeout() {}, + matchMedia() { + return {}; + }, + requestAnimationFrame(callback) { + if (typeof setTimeout === 'undefined') { + callback(); + return null; + } + return setTimeout(callback, 0); + }, + cancelAnimationFrame(id) { + if (typeof setTimeout === 'undefined') { + return; + } + clearTimeout(id); + } + }; + function getWindow() { + const win = typeof window !== 'undefined' ? window : {}; + extend$1(win, ssrWindow); + return win; + } + + function classesToTokens(classes) { + if (classes === void 0) { + classes = ''; + } + return classes.trim().split(' ').filter(c => !!c.trim()); + } + + function deleteProps(obj) { + const object = obj; + Object.keys(object).forEach(key => { + try { + object[key] = null; + } catch (e) { + // no getter for object + } + try { + delete object[key]; + } catch (e) { + // something got wrong + } + }); + } + function nextTick(callback, delay) { + if (delay === void 0) { + delay = 0; + } + return setTimeout(callback, delay); + } + function now() { + return Date.now(); + } + function getComputedStyle$1(el) { + const window = getWindow(); + let style; + if (window.getComputedStyle) { + style = window.getComputedStyle(el, null); + } + if (!style && el.currentStyle) { + style = el.currentStyle; + } + if (!style) { + style = el.style; + } + return style; + } + function getTranslate(el, axis) { + if (axis === void 0) { + axis = 'x'; + } + const window = getWindow(); + let matrix; + let curTransform; + let transformMatrix; + const curStyle = getComputedStyle$1(el); + if (window.WebKitCSSMatrix) { + curTransform = curStyle.transform || curStyle.webkitTransform; + if (curTransform.split(',').length > 6) { + curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', '); + } + // Some old versions of Webkit choke when 'none' is passed; pass + // empty string instead in this case + transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); + } else { + transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); + matrix = transformMatrix.toString().split(','); + } + if (axis === 'x') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); + // Normal Browsers + else curTransform = parseFloat(matrix[4]); + } + if (axis === 'y') { + // Latest Chrome and webkits Fix + if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; + // Crazy IE10 Matrix + else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); + // Normal Browsers + else curTransform = parseFloat(matrix[5]); + } + return curTransform || 0; + } + function isObject(o) { + return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'; + } + function isNode(node) { + // eslint-disable-next-line + if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { + return node instanceof HTMLElement; + } + return node && (node.nodeType === 1 || node.nodeType === 11); + } + function extend() { + const to = Object(arguments.length <= 0 ? undefined : arguments[0]); + const noExtend = ['__proto__', 'constructor', 'prototype']; + for (let i = 1; i < arguments.length; i += 1) { + const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i]; + if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { + const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0); + for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { + const nextKey = keysArray[nextIndex]; + const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); + if (desc !== undefined && desc.enumerable) { + if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { + to[nextKey] = {}; + if (nextSource[nextKey].__swiper__) { + to[nextKey] = nextSource[nextKey]; + } else { + extend(to[nextKey], nextSource[nextKey]); + } + } else { + to[nextKey] = nextSource[nextKey]; + } + } + } + } + } + return to; + } + function setCSSProperty(el, varName, varValue) { + el.style.setProperty(varName, varValue); + } + function animateCSSModeScroll(_ref) { + let { + swiper, + targetPosition, + side + } = _ref; + const window = getWindow(); + const startPosition = -swiper.translate; + let startTime = null; + let time; + const duration = swiper.params.speed; + swiper.wrapperEl.style.scrollSnapType = 'none'; + window.cancelAnimationFrame(swiper.cssModeFrameID); + const dir = targetPosition > startPosition ? 'next' : 'prev'; + const isOutOfBound = (current, target) => { + return dir === 'next' && current >= target || dir === 'prev' && current <= target; + }; + const animate = () => { + time = new Date().getTime(); + if (startTime === null) { + startTime = time; + } + const progress = Math.max(Math.min((time - startTime) / duration, 1), 0); + const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; + let currentPosition = startPosition + easeProgress * (targetPosition - startPosition); + if (isOutOfBound(currentPosition, targetPosition)) { + currentPosition = targetPosition; + } + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + if (isOutOfBound(currentPosition, targetPosition)) { + swiper.wrapperEl.style.overflow = 'hidden'; + swiper.wrapperEl.style.scrollSnapType = ''; + setTimeout(() => { + swiper.wrapperEl.style.overflow = ''; + swiper.wrapperEl.scrollTo({ + [side]: currentPosition + }); + }); + window.cancelAnimationFrame(swiper.cssModeFrameID); + return; + } + swiper.cssModeFrameID = window.requestAnimationFrame(animate); + }; + animate(); + } + function elementChildren(element, selector) { + if (selector === void 0) { + selector = ''; + } + const children = [...element.children]; + if (element instanceof HTMLSlotElement) { + children.push(...element.assignedElements()); + } + if (!selector) { + return children; + } + return children.filter(el => el.matches(selector)); + } + function elementIsChildOf(el, parent) { + const isChild = parent.contains(el); + if (!isChild && parent instanceof HTMLSlotElement) { + const children = [...element.assignedElements()]; + return children.includes(el); + } + return isChild; + } + function showWarning(text) { + try { + console.warn(text); + return; + } catch (err) { + // err + } + } + function createElement(tag, classes) { + if (classes === void 0) { + classes = []; + } + const el = document.createElement(tag); + el.classList.add(...(Array.isArray(classes) ? classes : classesToTokens(classes))); + return el; + } + function elementPrevAll(el, selector) { + const prevEls = []; + while (el.previousElementSibling) { + const prev = el.previousElementSibling; // eslint-disable-line + if (selector) { + if (prev.matches(selector)) prevEls.push(prev); + } else prevEls.push(prev); + el = prev; + } + return prevEls; + } + function elementNextAll(el, selector) { + const nextEls = []; + while (el.nextElementSibling) { + const next = el.nextElementSibling; // eslint-disable-line + if (selector) { + if (next.matches(selector)) nextEls.push(next); + } else nextEls.push(next); + el = next; + } + return nextEls; + } + function elementStyle(el, prop) { + const window = getWindow(); + return window.getComputedStyle(el, null).getPropertyValue(prop); + } + function elementIndex(el) { + let child = el; + let i; + if (child) { + i = 0; + // eslint-disable-next-line + while ((child = child.previousSibling) !== null) { + if (child.nodeType === 1) i += 1; + } + return i; + } + return undefined; + } + function elementParents(el, selector) { + const parents = []; // eslint-disable-line + let parent = el.parentElement; // eslint-disable-line + while (parent) { + if (selector) { + if (parent.matches(selector)) parents.push(parent); + } else { + parents.push(parent); + } + parent = parent.parentElement; + } + return parents; + } + function elementOuterSize(el, size, includeMargins) { + const window = getWindow(); + if (includeMargins) { + return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom')); + } + return el.offsetWidth; + } + + let support; + function calcSupport() { + const window = getWindow(); + const document = getDocument(); + return { + smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style, + touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch) + }; + } + function getSupport() { + if (!support) { + support = calcSupport(); + } + return support; + } + + let deviceCached; + function calcDevice(_temp) { + let { + userAgent + } = _temp === void 0 ? {} : _temp; + const support = getSupport(); + const window = getWindow(); + const platform = window.navigator.platform; + const ua = userAgent || window.navigator.userAgent; + const device = { + ios: false, + android: false + }; + const screenWidth = window.screen.width; + const screenHeight = window.screen.height; + const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/); // eslint-disable-line + let ipad = ua.match(/(iPad).*OS\s([\d_]+)/); + const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/); + const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/); + const windows = platform === 'Win32'; + let macos = platform === 'MacIntel'; + + // iPadOs 13 fix + const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810']; + if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) { + ipad = ua.match(/(Version)\/([\d.]+)/); + if (!ipad) ipad = [0, 1, '13_0_0']; + macos = false; + } + + // Android + if (android && !windows) { + device.os = 'android'; + device.android = true; + } + if (ipad || iphone || ipod) { + device.os = 'ios'; + device.ios = true; + } + + // Export object + return device; + } + function getDevice(overrides) { + if (overrides === void 0) { + overrides = {}; + } + if (!deviceCached) { + deviceCached = calcDevice(overrides); + } + return deviceCached; + } + + let browser; + function calcBrowser() { + const window = getWindow(); + const device = getDevice(); + let needPerspectiveFix = false; + function isSafari() { + const ua = window.navigator.userAgent.toLowerCase(); + return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0; + } + if (isSafari()) { + const ua = String(window.navigator.userAgent); + if (ua.includes('Version/')) { + const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num)); + needPerspectiveFix = major < 16 || major === 16 && minor < 2; + } + } + const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent); + const isSafariBrowser = isSafari(); + const need3dFix = isSafariBrowser || isWebView && device.ios; + return { + isSafari: needPerspectiveFix || isSafariBrowser, + needPerspectiveFix, + need3dFix, + isWebView + }; + } + function getBrowser() { + if (!browser) { + browser = calcBrowser(); + } + return browser; + } + + function Resize(_ref) { + let { + swiper, + on, + emit + } = _ref; + const window = getWindow(); + let observer = null; + let animationFrame = null; + const resizeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('beforeResize'); + emit('resize'); + }; + const createObserver = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + observer = new ResizeObserver(entries => { + animationFrame = window.requestAnimationFrame(() => { + const { + width, + height + } = swiper; + let newWidth = width; + let newHeight = height; + entries.forEach(_ref2 => { + let { + contentBoxSize, + contentRect, + target + } = _ref2; + if (target && target !== swiper.el) return; + newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; + newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; + }); + if (newWidth !== width || newHeight !== height) { + resizeHandler(); + } + }); + }); + observer.observe(swiper.el); + }; + const removeObserver = () => { + if (animationFrame) { + window.cancelAnimationFrame(animationFrame); + } + if (observer && observer.unobserve && swiper.el) { + observer.unobserve(swiper.el); + observer = null; + } + }; + const orientationChangeHandler = () => { + if (!swiper || swiper.destroyed || !swiper.initialized) return; + emit('orientationchange'); + }; + on('init', () => { + if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') { + createObserver(); + return; + } + window.addEventListener('resize', resizeHandler); + window.addEventListener('orientationchange', orientationChangeHandler); + }); + on('destroy', () => { + removeObserver(); + window.removeEventListener('resize', resizeHandler); + window.removeEventListener('orientationchange', orientationChangeHandler); + }); + } + + function Observer(_ref) { + let { + swiper, + extendParams, + on, + emit + } = _ref; + const observers = []; + const window = getWindow(); + const attach = function (target, options) { + if (options === void 0) { + options = {}; + } + const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver; + const observer = new ObserverFunc(mutations => { + // The observerUpdate event should only be triggered + // once despite the number of mutations. Additional + // triggers are redundant and are very costly + if (swiper.__preventObserver__) return; + if (mutations.length === 1) { + emit('observerUpdate', mutations[0]); + return; + } + const observerUpdate = function observerUpdate() { + emit('observerUpdate', mutations[0]); + }; + if (window.requestAnimationFrame) { + window.requestAnimationFrame(observerUpdate); + } else { + window.setTimeout(observerUpdate, 0); + } + }); + observer.observe(target, { + attributes: typeof options.attributes === 'undefined' ? true : options.attributes, + childList: swiper.isElement || (typeof options.childList === 'undefined' ? true : options).childList, + characterData: typeof options.characterData === 'undefined' ? true : options.characterData + }); + observers.push(observer); + }; + const init = () => { + if (!swiper.params.observer) return; + if (swiper.params.observeParents) { + const containerParents = elementParents(swiper.hostEl); + for (let i = 0; i < containerParents.length; i += 1) { + attach(containerParents[i]); + } + } + // Observe container + attach(swiper.hostEl, { + childList: swiper.params.observeSlideChildren + }); + + // Observe wrapper + attach(swiper.wrapperEl, { + attributes: false + }); + }; + const destroy = () => { + observers.forEach(observer => { + observer.disconnect(); + }); + observers.splice(0, observers.length); + }; + extendParams({ + observer: false, + observeParents: false, + observeSlideChildren: false + }); + on('init', init); + on('destroy', destroy); + } + + /* eslint-disable no-underscore-dangle */ + + var eventsEmitter = { + on(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + events.split(' ').forEach(event => { + if (!self.eventsListeners[event]) self.eventsListeners[event] = []; + self.eventsListeners[event][method](handler); + }); + return self; + }, + once(events, handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + function onceHandler() { + self.off(events, onceHandler); + if (onceHandler.__emitterProxy) { + delete onceHandler.__emitterProxy; + } + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + handler.apply(self, args); + } + onceHandler.__emitterProxy = handler; + return self.on(events, onceHandler, priority); + }, + onAny(handler, priority) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (typeof handler !== 'function') return self; + const method = priority ? 'unshift' : 'push'; + if (self.eventsAnyListeners.indexOf(handler) < 0) { + self.eventsAnyListeners[method](handler); + } + return self; + }, + offAny(handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsAnyListeners) return self; + const index = self.eventsAnyListeners.indexOf(handler); + if (index >= 0) { + self.eventsAnyListeners.splice(index, 1); + } + return self; + }, + off(events, handler) { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + events.split(' ').forEach(event => { + if (typeof handler === 'undefined') { + self.eventsListeners[event] = []; + } else if (self.eventsListeners[event]) { + self.eventsListeners[event].forEach((eventHandler, index) => { + if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) { + self.eventsListeners[event].splice(index, 1); + } + }); + } + }); + return self; + }, + emit() { + const self = this; + if (!self.eventsListeners || self.destroyed) return self; + if (!self.eventsListeners) return self; + let events; + let data; + let context; + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + if (typeof args[0] === 'string' || Array.isArray(args[0])) { + events = args[0]; + data = args.slice(1, args.length); + context = self; + } else { + events = args[0].events; + data = args[0].data; + context = args[0].context || self; + } + data.unshift(context); + const eventsArray = Array.isArray(events) ? events : events.split(' '); + eventsArray.forEach(event => { + if (self.eventsAnyListeners && self.eventsAnyListeners.length) { + self.eventsAnyListeners.forEach(eventHandler => { + eventHandler.apply(context, [event, ...data]); + }); + } + if (self.eventsListeners && self.eventsListeners[event]) { + self.eventsListeners[event].forEach(eventHandler => { + eventHandler.apply(context, data); + }); + } + }); + return self; + } + }; + + function updateSize() { + const swiper = this; + let width; + let height; + const el = swiper.el; + if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) { + width = swiper.params.width; + } else { + width = el.clientWidth; + } + if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) { + height = swiper.params.height; + } else { + height = el.clientHeight; + } + if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) { + return; + } + + // Subtract paddings + width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10); + height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10); + if (Number.isNaN(width)) width = 0; + if (Number.isNaN(height)) height = 0; + Object.assign(swiper, { + width, + height, + size: swiper.isHorizontal() ? width : height + }); + } + + function updateSlides() { + const swiper = this; + function getDirectionPropertyValue(node, label) { + return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0); + } + const params = swiper.params; + const { + wrapperEl, + slidesEl, + size: swiperSize, + rtlTranslate: rtl, + wrongRTL + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length; + const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`); + const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length; + let snapGrid = []; + const slidesGrid = []; + const slidesSizesGrid = []; + let offsetBefore = params.slidesOffsetBefore; + if (typeof offsetBefore === 'function') { + offsetBefore = params.slidesOffsetBefore.call(swiper); + } + let offsetAfter = params.slidesOffsetAfter; + if (typeof offsetAfter === 'function') { + offsetAfter = params.slidesOffsetAfter.call(swiper); + } + const previousSnapGridLength = swiper.snapGrid.length; + const previousSlidesGridLength = swiper.slidesGrid.length; + let spaceBetween = params.spaceBetween; + let slidePosition = -offsetBefore; + let prevSlideSize = 0; + let index = 0; + if (typeof swiperSize === 'undefined') { + return; + } + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + swiper.virtualSize = -spaceBetween; + + // reset margins + slides.forEach(slideEl => { + if (rtl) { + slideEl.style.marginLeft = ''; + } else { + slideEl.style.marginRight = ''; + } + slideEl.style.marginBottom = ''; + slideEl.style.marginTop = ''; + }); + + // reset cssMode offsets + if (params.centeredSlides && params.cssMode) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', ''); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', ''); + } + const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid; + if (gridEnabled) { + swiper.grid.initSlides(slides); + } else if (swiper.grid) { + swiper.grid.unsetSlides(); + } + + // Calc slides + let slideSize; + const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => { + return typeof params.breakpoints[key].slidesPerView !== 'undefined'; + }).length > 0; + for (let i = 0; i < slidesLength; i += 1) { + slideSize = 0; + let slide; + if (slides[i]) slide = slides[i]; + if (gridEnabled) { + swiper.grid.updateSlide(i, slide, slides); + } + if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line + + if (params.slidesPerView === 'auto') { + if (shouldResetSlideSize) { + slides[i].style[swiper.getDirectionLabel('width')] = ``; + } + const slideStyles = getComputedStyle(slide); + const currentTransform = slide.style.transform; + const currentWebKitTransform = slide.style.webkitTransform; + if (currentTransform) { + slide.style.transform = 'none'; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = 'none'; + } + if (params.roundLengths) { + slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true); + } else { + // eslint-disable-next-line + const width = getDirectionPropertyValue(slideStyles, 'width'); + const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left'); + const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right'); + const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left'); + const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right'); + const boxSizing = slideStyles.getPropertyValue('box-sizing'); + if (boxSizing && boxSizing === 'border-box') { + slideSize = width + marginLeft + marginRight; + } else { + const { + clientWidth, + offsetWidth + } = slide; + slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth); + } + } + if (currentTransform) { + slide.style.transform = currentTransform; + } + if (currentWebKitTransform) { + slide.style.webkitTransform = currentWebKitTransform; + } + if (params.roundLengths) slideSize = Math.floor(slideSize); + } else { + slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView; + if (params.roundLengths) slideSize = Math.floor(slideSize); + if (slides[i]) { + slides[i].style[swiper.getDirectionLabel('width')] = `${slideSize}px`; + } + } + if (slides[i]) { + slides[i].swiperSlideSize = slideSize; + } + slidesSizesGrid.push(slideSize); + if (params.centeredSlides) { + slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween; + if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween; + if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0; + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + } else { + if (params.roundLengths) slidePosition = Math.floor(slidePosition); + if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition); + slidesGrid.push(slidePosition); + slidePosition = slidePosition + slideSize + spaceBetween; + } + swiper.virtualSize += slideSize + spaceBetween; + prevSlideSize = slideSize; + index += 1; + } + swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter; + if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) { + wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`; + } + if (params.setWrapperSize) { + wrapperEl.style[swiper.getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`; + } + if (gridEnabled) { + swiper.grid.updateWrapperSize(slideSize, snapGrid); + } + + // Remove last grid elements depending on width + if (!params.centeredSlides) { + const newSlidesGrid = []; + for (let i = 0; i < snapGrid.length; i += 1) { + let slidesGridItem = snapGrid[i]; + if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem); + if (snapGrid[i] <= swiper.virtualSize - swiperSize) { + newSlidesGrid.push(slidesGridItem); + } + } + snapGrid = newSlidesGrid; + if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) { + snapGrid.push(swiper.virtualSize - swiperSize); + } + } + if (isVirtual && params.loop) { + const size = slidesSizesGrid[0] + spaceBetween; + if (params.slidesPerGroup > 1) { + const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup); + const groupSize = size * params.slidesPerGroup; + for (let i = 0; i < groups; i += 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize); + } + } + for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) { + if (params.slidesPerGroup === 1) { + snapGrid.push(snapGrid[snapGrid.length - 1] + size); + } + slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size); + swiper.virtualSize += size; + } + } + if (snapGrid.length === 0) snapGrid = [0]; + if (spaceBetween !== 0) { + const key = swiper.isHorizontal() && rtl ? 'marginLeft' : swiper.getDirectionLabel('marginRight'); + slides.filter((_, slideIndex) => { + if (!params.cssMode || params.loop) return true; + if (slideIndex === slides.length - 1) { + return false; + } + return true; + }).forEach(slideEl => { + slideEl.style[key] = `${spaceBetween}px`; + }); + } + if (params.centeredSlides && params.centeredSlidesBounds) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const maxSnap = allSlidesSize - swiperSize; + snapGrid = snapGrid.map(snap => { + if (snap <= 0) return -offsetBefore; + if (snap > maxSnap) return maxSnap + offsetAfter; + return snap; + }); + } + if (params.centerInsufficientSlides) { + let allSlidesSize = 0; + slidesSizesGrid.forEach(slideSizeValue => { + allSlidesSize += slideSizeValue + (spaceBetween || 0); + }); + allSlidesSize -= spaceBetween; + const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0); + if (allSlidesSize + offsetSize < swiperSize) { + const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2; + snapGrid.forEach((snap, snapIndex) => { + snapGrid[snapIndex] = snap - allSlidesOffset; + }); + slidesGrid.forEach((snap, snapIndex) => { + slidesGrid[snapIndex] = snap + allSlidesOffset; + }); + } + } + Object.assign(swiper, { + slides, + snapGrid, + slidesGrid, + slidesSizesGrid + }); + if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) { + setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`); + setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`); + const addToSnapGrid = -swiper.snapGrid[0]; + const addToSlidesGrid = -swiper.slidesGrid[0]; + swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid); + swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid); + } + if (slidesLength !== previousSlidesLength) { + swiper.emit('slidesLengthChange'); + } + if (snapGrid.length !== previousSnapGridLength) { + if (swiper.params.watchOverflow) swiper.checkOverflow(); + swiper.emit('snapGridLengthChange'); + } + if (slidesGrid.length !== previousSlidesGridLength) { + swiper.emit('slidesGridLengthChange'); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + swiper.emit('slidesUpdated'); + if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) { + const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`; + const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass); + if (slidesLength <= params.maxBackfaceHiddenSlides) { + if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass); + } else if (hasClassBackfaceClassAdded) { + swiper.el.classList.remove(backFaceHiddenClass); + } + } + } + + function updateAutoHeight(speed) { + const swiper = this; + const activeSlides = []; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + let newHeight = 0; + let i; + if (typeof speed === 'number') { + swiper.setTransition(speed); + } else if (speed === true) { + swiper.setTransition(swiper.params.speed); + } + const getSlideByIndex = index => { + if (isVirtual) { + return swiper.slides[swiper.getSlideIndexByData(index)]; + } + return swiper.slides[index]; + }; + // Find slides currently in view + if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) { + if (swiper.params.centeredSlides) { + (swiper.visibleSlides || []).forEach(slide => { + activeSlides.push(slide); + }); + } else { + for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) { + const index = swiper.activeIndex + i; + if (index > swiper.slides.length && !isVirtual) break; + activeSlides.push(getSlideByIndex(index)); + } + } + } else { + activeSlides.push(getSlideByIndex(swiper.activeIndex)); + } + + // Find new height from highest slide in view + for (i = 0; i < activeSlides.length; i += 1) { + if (typeof activeSlides[i] !== 'undefined') { + const height = activeSlides[i].offsetHeight; + newHeight = height > newHeight ? height : newHeight; + } + } + + // Update Height + if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`; + } + + function updateSlidesOffset() { + const swiper = this; + const slides = swiper.slides; + // eslint-disable-next-line + const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0; + for (let i = 0; i < slides.length; i += 1) { + slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment(); + } + } + + const toggleSlideClasses$1 = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesProgress(translate) { + if (translate === void 0) { + translate = this && this.translate || 0; + } + const swiper = this; + const params = swiper.params; + const { + slides, + rtlTranslate: rtl, + snapGrid + } = swiper; + if (slides.length === 0) return; + if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset(); + let offsetCenter = -translate; + if (rtl) offsetCenter = translate; + swiper.visibleSlidesIndexes = []; + swiper.visibleSlides = []; + let spaceBetween = params.spaceBetween; + if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) { + spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size; + } else if (typeof spaceBetween === 'string') { + spaceBetween = parseFloat(spaceBetween); + } + for (let i = 0; i < slides.length; i += 1) { + const slide = slides[i]; + let slideOffset = slide.swiperSlideOffset; + if (params.cssMode && params.centeredSlides) { + slideOffset -= slides[0].swiperSlideOffset; + } + const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween); + const slideBefore = -(offsetCenter - slideOffset); + const slideAfter = slideBefore + swiper.slidesSizesGrid[i]; + const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i]; + const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size; + if (isVisible) { + swiper.visibleSlides.push(slide); + swiper.visibleSlidesIndexes.push(i); + } + toggleSlideClasses$1(slide, isVisible, params.slideVisibleClass); + toggleSlideClasses$1(slide, isFullyVisible, params.slideFullyVisibleClass); + slide.progress = rtl ? -slideProgress : slideProgress; + slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress; + } + } + + function updateProgress(translate) { + const swiper = this; + if (typeof translate === 'undefined') { + const multiplier = swiper.rtlTranslate ? -1 : 1; + // eslint-disable-next-line + translate = swiper && swiper.translate && swiper.translate * multiplier || 0; + } + const params = swiper.params; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + let { + progress, + isBeginning, + isEnd, + progressLoop + } = swiper; + const wasBeginning = isBeginning; + const wasEnd = isEnd; + if (translatesDiff === 0) { + progress = 0; + isBeginning = true; + isEnd = true; + } else { + progress = (translate - swiper.minTranslate()) / translatesDiff; + const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1; + const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1; + isBeginning = isBeginningRounded || progress <= 0; + isEnd = isEndRounded || progress >= 1; + if (isBeginningRounded) progress = 0; + if (isEndRounded) progress = 1; + } + if (params.loop) { + const firstSlideIndex = swiper.getSlideIndexByData(0); + const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1); + const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex]; + const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex]; + const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1]; + const translateAbs = Math.abs(translate); + if (translateAbs >= firstSlideTranslate) { + progressLoop = (translateAbs - firstSlideTranslate) / translateMax; + } else { + progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax; + } + if (progressLoop > 1) progressLoop -= 1; + } + Object.assign(swiper, { + progress, + progressLoop, + isBeginning, + isEnd + }); + if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate); + if (isBeginning && !wasBeginning) { + swiper.emit('reachBeginning toEdge'); + } + if (isEnd && !wasEnd) { + swiper.emit('reachEnd toEdge'); + } + if (wasBeginning && !isBeginning || wasEnd && !isEnd) { + swiper.emit('fromEdge'); + } + swiper.emit('progress', progress); + } + + const toggleSlideClasses = (slideEl, condition, className) => { + if (condition && !slideEl.classList.contains(className)) { + slideEl.classList.add(className); + } else if (!condition && slideEl.classList.contains(className)) { + slideEl.classList.remove(className); + } + }; + function updateSlidesClasses() { + const swiper = this; + const { + slides, + params, + slidesEl, + activeIndex + } = swiper; + const isVirtual = swiper.virtual && params.virtual.enabled; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const getFilteredSlide = selector => { + return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0]; + }; + let activeSlide; + let prevSlide; + let nextSlide; + if (isVirtual) { + if (params.loop) { + let slideIndex = activeIndex - swiper.virtual.slidesBefore; + if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex; + if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length; + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`); + } else { + activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`); + } + } else { + if (gridEnabled) { + activeSlide = slides.filter(slideEl => slideEl.column === activeIndex)[0]; + nextSlide = slides.filter(slideEl => slideEl.column === activeIndex + 1)[0]; + prevSlide = slides.filter(slideEl => slideEl.column === activeIndex - 1)[0]; + } else { + activeSlide = slides[activeIndex]; + } + } + if (activeSlide) { + if (!gridEnabled) { + // Next Slide + nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !nextSlide) { + nextSlide = slides[0]; + } + + // Prev Slide + prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0]; + if (params.loop && !prevSlide === 0) { + prevSlide = slides[slides.length - 1]; + } + } + } + slides.forEach(slideEl => { + toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass); + toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass); + toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass); + }); + swiper.emitSlidesClasses(); + } + + const processLazyPreloader = (swiper, imageEl) => { + if (!swiper || swiper.destroyed || !swiper.params) return; + const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`; + const slideEl = imageEl.closest(slideSelector()); + if (slideEl) { + let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (!lazyEl && swiper.isElement) { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + } else { + // init later + requestAnimationFrame(() => { + if (slideEl.shadowRoot) { + lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`); + if (lazyEl) lazyEl.remove(); + } + }); + } + } + if (lazyEl) lazyEl.remove(); + } + }; + const unlazy = (swiper, index) => { + if (!swiper.slides[index]) return; + const imageEl = swiper.slides[index].querySelector('[loading="lazy"]'); + if (imageEl) imageEl.removeAttribute('loading'); + }; + const preload = swiper => { + if (!swiper || swiper.destroyed || !swiper.params) return; + let amount = swiper.params.lazyPreloadPrevNext; + const len = swiper.slides.length; + if (!len || !amount || amount < 0) return; + amount = Math.min(amount, len); + const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView); + const activeIndex = swiper.activeIndex; + if (swiper.params.grid && swiper.params.grid.rows > 1) { + const activeColumn = activeIndex; + const preloadColumns = [activeColumn - amount]; + preloadColumns.push(...Array.from({ + length: amount + }).map((_, i) => { + return activeColumn + slidesPerView + i; + })); + swiper.slides.forEach((slideEl, i) => { + if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i); + }); + return; + } + const slideIndexLastInView = activeIndex + slidesPerView - 1; + if (swiper.params.rewind || swiper.params.loop) { + for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) { + const realIndex = (i % len + len) % len; + if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex); + } + } else { + for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) { + if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) { + unlazy(swiper, i); + } + } + } + }; + + function getActiveIndexByTranslate(swiper) { + const { + slidesGrid, + params + } = swiper; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + let activeIndex; + for (let i = 0; i < slidesGrid.length; i += 1) { + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) { + activeIndex = i; + } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) { + activeIndex = i + 1; + } + } else if (translate >= slidesGrid[i]) { + activeIndex = i; + } + } + // Normalize slideIndex + if (params.normalizeSlideIndex) { + if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0; + } + return activeIndex; + } + function updateActiveIndex(newActiveIndex) { + const swiper = this; + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + const { + snapGrid, + params, + activeIndex: previousIndex, + realIndex: previousRealIndex, + snapIndex: previousSnapIndex + } = swiper; + let activeIndex = newActiveIndex; + let snapIndex; + const getVirtualRealIndex = aIndex => { + let realIndex = aIndex - swiper.virtual.slidesBefore; + if (realIndex < 0) { + realIndex = swiper.virtual.slides.length + realIndex; + } + if (realIndex >= swiper.virtual.slides.length) { + realIndex -= swiper.virtual.slides.length; + } + return realIndex; + }; + if (typeof activeIndex === 'undefined') { + activeIndex = getActiveIndexByTranslate(swiper); + } + if (snapGrid.indexOf(translate) >= 0) { + snapIndex = snapGrid.indexOf(translate); + } else { + const skip = Math.min(params.slidesPerGroupSkip, activeIndex); + snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup); + } + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + if (activeIndex === previousIndex && !swiper.params.loop) { + if (snapIndex !== previousSnapIndex) { + swiper.snapIndex = snapIndex; + swiper.emit('snapIndexChange'); + } + return; + } + if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.realIndex = getVirtualRealIndex(activeIndex); + return; + } + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + + // Get real index + let realIndex; + if (swiper.virtual && params.virtual.enabled && params.loop) { + realIndex = getVirtualRealIndex(activeIndex); + } else if (gridEnabled) { + const firstSlideInColumn = swiper.slides.filter(slideEl => slideEl.column === activeIndex)[0]; + let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute('data-swiper-slide-index'), 10); + if (Number.isNaN(activeSlideIndex)) { + activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0); + } + realIndex = Math.floor(activeSlideIndex / params.grid.rows); + } else if (swiper.slides[activeIndex]) { + const slideIndex = swiper.slides[activeIndex].getAttribute('data-swiper-slide-index'); + if (slideIndex) { + realIndex = parseInt(slideIndex, 10); + } else { + realIndex = activeIndex; + } + } else { + realIndex = activeIndex; + } + Object.assign(swiper, { + previousSnapIndex, + snapIndex, + previousRealIndex, + realIndex, + previousIndex, + activeIndex + }); + if (swiper.initialized) { + preload(swiper); + } + swiper.emit('activeIndexChange'); + swiper.emit('snapIndexChange'); + if (swiper.initialized || swiper.params.runCallbacksOnInit) { + if (previousRealIndex !== realIndex) { + swiper.emit('realIndexChange'); + } + swiper.emit('slideChange'); + } + } + + function updateClickedSlide(el, path) { + const swiper = this; + const params = swiper.params; + let slide = el.closest(`.${params.slideClass}, swiper-slide`); + if (!slide && swiper.isElement && path && path.length > 1 && path.includes(el)) { + [...path.slice(path.indexOf(el) + 1, path.length)].forEach(pathEl => { + if (!slide && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) { + slide = pathEl; + } + }); + } + let slideFound = false; + let slideIndex; + if (slide) { + for (let i = 0; i < swiper.slides.length; i += 1) { + if (swiper.slides[i] === slide) { + slideFound = true; + slideIndex = i; + break; + } + } + } + if (slide && slideFound) { + swiper.clickedSlide = slide; + if (swiper.virtual && swiper.params.virtual.enabled) { + swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10); + } else { + swiper.clickedIndex = slideIndex; + } + } else { + swiper.clickedSlide = undefined; + swiper.clickedIndex = undefined; + return; + } + if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) { + swiper.slideToClickedSlide(); + } + } + + var update = { + updateSize, + updateSlides, + updateAutoHeight, + updateSlidesOffset, + updateSlidesProgress, + updateProgress, + updateSlidesClasses, + updateActiveIndex, + updateClickedSlide + }; + + function getSwiperTranslate(axis) { + if (axis === void 0) { + axis = this.isHorizontal() ? 'x' : 'y'; + } + const swiper = this; + const { + params, + rtlTranslate: rtl, + translate, + wrapperEl + } = swiper; + if (params.virtualTranslate) { + return rtl ? -translate : translate; + } + if (params.cssMode) { + return translate; + } + let currentTranslate = getTranslate(wrapperEl, axis); + currentTranslate += swiper.cssOverflowAdjustment(); + if (rtl) currentTranslate = -currentTranslate; + return currentTranslate || 0; + } + + function setTranslate(translate, byController) { + const swiper = this; + const { + rtlTranslate: rtl, + params, + wrapperEl, + progress + } = swiper; + let x = 0; + let y = 0; + const z = 0; + if (swiper.isHorizontal()) { + x = rtl ? -translate : translate; + } else { + y = translate; + } + if (params.roundLengths) { + x = Math.floor(x); + y = Math.floor(y); + } + swiper.previousTranslate = swiper.translate; + swiper.translate = swiper.isHorizontal() ? x : y; + if (params.cssMode) { + wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y; + } else if (!params.virtualTranslate) { + if (swiper.isHorizontal()) { + x -= swiper.cssOverflowAdjustment(); + } else { + y -= swiper.cssOverflowAdjustment(); + } + wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`; + } + + // Check if we need to update progress + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== progress) { + swiper.updateProgress(translate); + } + swiper.emit('setTranslate', swiper.translate, byController); + } + + function minTranslate() { + return -this.snapGrid[0]; + } + + function maxTranslate() { + return -this.snapGrid[this.snapGrid.length - 1]; + } + + function translateTo(translate, speed, runCallbacks, translateBounds, internal) { + if (translate === void 0) { + translate = 0; + } + if (speed === void 0) { + speed = this.params.speed; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (translateBounds === void 0) { + translateBounds = true; + } + const swiper = this; + const { + params, + wrapperEl + } = swiper; + if (swiper.animating && params.preventInteractionOnTransition) { + return false; + } + const minTranslate = swiper.minTranslate(); + const maxTranslate = swiper.maxTranslate(); + let newTranslate; + if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate; + + // Update progress + swiper.updateProgress(newTranslate); + if (params.cssMode) { + const isH = swiper.isHorizontal(); + if (speed === 0) { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate; + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: -newTranslate, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: -newTranslate, + behavior: 'smooth' + }); + } + return true; + } + if (speed === 0) { + swiper.setTransition(0); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionEnd'); + } + } else { + swiper.setTransition(speed); + swiper.setTranslate(newTranslate); + if (runCallbacks) { + swiper.emit('beforeTransitionStart', speed, internal); + swiper.emit('transitionStart'); + } + if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onTranslateToWrapperTransitionEnd) { + swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + swiper.onTranslateToWrapperTransitionEnd = null; + delete swiper.onTranslateToWrapperTransitionEnd; + swiper.animating = false; + if (runCallbacks) { + swiper.emit('transitionEnd'); + } + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd); + } + } + return true; + } + + var translate = { + getTranslate: getSwiperTranslate, + setTranslate, + minTranslate, + maxTranslate, + translateTo + }; + + function setTransition(duration, byController) { + const swiper = this; + if (!swiper.params.cssMode) { + swiper.wrapperEl.style.transitionDuration = `${duration}ms`; + swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : ''; + } + swiper.emit('setTransition', duration, byController); + } + + function transitionEmit(_ref) { + let { + swiper, + runCallbacks, + direction, + step + } = _ref; + const { + activeIndex, + previousIndex + } = swiper; + let dir = direction; + if (!dir) { + if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset'; + } + swiper.emit(`transition${step}`); + if (runCallbacks && activeIndex !== previousIndex) { + if (dir === 'reset') { + swiper.emit(`slideResetTransition${step}`); + return; + } + swiper.emit(`slideChangeTransition${step}`); + if (dir === 'next') { + swiper.emit(`slideNextTransition${step}`); + } else { + swiper.emit(`slidePrevTransition${step}`); + } + } + } + + function transitionStart(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + if (params.cssMode) return; + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'Start' + }); + } + + function transitionEnd(runCallbacks, direction) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params + } = swiper; + swiper.animating = false; + if (params.cssMode) return; + swiper.setTransition(0); + transitionEmit({ + swiper, + runCallbacks, + direction, + step: 'End' + }); + } + + var transition = { + setTransition, + transitionStart, + transitionEnd + }; + + function slideTo(index, speed, runCallbacks, internal, initial) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + index = parseInt(index, 10); + } + const swiper = this; + let slideIndex = index; + if (slideIndex < 0) slideIndex = 0; + const { + params, + snapGrid, + slidesGrid, + previousIndex, + activeIndex, + rtlTranslate: rtl, + wrapperEl, + enabled + } = swiper; + if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) { + return false; + } + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex); + let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup); + if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1; + const translate = -snapGrid[snapIndex]; + // Normalize slideIndex + if (params.normalizeSlideIndex) { + for (let i = 0; i < slidesGrid.length; i += 1) { + const normalizedTranslate = -Math.floor(translate * 100); + const normalizedGrid = Math.floor(slidesGrid[i] * 100); + const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100); + if (typeof slidesGrid[i + 1] !== 'undefined') { + if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) { + slideIndex = i; + } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) { + slideIndex = i + 1; + } + } else if (normalizedTranslate >= normalizedGrid) { + slideIndex = i; + } + } + } + // Directions locks + if (swiper.initialized && slideIndex !== activeIndex) { + if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) { + return false; + } + if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) { + if ((activeIndex || 0) !== slideIndex) { + return false; + } + } + } + if (slideIndex !== (previousIndex || 0) && runCallbacks) { + swiper.emit('beforeSlideChangeStart'); + } + + // Update progress + swiper.updateProgress(translate); + let direction; + if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset'; + + // Update Index + if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) { + swiper.updateActiveIndex(slideIndex); + // Update Height + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + swiper.updateSlidesClasses(); + if (params.effect !== 'slide') { + swiper.setTranslate(translate); + } + if (direction !== 'reset') { + swiper.transitionStart(runCallbacks, direction); + swiper.transitionEnd(runCallbacks, direction); + } + return false; + } + if (params.cssMode) { + const isH = swiper.isHorizontal(); + const t = rtl ? translate : -translate; + if (speed === 0) { + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + if (isVirtual) { + swiper.wrapperEl.style.scrollSnapType = 'none'; + swiper._immediateVirtual = true; + } + if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) { + swiper._cssModeVirtualInitialSet = true; + requestAnimationFrame(() => { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + }); + } else { + wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t; + } + if (isVirtual) { + requestAnimationFrame(() => { + swiper.wrapperEl.style.scrollSnapType = ''; + swiper._immediateVirtual = false; + }); + } + } else { + if (!swiper.support.smoothScroll) { + animateCSSModeScroll({ + swiper, + targetPosition: t, + side: isH ? 'left' : 'top' + }); + return true; + } + wrapperEl.scrollTo({ + [isH ? 'left' : 'top']: t, + behavior: 'smooth' + }); + } + return true; + } + swiper.setTransition(speed); + swiper.setTranslate(translate); + swiper.updateActiveIndex(slideIndex); + swiper.updateSlidesClasses(); + swiper.emit('beforeTransitionStart', speed, internal); + swiper.transitionStart(runCallbacks, direction); + if (speed === 0) { + swiper.transitionEnd(runCallbacks, direction); + } else if (!swiper.animating) { + swiper.animating = true; + if (!swiper.onSlideToWrapperTransitionEnd) { + swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) { + if (!swiper || swiper.destroyed) return; + if (e.target !== this) return; + swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + swiper.onSlideToWrapperTransitionEnd = null; + delete swiper.onSlideToWrapperTransitionEnd; + swiper.transitionEnd(runCallbacks, direction); + }; + } + swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd); + } + return true; + } + + function slideToLoop(index, speed, runCallbacks, internal) { + if (index === void 0) { + index = 0; + } + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (typeof index === 'string') { + const indexAsNumber = parseInt(index, 10); + index = indexAsNumber; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1; + let newIndex = index; + if (swiper.params.loop) { + if (swiper.virtual && swiper.params.virtual.enabled) { + // eslint-disable-next-line + newIndex = newIndex + swiper.virtual.slidesBefore; + } else { + let targetSlideIndex; + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + targetSlideIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + targetSlideIndex = swiper.getSlideIndexByData(newIndex); + } + const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length; + const { + centeredSlides + } = swiper.params; + let slidesPerView = swiper.params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + let needLoopFix = cols - targetSlideIndex < slidesPerView; + if (centeredSlides) { + needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2); + } + if (internal && centeredSlides && swiper.params.slidesPerView !== 'auto' && !gridEnabled) { + needLoopFix = false; + } + if (needLoopFix) { + const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? 'prev' : 'next' : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? 'next' : 'prev'; + swiper.loopFix({ + direction, + slideTo: true, + activeSlideIndex: direction === 'next' ? targetSlideIndex + 1 : targetSlideIndex - cols + 1, + slideRealIndex: direction === 'next' ? swiper.realIndex : undefined + }); + } + if (gridEnabled) { + const slideIndex = newIndex * swiper.params.grid.rows; + newIndex = swiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === slideIndex)[0].column; + } else { + newIndex = swiper.getSlideIndexByData(newIndex); + } + } + } + requestAnimationFrame(() => { + swiper.slideTo(newIndex, speed, runCallbacks, internal); + }); + return swiper; + } + + /* eslint no-unused-vars: "off" */ + function slideNext(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + enabled, + params, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let perGroup = params.slidesPerGroup; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1); + } + const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup; + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'next' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + }); + return true; + } + } + if (params.rewind && swiper.isEnd) { + return swiper.slideTo(0, speed, runCallbacks, internal); + } + return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slidePrev(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + const { + params, + snapGrid, + slidesGrid, + rtlTranslate, + enabled, + animating + } = swiper; + if (!enabled || swiper.destroyed) return swiper; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + const isVirtual = swiper.virtual && params.virtual.enabled; + if (params.loop) { + if (animating && !isVirtual && params.loopPreventsSliding) return false; + swiper.loopFix({ + direction: 'prev' + }); + // eslint-disable-next-line + swiper._clientLeft = swiper.wrapperEl.clientLeft; + } + const translate = rtlTranslate ? swiper.translate : -swiper.translate; + function normalize(val) { + if (val < 0) return -Math.floor(Math.abs(val)); + return Math.floor(val); + } + const normalizedTranslate = normalize(translate); + const normalizedSnapGrid = snapGrid.map(val => normalize(val)); + let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1]; + if (typeof prevSnap === 'undefined' && params.cssMode) { + let prevSnapIndex; + snapGrid.forEach((snap, snapIndex) => { + if (normalizedTranslate >= snap) { + // prevSnap = snap; + prevSnapIndex = snapIndex; + } + }); + if (typeof prevSnapIndex !== 'undefined') { + prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex]; + } + } + let prevIndex = 0; + if (typeof prevSnap !== 'undefined') { + prevIndex = slidesGrid.indexOf(prevSnap); + if (prevIndex < 0) prevIndex = swiper.activeIndex - 1; + if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) { + prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1; + prevIndex = Math.max(prevIndex, 0); + } + } + if (params.rewind && swiper.isBeginning) { + const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + return swiper.slideTo(lastIndex, speed, runCallbacks, internal); + } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) { + requestAnimationFrame(() => { + swiper.slideTo(prevIndex, speed, runCallbacks, internal); + }); + return true; + } + return swiper.slideTo(prevIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideReset(speed, runCallbacks, internal) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal); + } + + /* eslint no-unused-vars: "off" */ + function slideToClosest(speed, runCallbacks, internal, threshold) { + if (runCallbacks === void 0) { + runCallbacks = true; + } + if (threshold === void 0) { + threshold = 0.5; + } + const swiper = this; + if (swiper.destroyed) return; + if (typeof speed === 'undefined') { + speed = swiper.params.speed; + } + let index = swiper.activeIndex; + const skip = Math.min(swiper.params.slidesPerGroupSkip, index); + const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup); + const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate; + if (translate >= swiper.snapGrid[snapIndex]) { + // The current translate is on or after the current snap index, so the choice + // is between the current index and the one after it. + const currentSnap = swiper.snapGrid[snapIndex]; + const nextSnap = swiper.snapGrid[snapIndex + 1]; + if (translate - currentSnap > (nextSnap - currentSnap) * threshold) { + index += swiper.params.slidesPerGroup; + } + } else { + // The current translate is before the current snap index, so the choice + // is between the current index and the one before it. + const prevSnap = swiper.snapGrid[snapIndex - 1]; + const currentSnap = swiper.snapGrid[snapIndex]; + if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) { + index -= swiper.params.slidesPerGroup; + } + } + index = Math.max(index, 0); + index = Math.min(index, swiper.slidesGrid.length - 1); + return swiper.slideTo(index, speed, runCallbacks, internal); + } + + function slideToClickedSlide() { + const swiper = this; + if (swiper.destroyed) return; + const { + params, + slidesEl + } = swiper; + const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView; + let slideToIndex = swiper.clickedIndex; + let realIndex; + const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`; + if (params.loop) { + if (swiper.animating) return; + realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10); + if (params.centeredSlides) { + if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else if (slideToIndex > swiper.slides.length - slidesPerView) { + swiper.loopFix(); + slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]); + nextTick(() => { + swiper.slideTo(slideToIndex); + }); + } else { + swiper.slideTo(slideToIndex); + } + } else { + swiper.slideTo(slideToIndex); + } + } + + var slide = { + slideTo, + slideToLoop, + slideNext, + slidePrev, + slideReset, + slideToClosest, + slideToClickedSlide + }; + + function loopCreate(slideRealIndex) { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + const initSlides = () => { + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + slides.forEach((el, index) => { + el.setAttribute('data-swiper-slide-index', index); + }); + }; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1); + const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0; + const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0; + const addBlankSlides = amountOfSlides => { + for (let i = 0; i < amountOfSlides; i += 1) { + const slideEl = swiper.isElement ? createElement('swiper-slide', [params.slideBlankClass]) : createElement('div', [params.slideClass, params.slideBlankClass]); + swiper.slidesEl.append(slideEl); + } + }; + if (shouldFillGroup) { + if (params.loopAddBlankSlides) { + const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else if (shouldFillGrid) { + if (params.loopAddBlankSlides) { + const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows; + addBlankSlides(slidesToAdd); + swiper.recalcSlides(); + swiper.updateSlides(); + } else { + showWarning('Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)'); + } + initSlides(); + } else { + initSlides(); + } + swiper.loopFix({ + slideRealIndex, + direction: params.centeredSlides ? undefined : 'next' + }); + } + + function loopFix(_temp) { + let { + slideRealIndex, + slideTo = true, + direction, + setTranslate, + activeSlideIndex, + byController, + byMousewheel + } = _temp === void 0 ? {} : _temp; + const swiper = this; + if (!swiper.params.loop) return; + swiper.emit('beforeLoopFix'); + const { + slides, + allowSlidePrev, + allowSlideNext, + slidesEl, + params + } = swiper; + const { + centeredSlides + } = params; + swiper.allowSlidePrev = true; + swiper.allowSlideNext = true; + if (swiper.virtual && params.virtual.enabled) { + if (slideTo) { + if (!params.centeredSlides && swiper.snapIndex === 0) { + swiper.slideTo(swiper.virtual.slides.length, 0, false, true); + } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) { + swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true); + } else if (swiper.snapIndex === swiper.snapGrid.length - 1) { + swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true); + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + swiper.emit('loopFix'); + return; + } + let slidesPerView = params.slidesPerView; + if (slidesPerView === 'auto') { + slidesPerView = swiper.slidesPerViewDynamic(); + } else { + slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10)); + if (centeredSlides && slidesPerView % 2 === 0) { + slidesPerView = slidesPerView + 1; + } + } + const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup; + let loopedSlides = slidesPerGroup; + if (loopedSlides % slidesPerGroup !== 0) { + loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup; + } + loopedSlides += params.loopAdditionalSlides; + swiper.loopedSlides = loopedSlides; + const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1; + if (slides.length < slidesPerView + loopedSlides) { + showWarning('Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled and not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters'); + } else if (gridEnabled && params.grid.fill === 'row') { + showWarning('Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`'); + } + const prependSlidesIndexes = []; + const appendSlidesIndexes = []; + let activeIndex = swiper.activeIndex; + if (typeof activeSlideIndex === 'undefined') { + activeSlideIndex = swiper.getSlideIndex(slides.filter(el => el.classList.contains(params.slideActiveClass))[0]); + } else { + activeIndex = activeSlideIndex; + } + const isNext = direction === 'next' || !direction; + const isPrev = direction === 'prev' || !direction; + let slidesPrepended = 0; + let slidesAppended = 0; + const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length; + const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex; + const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate === 'undefined' ? -slidesPerView / 2 + 0.5 : 0); + // prepend last slides before start + if (activeColIndexWithShift < loopedSlides) { + slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup); + for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + const colIndexToPrepend = cols - index - 1; + for (let i = slides.length - 1; i >= 0; i -= 1) { + if (slides[i].column === colIndexToPrepend) prependSlidesIndexes.push(i); + } + // slides.forEach((slide, slideIndex) => { + // if (slide.column === colIndexToPrepend) prependSlidesIndexes.push(slideIndex); + // }); + } else { + prependSlidesIndexes.push(cols - index - 1); + } + } + } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) { + slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup); + for (let i = 0; i < slidesAppended; i += 1) { + const index = i - Math.floor(i / cols) * cols; + if (gridEnabled) { + slides.forEach((slide, slideIndex) => { + if (slide.column === index) appendSlidesIndexes.push(slideIndex); + }); + } else { + appendSlidesIndexes.push(index); + } + } + } + swiper.__preventObserver__ = true; + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + if (isPrev) { + prependSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.prepend(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + if (isNext) { + appendSlidesIndexes.forEach(index => { + slides[index].swiperLoopMoveDOM = true; + slidesEl.append(slides[index]); + slides[index].swiperLoopMoveDOM = false; + }); + } + swiper.recalcSlides(); + if (params.slidesPerView === 'auto') { + swiper.updateSlides(); + } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) { + swiper.slides.forEach((slide, slideIndex) => { + swiper.grid.updateSlide(slideIndex, slide, swiper.slides); + }); + } + if (params.watchSlidesProgress) { + swiper.updateSlidesOffset(); + } + if (slideTo) { + if (prependSlidesIndexes.length > 0 && isPrev) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + if (setTranslate) { + const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex + shift, 0, false, true); + swiper.touchEventsData.currentTranslate = swiper.translate; + } + } + } else if (appendSlidesIndexes.length > 0 && isNext) { + if (typeof slideRealIndex === 'undefined') { + const currentSlideTranslate = swiper.slidesGrid[activeIndex]; + const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended]; + const diff = newSlideTranslate - currentSlideTranslate; + if (byMousewheel) { + swiper.setTranslate(swiper.translate - diff); + } else { + swiper.slideTo(activeIndex - slidesAppended, 0, false, true); + if (setTranslate) { + swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff; + swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff; + } + } + } else { + const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length; + swiper.slideTo(swiper.activeIndex - shift, 0, false, true); + } + } + } + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.controller && swiper.controller.control && !byController) { + const loopParams = { + slideRealIndex, + direction, + setTranslate, + activeSlideIndex, + byController: true + }; + if (Array.isArray(swiper.controller.control)) { + swiper.controller.control.forEach(c => { + if (!c.destroyed && c.params.loop) c.loopFix({ + ...loopParams, + slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + }); + } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) { + swiper.controller.control.loopFix({ + ...loopParams, + slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo : false + }); + } + } + swiper.emit('loopFix'); + } + + function loopDestroy() { + const swiper = this; + const { + params, + slidesEl + } = swiper; + if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return; + swiper.recalcSlides(); + const newSlidesOrder = []; + swiper.slides.forEach(slideEl => { + const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex; + newSlidesOrder[index] = slideEl; + }); + swiper.slides.forEach(slideEl => { + slideEl.removeAttribute('data-swiper-slide-index'); + }); + newSlidesOrder.forEach(slideEl => { + slidesEl.append(slideEl); + }); + swiper.recalcSlides(); + swiper.slideTo(swiper.realIndex, 0); + } + + var loop = { + loopCreate, + loopFix, + loopDestroy + }; + + function setGrabCursor(moving) { + const swiper = this; + if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return; + const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl; + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + el.style.cursor = 'move'; + el.style.cursor = moving ? 'grabbing' : 'grab'; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + function unsetGrabCursor() { + const swiper = this; + if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) { + return; + } + if (swiper.isElement) { + swiper.__preventObserver__ = true; + } + swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = ''; + if (swiper.isElement) { + requestAnimationFrame(() => { + swiper.__preventObserver__ = false; + }); + } + } + + var grabCursor = { + setGrabCursor, + unsetGrabCursor + }; + + // Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd + function closestElement(selector, base) { + if (base === void 0) { + base = this; + } + function __closestFrom(el) { + if (!el || el === getDocument() || el === getWindow()) return null; + if (el.assignedSlot) el = el.assignedSlot; + const found = el.closest(selector); + if (!found && !el.getRootNode) { + return null; + } + return found || __closestFrom(el.getRootNode().host); + } + return __closestFrom(base); + } + function preventEdgeSwipe(swiper, event, startX) { + const window = getWindow(); + const { + params + } = swiper; + const edgeSwipeDetection = params.edgeSwipeDetection; + const edgeSwipeThreshold = params.edgeSwipeThreshold; + if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) { + if (edgeSwipeDetection === 'prevent') { + event.preventDefault(); + return true; + } + return false; + } + return true; + } + function onTouchStart(event) { + const swiper = this; + const document = getDocument(); + let e = event; + if (e.originalEvent) e = e.originalEvent; + const data = swiper.touchEventsData; + if (e.type === 'pointerdown') { + if (data.pointerId !== null && data.pointerId !== e.pointerId) { + return; + } + data.pointerId = e.pointerId; + } else if (e.type === 'touchstart' && e.targetTouches.length === 1) { + data.touchId = e.targetTouches[0].identifier; + } + if (e.type === 'touchstart') { + // don't proceed touch event + preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX); + return; + } + const { + params, + touches, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (swiper.animating && params.preventInteractionOnTransition) { + return; + } + if (!swiper.animating && params.cssMode && params.loop) { + swiper.loopFix(); + } + let targetEl = e.target; + if (params.touchEventsTarget === 'wrapper') { + if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return; + } + if ('which' in e && e.which === 3) return; + if ('button' in e && e.button > 0) return; + if (data.isTouched && data.isMoved) return; + + // change target el for shadow root component + const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== ''; + // eslint-disable-next-line + const eventPath = e.composedPath ? e.composedPath() : e.path; + if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) { + targetEl = eventPath[0]; + } + const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`; + const isTargetShadow = !!(e.target && e.target.shadowRoot); + + // use closestElement for shadow root element to get the actual closest for nested shadow root element + if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) { + swiper.allowClick = true; + return; + } + if (params.swipeHandler) { + if (!targetEl.closest(params.swipeHandler)) return; + } + touches.currentX = e.pageX; + touches.currentY = e.pageY; + const startX = touches.currentX; + const startY = touches.currentY; + + // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore + + if (!preventEdgeSwipe(swiper, e, startX)) { + return; + } + Object.assign(data, { + isTouched: true, + isMoved: false, + allowTouchCallbacks: true, + isScrolling: undefined, + startMoving: undefined + }); + touches.startX = startX; + touches.startY = startY; + data.touchStartTime = now(); + swiper.allowClick = true; + swiper.updateSize(); + swiper.swipeDirection = undefined; + if (params.threshold > 0) data.allowThresholdMove = false; + let preventDefault = true; + if (targetEl.matches(data.focusableElements)) { + preventDefault = false; + if (targetEl.nodeName === 'SELECT') { + data.isTouched = false; + } + } + if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) { + document.activeElement.blur(); + } + const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault; + if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) { + e.preventDefault(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) { + swiper.freeMode.onTouchStart(); + } + swiper.emit('touchStart', e); + } + + function onTouchMove(event) { + const document = getDocument(); + const swiper = this; + const data = swiper.touchEventsData; + const { + params, + touches, + rtlTranslate: rtl, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && event.pointerType === 'mouse') return; + let e = event; + if (e.originalEvent) e = e.originalEvent; + if (e.type === 'pointermove') { + if (data.touchId !== null) return; // return from pointer if we use touch + const id = e.pointerId; + if (id !== data.pointerId) return; + } + let targetTouch; + if (e.type === 'touchmove') { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } else { + targetTouch = e; + } + if (!data.isTouched) { + if (data.startMoving && data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + return; + } + const pageX = targetTouch.pageX; + const pageY = targetTouch.pageY; + if (e.preventedByNestedSwiper) { + touches.startX = pageX; + touches.startY = pageY; + return; + } + if (!swiper.allowTouchMove) { + if (!e.target.matches(data.focusableElements)) { + swiper.allowClick = false; + } + if (data.isTouched) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY + }); + data.touchStartTime = now(); + } + return; + } + if (params.touchReleaseOnEdges && !params.loop) { + if (swiper.isVertical()) { + // Vertical + if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) { + data.isTouched = false; + data.isMoved = false; + return; + } + } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) { + return; + } + } + if (document.activeElement) { + if (e.target === document.activeElement && e.target.matches(data.focusableElements)) { + data.isMoved = true; + swiper.allowClick = false; + return; + } + } + if (data.allowTouchCallbacks) { + swiper.emit('touchMove', e); + } + touches.previousX = touches.currentX; + touches.previousY = touches.currentY; + touches.currentX = pageX; + touches.currentY = pageY; + const diffX = touches.currentX - touches.startX; + const diffY = touches.currentY - touches.startY; + if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return; + if (typeof data.isScrolling === 'undefined') { + let touchAngle; + if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) { + data.isScrolling = false; + } else { + // eslint-disable-next-line + if (diffX * diffX + diffY * diffY >= 25) { + touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI; + data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle; + } + } + } + if (data.isScrolling) { + swiper.emit('touchMoveOpposite', e); + } + if (typeof data.startMoving === 'undefined') { + if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) { + data.startMoving = true; + } + } + if (data.isScrolling || e.type === 'touchmove' && data.preventTouchMoveFromPointerMove) { + data.isTouched = false; + return; + } + if (!data.startMoving) { + return; + } + swiper.allowClick = false; + if (!params.cssMode && e.cancelable) { + e.preventDefault(); + } + if (params.touchMoveStopPropagation && !params.nested) { + e.stopPropagation(); + } + let diff = swiper.isHorizontal() ? diffX : diffY; + let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY; + if (params.oneWayMovement) { + diff = Math.abs(diff) * (rtl ? 1 : -1); + touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1); + } + touches.diff = diff; + diff *= params.touchRatio; + if (rtl) { + diff = -diff; + touchesDiff = -touchesDiff; + } + const prevTouchesDirection = swiper.touchesDirection; + swiper.swipeDirection = diff > 0 ? 'prev' : 'next'; + swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next'; + const isLoop = swiper.params.loop && !params.cssMode; + const allowLoopFix = swiper.touchesDirection === 'next' && swiper.allowSlideNext || swiper.touchesDirection === 'prev' && swiper.allowSlidePrev; + if (!data.isMoved) { + if (isLoop && allowLoopFix) { + swiper.loopFix({ + direction: swiper.swipeDirection + }); + } + data.startTranslate = swiper.getTranslate(); + swiper.setTransition(0); + if (swiper.animating) { + const evt = new window.CustomEvent('transitionend', { + bubbles: true, + cancelable: true, + detail: { + bySwiperTouchMove: true + } + }); + swiper.wrapperEl.dispatchEvent(evt); + } + data.allowMomentumBounce = false; + // Grab Cursor + if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(true); + } + swiper.emit('sliderFirstMove', e); + } + let loopFixed; + new Date().getTime(); + if (data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) { + Object.assign(touches, { + startX: pageX, + startY: pageY, + currentX: pageX, + currentY: pageY, + startTranslate: data.currentTranslate + }); + data.loopSwapReset = true; + data.startTranslate = data.currentTranslate; + return; + } + swiper.emit('sliderMove', e); + data.isMoved = true; + data.currentTranslate = diff + data.startTranslate; + let disableParentSwiper = true; + let resistanceRatio = params.resistanceRatio; + if (params.touchReleaseOnEdges) { + resistanceRatio = 0; + } + if (diff > 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] : swiper.minTranslate())) { + swiper.loopFix({ + direction: 'prev', + setTranslate: true, + activeSlideIndex: 0 + }); + } + if (data.currentTranslate > swiper.minTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio; + } + } + } else if (diff < 0) { + if (isLoop && allowLoopFix && !loopFixed && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] : swiper.maxTranslate())) { + swiper.loopFix({ + direction: 'next', + setTranslate: true, + activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10))) + }); + } + if (data.currentTranslate < swiper.maxTranslate()) { + disableParentSwiper = false; + if (params.resistance) { + data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio; + } + } + } + if (disableParentSwiper) { + e.preventedByNestedSwiper = true; + } + + // Directions locks + if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) { + data.currentTranslate = data.startTranslate; + } + if (!swiper.allowSlidePrev && !swiper.allowSlideNext) { + data.currentTranslate = data.startTranslate; + } + + // Threshold + if (params.threshold > 0) { + if (Math.abs(diff) > params.threshold || data.allowThresholdMove) { + if (!data.allowThresholdMove) { + data.allowThresholdMove = true; + touches.startX = touches.currentX; + touches.startY = touches.currentY; + data.currentTranslate = data.startTranslate; + touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY; + return; + } + } else { + data.currentTranslate = data.startTranslate; + return; + } + } + if (!params.followFinger || params.cssMode) return; + + // Update active index in free mode + if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) { + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + if (params.freeMode && params.freeMode.enabled && swiper.freeMode) { + swiper.freeMode.onTouchMove(); + } + // Update progress + swiper.updateProgress(data.currentTranslate); + // Update translate + swiper.setTranslate(data.currentTranslate); + } + + function onTouchEnd(event) { + const swiper = this; + const data = swiper.touchEventsData; + let e = event; + if (e.originalEvent) e = e.originalEvent; + let targetTouch; + const isTouchEvent = e.type === 'touchend' || e.type === 'touchcancel'; + if (!isTouchEvent) { + if (data.touchId !== null) return; // return from pointer if we use touch + if (e.pointerId !== data.pointerId) return; + targetTouch = e; + } else { + targetTouch = [...e.changedTouches].filter(t => t.identifier === data.touchId)[0]; + if (!targetTouch || targetTouch.identifier !== data.touchId) return; + } + if (['pointercancel', 'pointerout', 'pointerleave', 'contextmenu'].includes(e.type)) { + const proceed = ['pointercancel', 'contextmenu'].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView); + if (!proceed) { + return; + } + } + data.pointerId = null; + data.touchId = null; + const { + params, + touches, + rtlTranslate: rtl, + slidesGrid, + enabled + } = swiper; + if (!enabled) return; + if (!params.simulateTouch && e.pointerType === 'mouse') return; + if (data.allowTouchCallbacks) { + swiper.emit('touchEnd', e); + } + data.allowTouchCallbacks = false; + if (!data.isTouched) { + if (data.isMoved && params.grabCursor) { + swiper.setGrabCursor(false); + } + data.isMoved = false; + data.startMoving = false; + return; + } + + // Return Grab Cursor + if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) { + swiper.setGrabCursor(false); + } + + // Time diff + const touchEndTime = now(); + const timeDiff = touchEndTime - data.touchStartTime; + + // Tap, doubleTap, Click + if (swiper.allowClick) { + const pathTree = e.path || e.composedPath && e.composedPath(); + swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree); + swiper.emit('tap click', e); + if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) { + swiper.emit('doubleTap doubleClick', e); + } + } + data.lastClickTime = now(); + nextTick(() => { + if (!swiper.destroyed) swiper.allowClick = true; + }); + if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) { + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + return; + } + data.isTouched = false; + data.isMoved = false; + data.startMoving = false; + let currentPos; + if (params.followFinger) { + currentPos = rtl ? swiper.translate : -swiper.translate; + } else { + currentPos = -data.currentTranslate; + } + if (params.cssMode) { + return; + } + if (params.freeMode && params.freeMode.enabled) { + swiper.freeMode.onTouchEnd({ + currentPos + }); + return; + } + + // Find current slide + const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop; + let stopIndex = 0; + let groupSize = swiper.slidesSizesGrid[0]; + for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) { + const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (typeof slidesGrid[i + increment] !== 'undefined') { + if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) { + stopIndex = i; + groupSize = slidesGrid[i + increment] - slidesGrid[i]; + } + } else if (swipeToLast || currentPos >= slidesGrid[i]) { + stopIndex = i; + groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2]; + } + } + let rewindFirstIndex = null; + let rewindLastIndex = null; + if (params.rewind) { + if (swiper.isBeginning) { + rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1; + } else if (swiper.isEnd) { + rewindFirstIndex = 0; + } + } + // Find current slide size + const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize; + const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup; + if (timeDiff > params.longSwipesMs) { + // Long touches + if (!params.longSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + if (swiper.swipeDirection === 'next') { + if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex); + } + if (swiper.swipeDirection === 'prev') { + if (ratio > 1 - params.longSwipesRatio) { + swiper.slideTo(stopIndex + increment); + } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) { + swiper.slideTo(rewindLastIndex); + } else { + swiper.slideTo(stopIndex); + } + } + } else { + // Short swipes + if (!params.shortSwipes) { + swiper.slideTo(swiper.activeIndex); + return; + } + const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl); + if (!isNavButtonTarget) { + if (swiper.swipeDirection === 'next') { + swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment); + } + if (swiper.swipeDirection === 'prev') { + swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex); + } + } else if (e.target === swiper.navigation.nextEl) { + swiper.slideTo(stopIndex + increment); + } else { + swiper.slideTo(stopIndex); + } + } + } + + function onResize() { + const swiper = this; + const { + params, + el + } = swiper; + if (el && el.offsetWidth === 0) return; + + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + + // Save locks + const { + allowSlideNext, + allowSlidePrev, + snapGrid + } = swiper; + const isVirtual = swiper.virtual && swiper.params.virtual.enabled; + + // Disable locks on resize + swiper.allowSlideNext = true; + swiper.allowSlidePrev = true; + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateSlidesClasses(); + const isVirtualLoop = isVirtual && params.loop; + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) { + swiper.slideTo(swiper.slides.length - 1, 0, false, true); + } else { + if (swiper.params.loop && !isVirtual) { + swiper.slideToLoop(swiper.realIndex, 0, false, true); + } else { + swiper.slideTo(swiper.activeIndex, 0, false, true); + } + } + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + clearTimeout(swiper.autoplay.resizeTimeout); + swiper.autoplay.resizeTimeout = setTimeout(() => { + if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) { + swiper.autoplay.resume(); + } + }, 500); + } + // Return locks after resize + swiper.allowSlidePrev = allowSlidePrev; + swiper.allowSlideNext = allowSlideNext; + if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + } + + function onClick(e) { + const swiper = this; + if (!swiper.enabled) return; + if (!swiper.allowClick) { + if (swiper.params.preventClicks) e.preventDefault(); + if (swiper.params.preventClicksPropagation && swiper.animating) { + e.stopPropagation(); + e.stopImmediatePropagation(); + } + } + } + + function onScroll() { + const swiper = this; + const { + wrapperEl, + rtlTranslate, + enabled + } = swiper; + if (!enabled) return; + swiper.previousTranslate = swiper.translate; + if (swiper.isHorizontal()) { + swiper.translate = -wrapperEl.scrollLeft; + } else { + swiper.translate = -wrapperEl.scrollTop; + } + // eslint-disable-next-line + if (swiper.translate === 0) swiper.translate = 0; + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + let newProgress; + const translatesDiff = swiper.maxTranslate() - swiper.minTranslate(); + if (translatesDiff === 0) { + newProgress = 0; + } else { + newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff; + } + if (newProgress !== swiper.progress) { + swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate); + } + swiper.emit('setTranslate', swiper.translate, false); + } + + function onLoad(e) { + const swiper = this; + processLazyPreloader(swiper, e.target); + if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) { + return; + } + swiper.update(); + } + + function onDocumentTouchStart() { + const swiper = this; + if (swiper.documentTouchHandlerProceeded) return; + swiper.documentTouchHandlerProceeded = true; + if (swiper.params.touchReleaseOnEdges) { + swiper.el.style.touchAction = 'auto'; + } + } + + const events = (swiper, method) => { + const document = getDocument(); + const { + params, + el, + wrapperEl, + device + } = swiper; + const capture = !!params.nested; + const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener'; + const swiperMethod = method; + if (!el || typeof el === 'string') return; + + // Touch Events + document[domMethod]('touchstart', swiper.onDocumentTouchStart, { + passive: false, + capture + }); + el[domMethod]('touchstart', swiper.onTouchStart, { + passive: false + }); + el[domMethod]('pointerdown', swiper.onTouchStart, { + passive: false + }); + document[domMethod]('touchmove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('pointermove', swiper.onTouchMove, { + passive: false, + capture + }); + document[domMethod]('touchend', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerup', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointercancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('touchcancel', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerout', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('pointerleave', swiper.onTouchEnd, { + passive: true + }); + document[domMethod]('contextmenu', swiper.onTouchEnd, { + passive: true + }); + + // Prevent Links Clicks + if (params.preventClicks || params.preventClicksPropagation) { + el[domMethod]('click', swiper.onClick, true); + } + if (params.cssMode) { + wrapperEl[domMethod]('scroll', swiper.onScroll); + } + + // Resize handler + if (params.updateOnWindowResize) { + swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true); + } else { + swiper[swiperMethod]('observerUpdate', onResize, true); + } + + // Images loader + el[domMethod]('load', swiper.onLoad, { + capture: true + }); + }; + function attachEvents() { + const swiper = this; + const { + params + } = swiper; + swiper.onTouchStart = onTouchStart.bind(swiper); + swiper.onTouchMove = onTouchMove.bind(swiper); + swiper.onTouchEnd = onTouchEnd.bind(swiper); + swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper); + if (params.cssMode) { + swiper.onScroll = onScroll.bind(swiper); + } + swiper.onClick = onClick.bind(swiper); + swiper.onLoad = onLoad.bind(swiper); + events(swiper, 'on'); + } + function detachEvents() { + const swiper = this; + events(swiper, 'off'); + } + var events$1 = { + attachEvents, + detachEvents + }; + + const isGridEnabled = (swiper, params) => { + return swiper.grid && params.grid && params.grid.rows > 1; + }; + function setBreakpoint() { + const swiper = this; + const { + realIndex, + initialized, + params, + el + } = swiper; + const breakpoints = params.breakpoints; + if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return; + + // Get breakpoint for window width and update parameters + const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el); + if (!breakpoint || swiper.currentBreakpoint === breakpoint) return; + const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined; + const breakpointParams = breakpointOnlyParams || swiper.originalParams; + const wasMultiRow = isGridEnabled(swiper, params); + const isMultiRow = isGridEnabled(swiper, breakpointParams); + const wasGrabCursor = swiper.params.grabCursor; + const isGrabCursor = breakpointParams.grabCursor; + const wasEnabled = params.enabled; + if (wasMultiRow && !isMultiRow) { + el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`); + swiper.emitContainerClasses(); + } else if (!wasMultiRow && isMultiRow) { + el.classList.add(`${params.containerModifierClass}grid`); + if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') { + el.classList.add(`${params.containerModifierClass}grid-column`); + } + swiper.emitContainerClasses(); + } + if (wasGrabCursor && !isGrabCursor) { + swiper.unsetGrabCursor(); + } else if (!wasGrabCursor && isGrabCursor) { + swiper.setGrabCursor(); + } + + // Toggle navigation, pagination, scrollbar + ['navigation', 'pagination', 'scrollbar'].forEach(prop => { + if (typeof breakpointParams[prop] === 'undefined') return; + const wasModuleEnabled = params[prop] && params[prop].enabled; + const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled; + if (wasModuleEnabled && !isModuleEnabled) { + swiper[prop].disable(); + } + if (!wasModuleEnabled && isModuleEnabled) { + swiper[prop].enable(); + } + }); + const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction; + const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged); + const wasLoop = params.loop; + if (directionChanged && initialized) { + swiper.changeDirection(); + } + extend(swiper.params, breakpointParams); + const isEnabled = swiper.params.enabled; + const hasLoop = swiper.params.loop; + Object.assign(swiper, { + allowTouchMove: swiper.params.allowTouchMove, + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev + }); + if (wasEnabled && !isEnabled) { + swiper.disable(); + } else if (!wasEnabled && isEnabled) { + swiper.enable(); + } + swiper.currentBreakpoint = breakpoint; + swiper.emit('_beforeBreakpoint', breakpointParams); + if (initialized) { + if (needsReLoop) { + swiper.loopDestroy(); + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (!wasLoop && hasLoop) { + swiper.loopCreate(realIndex); + swiper.updateSlides(); + } else if (wasLoop && !hasLoop) { + swiper.loopDestroy(); + } + } + swiper.emit('breakpoint', breakpointParams); + } + + function getBreakpoint(breakpoints, base, containerEl) { + if (base === void 0) { + base = 'window'; + } + if (!breakpoints || base === 'container' && !containerEl) return undefined; + let breakpoint = false; + const window = getWindow(); + const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight; + const points = Object.keys(breakpoints).map(point => { + if (typeof point === 'string' && point.indexOf('@') === 0) { + const minRatio = parseFloat(point.substr(1)); + const value = currentHeight * minRatio; + return { + value, + point + }; + } + return { + value: point, + point + }; + }); + points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10)); + for (let i = 0; i < points.length; i += 1) { + const { + point, + value + } = points[i]; + if (base === 'window') { + if (window.matchMedia(`(min-width: ${value}px)`).matches) { + breakpoint = point; + } + } else if (value <= containerEl.clientWidth) { + breakpoint = point; + } + } + return breakpoint || 'max'; + } + + var breakpoints = { + setBreakpoint, + getBreakpoint + }; + + function prepareClasses(entries, prefix) { + const resultClasses = []; + entries.forEach(item => { + if (typeof item === 'object') { + Object.keys(item).forEach(classNames => { + if (item[classNames]) { + resultClasses.push(prefix + classNames); + } + }); + } else if (typeof item === 'string') { + resultClasses.push(prefix + item); + } + }); + return resultClasses; + } + function addClasses() { + const swiper = this; + const { + classNames, + params, + rtl, + el, + device + } = swiper; + // prettier-ignore + const suffixes = prepareClasses(['initialized', params.direction, { + 'free-mode': swiper.params.freeMode && params.freeMode.enabled + }, { + 'autoheight': params.autoHeight + }, { + 'rtl': rtl + }, { + 'grid': params.grid && params.grid.rows > 1 + }, { + 'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column' + }, { + 'android': device.android + }, { + 'ios': device.ios + }, { + 'css-mode': params.cssMode + }, { + 'centered': params.cssMode && params.centeredSlides + }, { + 'watch-progress': params.watchSlidesProgress + }], params.containerModifierClass); + classNames.push(...suffixes); + el.classList.add(...classNames); + swiper.emitContainerClasses(); + } + + function removeClasses() { + const swiper = this; + const { + el, + classNames + } = swiper; + if (!el || typeof el === 'string') return; + el.classList.remove(...classNames); + swiper.emitContainerClasses(); + } + + var classes = { + addClasses, + removeClasses + }; + + function checkOverflow() { + const swiper = this; + const { + isLocked: wasLocked, + params + } = swiper; + const { + slidesOffsetBefore + } = params; + if (slidesOffsetBefore) { + const lastSlideIndex = swiper.slides.length - 1; + const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2; + swiper.isLocked = swiper.size > lastSlideRightEdge; + } else { + swiper.isLocked = swiper.snapGrid.length === 1; + } + if (params.allowSlideNext === true) { + swiper.allowSlideNext = !swiper.isLocked; + } + if (params.allowSlidePrev === true) { + swiper.allowSlidePrev = !swiper.isLocked; + } + if (wasLocked && wasLocked !== swiper.isLocked) { + swiper.isEnd = false; + } + if (wasLocked !== swiper.isLocked) { + swiper.emit(swiper.isLocked ? 'lock' : 'unlock'); + } + } + var checkOverflow$1 = { + checkOverflow + }; + + var defaults = { + init: true, + direction: 'horizontal', + oneWayMovement: false, + swiperElementNodeName: 'SWIPER-CONTAINER', + touchEventsTarget: 'wrapper', + initialSlide: 0, + speed: 300, + cssMode: false, + updateOnWindowResize: true, + resizeObserver: true, + nested: false, + createElements: false, + eventsPrefix: 'swiper', + enabled: true, + focusableElements: 'input, select, option, textarea, button, video, label', + // Overrides + width: null, + height: null, + // + preventInteractionOnTransition: false, + // ssr + userAgent: null, + url: null, + // To support iOS's swipe-to-go-back gesture (when being used in-app). + edgeSwipeDetection: false, + edgeSwipeThreshold: 20, + // Autoheight + autoHeight: false, + // Set wrapper width + setWrapperSize: false, + // Virtual Translate + virtualTranslate: false, + // Effects + effect: 'slide', + // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip' + + // Breakpoints + breakpoints: undefined, + breakpointsBase: 'window', + // Slides grid + spaceBetween: 0, + slidesPerView: 1, + slidesPerGroup: 1, + slidesPerGroupSkip: 0, + slidesPerGroupAuto: false, + centeredSlides: false, + centeredSlidesBounds: false, + slidesOffsetBefore: 0, + // in px + slidesOffsetAfter: 0, + // in px + normalizeSlideIndex: true, + centerInsufficientSlides: false, + // Disable swiper and hide navigation when container not overflow + watchOverflow: true, + // Round length + roundLengths: false, + // Touches + touchRatio: 1, + touchAngle: 45, + simulateTouch: true, + shortSwipes: true, + longSwipes: true, + longSwipesRatio: 0.5, + longSwipesMs: 300, + followFinger: true, + allowTouchMove: true, + threshold: 5, + touchMoveStopPropagation: false, + touchStartPreventDefault: true, + touchStartForcePreventDefault: false, + touchReleaseOnEdges: false, + // Unique Navigation Elements + uniqueNavElements: true, + // Resistance + resistance: true, + resistanceRatio: 0.85, + // Progress + watchSlidesProgress: false, + // Cursor + grabCursor: false, + // Clicks + preventClicks: true, + preventClicksPropagation: true, + slideToClickedSlide: false, + // loop + loop: false, + loopAddBlankSlides: true, + loopAdditionalSlides: 0, + loopPreventsSliding: true, + // rewind + rewind: false, + // Swiping/no swiping + allowSlidePrev: true, + allowSlideNext: true, + swipeHandler: null, + // '.swipe-handler', + noSwiping: true, + noSwipingClass: 'swiper-no-swiping', + noSwipingSelector: null, + // Passive Listeners + passiveListeners: true, + maxBackfaceHiddenSlides: 10, + // NS + containerModifierClass: 'swiper-', + // NEW + slideClass: 'swiper-slide', + slideBlankClass: 'swiper-slide-blank', + slideActiveClass: 'swiper-slide-active', + slideVisibleClass: 'swiper-slide-visible', + slideFullyVisibleClass: 'swiper-slide-fully-visible', + slideNextClass: 'swiper-slide-next', + slidePrevClass: 'swiper-slide-prev', + wrapperClass: 'swiper-wrapper', + lazyPreloaderClass: 'swiper-lazy-preloader', + lazyPreloadPrevNext: 0, + // Callbacks + runCallbacksOnInit: true, + // Internals + _emitClasses: false + }; + + function moduleExtendParams(params, allModulesParams) { + return function extendParams(obj) { + if (obj === void 0) { + obj = {}; + } + const moduleParamName = Object.keys(obj)[0]; + const moduleParams = obj[moduleParamName]; + if (typeof moduleParams !== 'object' || moduleParams === null) { + extend(allModulesParams, obj); + return; + } + if (params[moduleParamName] === true) { + params[moduleParamName] = { + enabled: true + }; + } + if (moduleParamName === 'navigation' && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) { + params[moduleParamName].auto = true; + } + if (['pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) { + params[moduleParamName].auto = true; + } + if (!(moduleParamName in params && 'enabled' in moduleParams)) { + extend(allModulesParams, obj); + return; + } + if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) { + params[moduleParamName].enabled = true; + } + if (!params[moduleParamName]) params[moduleParamName] = { + enabled: false + }; + extend(allModulesParams, obj); + }; + } + + /* eslint no-param-reassign: "off" */ + const prototypes = { + eventsEmitter, + update, + translate, + transition, + slide, + loop, + grabCursor, + events: events$1, + breakpoints, + checkOverflow: checkOverflow$1, + classes + }; + const extendedDefaults = {}; + class Swiper { + constructor() { + let el; + let params; + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') { + params = args[0]; + } else { + [el, params] = args; + } + if (!params) params = {}; + params = extend({}, params); + if (el && !params.el) params.el = el; + const document = getDocument(); + if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) { + const swipers = []; + document.querySelectorAll(params.el).forEach(containerEl => { + const newParams = extend({}, params, { + el: containerEl + }); + swipers.push(new Swiper(newParams)); + }); + // eslint-disable-next-line no-constructor-return + return swipers; + } + + // Swiper Instance + const swiper = this; + swiper.__swiper__ = true; + swiper.support = getSupport(); + swiper.device = getDevice({ + userAgent: params.userAgent + }); + swiper.browser = getBrowser(); + swiper.eventsListeners = {}; + swiper.eventsAnyListeners = []; + swiper.modules = [...swiper.__modules__]; + if (params.modules && Array.isArray(params.modules)) { + swiper.modules.push(...params.modules); + } + const allModulesParams = {}; + swiper.modules.forEach(mod => { + mod({ + params, + swiper, + extendParams: moduleExtendParams(params, allModulesParams), + on: swiper.on.bind(swiper), + once: swiper.once.bind(swiper), + off: swiper.off.bind(swiper), + emit: swiper.emit.bind(swiper) + }); + }); + + // Extend defaults with modules params + const swiperParams = extend({}, defaults, allModulesParams); + + // Extend defaults with passed params + swiper.params = extend({}, swiperParams, extendedDefaults, params); + swiper.originalParams = extend({}, swiper.params); + swiper.passedParams = extend({}, params); + + // add event listeners + if (swiper.params && swiper.params.on) { + Object.keys(swiper.params.on).forEach(eventName => { + swiper.on(eventName, swiper.params.on[eventName]); + }); + } + if (swiper.params && swiper.params.onAny) { + swiper.onAny(swiper.params.onAny); + } + + // Extend Swiper + Object.assign(swiper, { + enabled: swiper.params.enabled, + el, + // Classes + classNames: [], + // Slides + slides: [], + slidesGrid: [], + snapGrid: [], + slidesSizesGrid: [], + // isDirection + isHorizontal() { + return swiper.params.direction === 'horizontal'; + }, + isVertical() { + return swiper.params.direction === 'vertical'; + }, + // Indexes + activeIndex: 0, + realIndex: 0, + // + isBeginning: true, + isEnd: false, + // Props + translate: 0, + previousTranslate: 0, + progress: 0, + velocity: 0, + animating: false, + cssOverflowAdjustment() { + // Returns 0 unless `translate` is > 2**23 + // Should be subtracted from css values to prevent overflow + return Math.trunc(this.translate / 2 ** 23) * 2 ** 23; + }, + // Locks + allowSlideNext: swiper.params.allowSlideNext, + allowSlidePrev: swiper.params.allowSlidePrev, + // Touch Events + touchEventsData: { + isTouched: undefined, + isMoved: undefined, + allowTouchCallbacks: undefined, + touchStartTime: undefined, + isScrolling: undefined, + currentTranslate: undefined, + startTranslate: undefined, + allowThresholdMove: undefined, + // Form elements to match + focusableElements: swiper.params.focusableElements, + // Last click time + lastClickTime: 0, + clickTimeout: undefined, + // Velocities + velocities: [], + allowMomentumBounce: undefined, + startMoving: undefined, + pointerId: null, + touchId: null + }, + // Clicks + allowClick: true, + // Touches + allowTouchMove: swiper.params.allowTouchMove, + touches: { + startX: 0, + startY: 0, + currentX: 0, + currentY: 0, + diff: 0 + }, + // Images + imagesToLoad: [], + imagesLoaded: 0 + }); + swiper.emit('_swiper'); + + // Init + if (swiper.params.init) { + swiper.init(); + } + + // Return app instance + // eslint-disable-next-line no-constructor-return + return swiper; + } + getDirectionLabel(property) { + if (this.isHorizontal()) { + return property; + } + // prettier-ignore + return { + 'width': 'height', + 'margin-top': 'margin-left', + 'margin-bottom ': 'margin-right', + 'margin-left': 'margin-top', + 'margin-right': 'margin-bottom', + 'padding-left': 'padding-top', + 'padding-right': 'padding-bottom', + 'marginRight': 'marginBottom' + }[property]; + } + getSlideIndex(slideEl) { + const { + slidesEl, + params + } = this; + const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + const firstSlideIndex = elementIndex(slides[0]); + return elementIndex(slideEl) - firstSlideIndex; + } + getSlideIndexByData(index) { + return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]); + } + recalcSlides() { + const swiper = this; + const { + slidesEl, + params + } = swiper; + swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`); + } + enable() { + const swiper = this; + if (swiper.enabled) return; + swiper.enabled = true; + if (swiper.params.grabCursor) { + swiper.setGrabCursor(); + } + swiper.emit('enable'); + } + disable() { + const swiper = this; + if (!swiper.enabled) return; + swiper.enabled = false; + if (swiper.params.grabCursor) { + swiper.unsetGrabCursor(); + } + swiper.emit('disable'); + } + setProgress(progress, speed) { + const swiper = this; + progress = Math.min(Math.max(progress, 0), 1); + const min = swiper.minTranslate(); + const max = swiper.maxTranslate(); + const current = (max - min) * progress + min; + swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + emitContainerClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const cls = swiper.el.className.split(' ').filter(className => { + return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0; + }); + swiper.emit('_containerClasses', cls.join(' ')); + } + getSlideClasses(slideEl) { + const swiper = this; + if (swiper.destroyed) return ''; + return slideEl.className.split(' ').filter(className => { + return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0; + }).join(' '); + } + emitSlidesClasses() { + const swiper = this; + if (!swiper.params._emitClasses || !swiper.el) return; + const updates = []; + swiper.slides.forEach(slideEl => { + const classNames = swiper.getSlideClasses(slideEl); + updates.push({ + slideEl, + classNames + }); + swiper.emit('_slideClass', slideEl, classNames); + }); + swiper.emit('_slideClasses', updates); + } + slidesPerViewDynamic(view, exact) { + if (view === void 0) { + view = 'current'; + } + if (exact === void 0) { + exact = false; + } + const swiper = this; + const { + params, + slides, + slidesGrid, + slidesSizesGrid, + size: swiperSize, + activeIndex + } = swiper; + let spv = 1; + if (typeof params.slidesPerView === 'number') return params.slidesPerView; + if (params.centeredSlides) { + let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0; + let breakLoop; + for (let i = activeIndex + 1; i < slides.length; i += 1) { + if (slides[i] && !breakLoop) { + slideSize += Math.ceil(slides[i].swiperSlideSize); + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + for (let i = activeIndex - 1; i >= 0; i -= 1) { + if (slides[i] && !breakLoop) { + slideSize += slides[i].swiperSlideSize; + spv += 1; + if (slideSize > swiperSize) breakLoop = true; + } + } + } else { + // eslint-disable-next-line + if (view === 'current') { + for (let i = activeIndex + 1; i < slides.length; i += 1) { + const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } else { + // previous + for (let i = activeIndex - 1; i >= 0; i -= 1) { + const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize; + if (slideInView) { + spv += 1; + } + } + } + } + return spv; + } + update() { + const swiper = this; + if (!swiper || swiper.destroyed) return; + const { + snapGrid, + params + } = swiper; + // Breakpoints + if (params.breakpoints) { + swiper.setBreakpoint(); + } + [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } + }); + swiper.updateSize(); + swiper.updateSlides(); + swiper.updateProgress(); + swiper.updateSlidesClasses(); + function setTranslate() { + const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate; + const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate()); + swiper.setTranslate(newTranslate); + swiper.updateActiveIndex(); + swiper.updateSlidesClasses(); + } + let translated; + if (params.freeMode && params.freeMode.enabled && !params.cssMode) { + setTranslate(); + if (params.autoHeight) { + swiper.updateAutoHeight(); + } + } else { + if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) { + const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides; + translated = swiper.slideTo(slides.length - 1, 0, false, true); + } else { + translated = swiper.slideTo(swiper.activeIndex, 0, false, true); + } + if (!translated) { + setTranslate(); + } + } + if (params.watchOverflow && snapGrid !== swiper.snapGrid) { + swiper.checkOverflow(); + } + swiper.emit('update'); + } + changeDirection(newDirection, needUpdate) { + if (needUpdate === void 0) { + needUpdate = true; + } + const swiper = this; + const currentDirection = swiper.params.direction; + if (!newDirection) { + // eslint-disable-next-line + newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal'; + } + if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') { + return swiper; + } + swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`); + swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`); + swiper.emitContainerClasses(); + swiper.params.direction = newDirection; + swiper.slides.forEach(slideEl => { + if (newDirection === 'vertical') { + slideEl.style.width = ''; + } else { + slideEl.style.height = ''; + } + }); + swiper.emit('changeDirection'); + if (needUpdate) swiper.update(); + return swiper; + } + changeLanguageDirection(direction) { + const swiper = this; + if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return; + swiper.rtl = direction === 'rtl'; + swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl; + if (swiper.rtl) { + swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'rtl'; + } else { + swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`); + swiper.el.dir = 'ltr'; + } + swiper.update(); + } + mount(element) { + const swiper = this; + if (swiper.mounted) return true; + + // Find el + let el = element || swiper.params.el; + if (typeof el === 'string') { + el = document.querySelector(el); + } + if (!el) { + return false; + } + el.swiper = swiper; + if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) { + swiper.isElement = true; + } + const getWrapperSelector = () => { + return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`; + }; + const getWrapper = () => { + if (el && el.shadowRoot && el.shadowRoot.querySelector) { + const res = el.shadowRoot.querySelector(getWrapperSelector()); + // Children needs to return slot items + return res; + } + return elementChildren(el, getWrapperSelector())[0]; + }; + // Find Wrapper + let wrapperEl = getWrapper(); + if (!wrapperEl && swiper.params.createElements) { + wrapperEl = createElement('div', swiper.params.wrapperClass); + el.append(wrapperEl); + elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => { + wrapperEl.append(slideEl); + }); + } + Object.assign(swiper, { + el, + wrapperEl, + slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl, + hostEl: swiper.isElement ? el.parentNode.host : el, + mounted: true, + // RTL + rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl', + rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'), + wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box' + }); + return true; + } + init(el) { + const swiper = this; + if (swiper.initialized) return swiper; + const mounted = swiper.mount(el); + if (mounted === false) return swiper; + swiper.emit('beforeInit'); + + // Set breakpoint + if (swiper.params.breakpoints) { + swiper.setBreakpoint(); + } + + // Add Classes + swiper.addClasses(); + + // Update size + swiper.updateSize(); + + // Update slides + swiper.updateSlides(); + if (swiper.params.watchOverflow) { + swiper.checkOverflow(); + } + + // Set Grab Cursor + if (swiper.params.grabCursor && swiper.enabled) { + swiper.setGrabCursor(); + } + + // Slide To Initial Slide + if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) { + swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true); + } else { + swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true); + } + + // Create loop + if (swiper.params.loop) { + swiper.loopCreate(); + } + + // Attach events + swiper.attachEvents(); + const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')]; + if (swiper.isElement) { + lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]')); + } + lazyElements.forEach(imageEl => { + if (imageEl.complete) { + processLazyPreloader(swiper, imageEl); + } else { + imageEl.addEventListener('load', e => { + processLazyPreloader(swiper, e.target); + }); + } + }); + preload(swiper); + + // Init Flag + swiper.initialized = true; + preload(swiper); + + // Emit + swiper.emit('init'); + swiper.emit('afterInit'); + return swiper; + } + destroy(deleteInstance, cleanStyles) { + if (deleteInstance === void 0) { + deleteInstance = true; + } + if (cleanStyles === void 0) { + cleanStyles = true; + } + const swiper = this; + const { + params, + el, + wrapperEl, + slides + } = swiper; + if (typeof swiper.params === 'undefined' || swiper.destroyed) { + return null; + } + swiper.emit('beforeDestroy'); + + // Init Flag + swiper.initialized = false; + + // Detach events + swiper.detachEvents(); + + // Destroy loop + if (params.loop) { + swiper.loopDestroy(); + } + + // Cleanup styles + if (cleanStyles) { + swiper.removeClasses(); + if (el && typeof el !== 'string') { + el.removeAttribute('style'); + } + if (wrapperEl) { + wrapperEl.removeAttribute('style'); + } + if (slides && slides.length) { + slides.forEach(slideEl => { + slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass); + slideEl.removeAttribute('style'); + slideEl.removeAttribute('data-swiper-slide-index'); + }); + } + } + swiper.emit('destroy'); + + // Detach emitter events + Object.keys(swiper.eventsListeners).forEach(eventName => { + swiper.off(eventName); + }); + if (deleteInstance !== false) { + if (swiper.el && typeof swiper.el !== 'string') { + swiper.el.swiper = null; + } + deleteProps(swiper); + } + swiper.destroyed = true; + return null; + } + static extendDefaults(newDefaults) { + extend(extendedDefaults, newDefaults); + } + static get extendedDefaults() { + return extendedDefaults; + } + static get defaults() { + return defaults; + } + static installModule(mod) { + if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = []; + const modules = Swiper.prototype.__modules__; + if (typeof mod === 'function' && modules.indexOf(mod) < 0) { + modules.push(mod); + } + } + static use(module) { + if (Array.isArray(module)) { + module.forEach(m => Swiper.installModule(m)); + return Swiper; + } + Swiper.installModule(module); + return Swiper; + } + } + Object.keys(prototypes).forEach(prototypeGroup => { + Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => { + Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod]; + }); + }); + Swiper.use([Resize, Observer]); + + return Swiper; + +})(); diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.less b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.less new file mode 100644 index 0000000..8d5c5d3 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.less @@ -0,0 +1,251 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +@themeColor: #007aff; + +/* FONT_START */ +@font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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'); + font-weight: 400; + font-style: normal; +} +/* FONT_END */ + +:root { + --swiper-theme-color: @themeColor; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; + .swiper-slide, + .swiper-cube-shadow { + transform-style: preserve-3d; + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } + &.swiper-horizontal { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } + } + &.swiper-vertical { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } + } + &.swiper-free-mode { + > .swiper-wrapper { + scroll-snap-type: none; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; + } + } + &.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; + } + } + &.swiper-centered.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-centered.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); + } + } +} + +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d { + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ + + + diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.min.css b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.min.css new file mode 100644 index 0000000..981741c --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.min.js b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.min.js new file mode 100644 index 0000000..840f4db --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,i){void 0===s&&(s={}),void 0===i&&(i={}),Object.keys(i).forEach((r=>{void 0===s[r]?s[r]=i[r]:e(i[r])&&e(s[r])&&Object.keys(i[r]).length>0&&t(s[r],i[r])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function i(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const r={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function n(){const e="undefined"!=typeof window?window:{};return t(e,r),e}function a(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function l(e,t){void 0===t&&(t="x");const s=n();let i,r,a;const o=function(e){const t=n();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(r=o.transform||o.webkitTransform,r.split(",").length>6&&(r=r.split(", ").map((e=>e.replace(",","."))).join(", ")),a=new s.WebKitCSSMatrix("none"===r?"":r)):(a=o.MozTransform||o.OTransform||o.MsTransform||o.msTransform||o.transform||o.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),i=a.toString().split(",")),"x"===t&&(r=s.WebKitCSSMatrix?a.m41:16===i.length?parseFloat(i[12]):parseFloat(i[4])),"y"===t&&(r=s.WebKitCSSMatrix?a.m42:16===i.length?parseFloat(i[13]):parseFloat(i[5])),r||0}function d(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function c(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let i=1;it.indexOf(e)<0));for(let t=0,i=s.length;ta?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{o=(new Date).getTime(),null===l&&(l=o);const e=Math.max(Math.min((o-l)/d,1),0),n=.5-Math.cos(e*Math.PI)/2;let c=a+n*(s-a);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[i]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[i]:c})})),void r.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=r.requestAnimationFrame(u)};u()}function f(e,t){void 0===t&&(t="");const s=[...e.children];return e instanceof HTMLSlotElement&&s.push(...e.assignedElements()),t?s.filter((e=>e.matches(t))):s}function h(e){try{return void console.warn(e)}catch(e){}}function m(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:function(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}(t)),s}function v(e,t){return n().getComputedStyle(e,null).getPropertyValue(t)}function g(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function w(e,t,s){const i=n();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(i.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}let S,T,b;function y(){return S||(S=function(){const e=n(),t=i();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),S}function x(e){return void 0===e&&(e={}),T||(T=function(e){let{userAgent:t}=void 0===e?{}:e;const s=y(),i=n(),r=i.navigator.platform,a=t||i.navigator.userAgent,o={ios:!1,android:!1},l=i.screen.width,d=i.screen.height,c=a.match(/(Android);?[\s\/]+([\d.]+)?/);let p=a.match(/(iPad).*OS\s([\d_]+)/);const u=a.match(/(iPod)(.*OS\s([\d_]+))?/),f=!p&&a.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===r;let m="MacIntel"===r;return!p&&m&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${l}x${d}`)>=0&&(p=a.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),m=!1),c&&!h&&(o.os="android",o.android=!0),(p||f||u)&&(o.os="ios",o.ios=!0),o}(e)),T}function E(){return b||(b=function(){const e=n(),t=x();let s=!1;function i(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(i()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,i]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&i<2}}const r=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),a=i();return{isSafari:s||a,needPerspectiveFix:s,need3dFix:a||r&&t.ios,isWebView:r}}()),b}var M={on(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;const r=s?"unshift":"push";return e.split(" ").forEach((e=>{i.eventsListeners[e]||(i.eventsListeners[e]=[]),i.eventsListeners[e][r](t)})),i},once(e,t,s){const i=this;if(!i.eventsListeners||i.destroyed)return i;if("function"!=typeof t)return i;function r(){i.off(e,r),r.__emitterProxy&&delete r.__emitterProxy;for(var s=arguments.length,n=new Array(s),a=0;a=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((i,r)=>{(i===t||i.__emitterProxy&&i.__emitterProxy===t)&&s.eventsListeners[e].splice(r,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,i;for(var r=arguments.length,n=new Array(r),a=0;a{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(i,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(i,s)}))})),e}};const C=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const P=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const I=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},L=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},k=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const i="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),r=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=r,n=[s-t];return n.push(...Array.from({length:t}).map(((e,t)=>s+i+t))),void e.slides.forEach(((t,s)=>{n.includes(t.column)&&L(e,s)}))}const n=r+i-1;if(e.params.rewind||e.params.loop)for(let i=r-t;i<=n+t;i+=1){const t=(i%s+s)%s;(tn)&&L(e,t)}else for(let i=Math.max(r-t,0);i<=Math.min(n+t,s-1);i+=1)i!==r&&(i>n||i=0?x=parseFloat(x.replace("%",""))/100*n:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{a?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(p(i,"--swiper-centered-offset-before",""),p(i,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let I;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const L="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let i=0;i1&&h.push(e.virtualSize-n)}if(l&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const i=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),r=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e-n;h=h.map((e=>e<=0?-S:e>t?t+T:e))}if(s.centerInsufficientSlides){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{h[t]=e-s})),m.forEach(((e,t)=>{m[t]=e+s}))}}if(Object.assign(e,{slides:c,snapGrid:h,slidesGrid:m,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){p(i,"--swiper-centered-offset-before",-h[0]+"px"),p(i,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(u!==d&&e.emit("slidesLengthChange"),h.length!==b&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),m.length!==y&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(l||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,i=e.el.classList.contains(t);u<=s.maxBackfaceHiddenSlides?i||e.el.classList.add(t):i&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],i=t.virtual&&t.params.virtual.enabled;let r,n=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const a=e=>i?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(r=0;rt.slides.length&&!i)break;s.push(a(e))}else s.push(a(t.activeIndex));for(r=0;rn?e:n}(n||0===n)&&(t.wrapperEl.style.height=`${n}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let i=0;i=0?o=parseFloat(o.replace("%",""))/100*t.size:"string"==typeof o&&(o=parseFloat(o));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],m=u>=0&&u1&&f<=t.size||u<=0&&f>=t.size;m&&(t.visibleSlides.push(l),t.visibleSlidesIndexes.push(e)),C(l,m,s.slideVisibleClass),C(l,h,s.slideFullyVisibleClass),l.progress=r?-c:c,l.originalProgress=r?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,i=t.maxTranslate()-t.minTranslate();let{progress:r,isBeginning:n,isEnd:a,progressLoop:o}=t;const l=n,d=a;if(0===i)r=0,n=!0,a=!0;else{r=(e-t.minTranslate())/i;const s=Math.abs(e-t.minTranslate())<1,o=Math.abs(e-t.maxTranslate())<1;n=s||r<=0,a=o||r>=1,s&&(r=0),o&&(r=1)}if(s.loop){const s=t.getSlideIndexByData(0),i=t.getSlideIndexByData(t.slides.length-1),r=t.slidesGrid[s],n=t.slidesGrid[i],a=t.slidesGrid[t.slidesGrid.length-1],l=Math.abs(e);o=l>=r?(l-r)/a:(l+a-n)/a,o>1&&(o-=1)}Object.assign(t,{progress:r,progressLoop:o,isBeginning:n,isEnd:a}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),n&&!l&&t.emit("reachBeginning toEdge"),a&&!d&&t.emit("reachEnd toEdge"),(l&&!n||d&&!a)&&t.emit("fromEdge"),t.emit("progress",r)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:i,activeIndex:r}=e,n=e.virtual&&s.virtual.enabled,a=e.grid&&s.grid&&s.grid.rows>1,o=e=>f(i,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let l,d,c;if(n)if(s.loop){let t=r-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),l=o(`[data-swiper-slide-index="${t}"]`)}else l=o(`[data-swiper-slide-index="${r}"]`);else a?(l=t.filter((e=>e.column===r))[0],c=t.filter((e=>e.column===r+1))[0],d=t.filter((e=>e.column===r-1))[0]):l=t[r];l&&(a||(c=function(e,t){const s=[];for(;e.nextElementSibling;){const i=e.nextElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const i=e.previousElementSibling;t?i.matches(t)&&s.push(i):s.push(i),e=i}return s}(l,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{P(e,e===l,s.slideActiveClass),P(e,e===c,s.slideNextClass),P(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:i,params:r,activeIndex:n,realIndex:a,snapIndex:o}=t;let l,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,i=e.rtlTranslate?e.translate:-e.translate;let r;for(let e=0;e=t[e]&&i=t[e]&&i=t[e]&&(r=e);return s.normalizeSlideIndex&&(r<0||void 0===r)&&(r=0),r}(t)),i.indexOf(s)>=0)l=i.indexOf(s);else{const e=Math.min(r.slidesPerGroupSkip,d);l=e+Math.floor((d-e)/r.slidesPerGroup)}if(l>=i.length&&(l=i.length-1),d===n&&!t.params.loop)return void(l!==o&&(t.snapIndex=l,t.emit("snapIndexChange")));if(d===n&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&r.grid&&r.grid.rows>1;let u;if(t.virtual&&r.virtual.enabled&&r.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/r.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:o,snapIndex:l,previousRealIndex:a,realIndex:u,previousIndex:n,activeIndex:d}),t.initialized&&k(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(a!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,i=s.params;let r=e.closest(`.${i.slideClass}, swiper-slide`);!r&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!r&&e.matches&&e.matches(`.${i.slideClass}, swiper-slide`)&&(r=e)}));let n,a=!1;if(r)for(let e=0;el?l:i&&ea?"next":n=l.length&&(g=l.length-1);const w=-l[g];if(o.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(a=e)}if(n.initialized&&a!==p){if(!n.allowSlideNext&&(f?w>n.translate&&w>n.minTranslate():wn.translate&&w>n.maxTranslate()&&(p||0)!==a)return!1}let S;if(a!==(c||0)&&s&&n.emit("beforeSlideChangeStart"),n.updateProgress(w),S=a>p?"next":a0?(n._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,t&&requestAnimationFrame((()=>{n.wrapperEl.style.scrollSnapType="",n._immediateVirtual=!1}))}else{if(!n.support.smoothScroll)return u({swiper:n,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return n.setTransition(t),n.setTranslate(w),n.updateActiveIndex(a),n.updateSlidesClasses(),n.emit("beforeTransitionStart",t,i),n.transitionStart(s,S),0===t?n.transitionEnd(s,S):n.animating||(n.animating=!0,n.onSlideToWrapperTransitionEnd||(n.onSlideToWrapperTransitionEnd=function(e){n&&!n.destroyed&&e.target===this&&(n.wrapperEl.removeEventListener("transitionend",n.onSlideToWrapperTransitionEnd),n.onSlideToWrapperTransitionEnd=null,delete n.onSlideToWrapperTransitionEnd,n.transitionEnd(s,S))}),n.wrapperEl.addEventListener("transitionend",n.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,i){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const r=this;if(r.destroyed)return;void 0===t&&(t=r.params.speed);const n=r.grid&&r.params.grid&&r.params.grid.rows>1;let a=e;if(r.params.loop)if(r.virtual&&r.params.virtual.enabled)a+=r.virtual.slidesBefore;else{let e;if(n){const t=a*r.params.grid.rows;e=r.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=r.getSlideIndexByData(a);const t=n?Math.ceil(r.slides.length/r.params.grid.rows):r.slides.length,{centeredSlides:s}=r.params;let o=r.params.slidesPerView;"auto"===o?o=r.slidesPerViewDynamic():(o=Math.ceil(parseFloat(r.params.slidesPerView,10)),s&&o%2==0&&(o+=1));let l=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else a=r.getSlideIndexByData(a)}return requestAnimationFrame((()=>{r.slideTo(a,t,s,i)})),r},slideNext:function(e,t,s){void 0===t&&(t=!0);const i=this,{enabled:r,params:n,animating:a}=i;if(!r||i.destroyed)return i;void 0===e&&(e=i.params.speed);let o=n.slidesPerGroup;"auto"===n.slidesPerView&&1===n.slidesPerGroup&&n.slidesPerGroupAuto&&(o=Math.max(i.slidesPerViewDynamic("current",!0),1));const l=i.activeIndex{i.slideTo(i.activeIndex+l,e,t,s)})),!0}return n.rewind&&i.isEnd?i.slideTo(0,e,t,s):i.slideTo(i.activeIndex+l,e,t,s)},slidePrev:function(e,t,s){void 0===t&&(t=!0);const i=this,{params:r,snapGrid:n,slidesGrid:a,rtlTranslate:o,enabled:l,animating:d}=i;if(!l||i.destroyed)return i;void 0===e&&(e=i.params.speed);const c=i.virtual&&r.virtual.enabled;if(r.loop){if(d&&!c&&r.loopPreventsSliding)return!1;i.loopFix({direction:"prev"}),i._clientLeft=i.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(o?i.translate:-i.translate),f=n.map((e=>p(e)));let h=n[f.indexOf(u)-1];if(void 0===h&&r.cssMode){let e;n.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=n[e>0?e-1:e])}let m=0;if(void 0!==h&&(m=a.indexOf(h),m<0&&(m=i.activeIndex-1),"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(m=m-i.slidesPerViewDynamic("previous",!0)+1,m=Math.max(m,0))),r.rewind&&i.isBeginning){const r=i.params.virtual&&i.params.virtual.enabled&&i.virtual?i.virtual.slides.length-1:i.slides.length-1;return i.slideTo(r,e,t,s)}return r.loop&&0===i.activeIndex&&r.cssMode?(requestAnimationFrame((()=>{i.slideTo(m,e,t,s)})),!0):i.slideTo(m,e,t,s)},slideReset:function(e,t,s){void 0===t&&(t=!0);const i=this;if(!i.destroyed)return void 0===e&&(e=i.params.speed),i.slideTo(i.activeIndex,e,t,s)},slideToClosest:function(e,t,s,i){void 0===t&&(t=!0),void 0===i&&(i=.5);const r=this;if(r.destroyed)return;void 0===e&&(e=r.params.speed);let n=r.activeIndex;const a=Math.min(r.params.slidesPerGroupSkip,n),o=a+Math.floor((n-a)/r.params.slidesPerGroup),l=r.rtlTranslate?r.translate:-r.translate;if(l>=r.snapGrid[o]){const e=r.snapGrid[o];l-e>(r.snapGrid[o+1]-e)*i&&(n+=r.params.slidesPerGroup)}else{const e=r.snapGrid[o-1];l-e<=(r.snapGrid[o]-e)*i&&(n-=r.params.slidesPerGroup)}return n=Math.max(n,0),n=Math.min(n,r.slidesGrid.length-1),r.slideTo(n,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,i="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let r,n=e.clickedIndex;const o=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;r=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?ne.slides.length-e.loopedSlides+i/2?(e.loopFix(),n=e.getSlideIndex(f(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n):n>e.slides.length-i?(e.loopFix(),n=e.getSlideIndex(f(s,`${o}[data-swiper-slide-index="${r}"]`)[0]),a((()=>{e.slideTo(n)}))):e.slideTo(n)}else e.slideTo(n)}};var D={loopCreate:function(e){const t=this,{params:s,slidesEl:i}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const r=()=>{f(i,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},n=t.grid&&s.grid&&s.grid.rows>1,a=s.slidesPerGroup*(n?s.grid.rows:1),o=t.slides.length%a!=0,l=n&&t.slides.length%s.grid.rows!=0,d=e=>{for(let i=0;i1;d.lengthe.classList.contains(f.slideActiveClass)))[0]):y=n;const x="next"===i||!i,E="prev"===i||!i;let M=0,C=0;const P=S?Math.ceil(d.length/f.grid.rows):d.length,I=(S?d[n].column:n)+(m&&void 0===r?-v/2+.5:0);if(I=0;t-=1)d[t].column===e&&T.push(t)}else T.push(P-t-1)}}else if(I+v>P-w){C=Math.max(I-(P-2*w),g);for(let e=0;e{e.column===t&&b.push(s)})):b.push(t)}}if(l.__preventObserver__=!0,requestAnimationFrame((()=>{l.__preventObserver__=!1})),E&&T.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),x&&b.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),l.recalcSlides(),"auto"===f.slidesPerView?l.updateSlides():S&&(T.length>0&&E||b.length>0&&x)&&l.slides.forEach(((e,t)=>{l.grid.updateSlide(t,e,l.slides)})),f.watchSlidesProgress&&l.updateSlidesOffset(),s)if(T.length>0&&E){if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y+M]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y+Math.ceil(M),0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else if(r){const e=S?T.length/f.grid.rows:T.length;l.slideTo(l.activeIndex+e,0,!1,!0),l.touchEventsData.currentTranslate=l.translate}}else if(b.length>0&&x)if(void 0===t){const e=l.slidesGrid[y],t=l.slidesGrid[y-C]-e;o?l.setTranslate(l.translate-t):(l.slideTo(y-C,0,!1,!0),r&&(l.touchEventsData.startTranslate=l.touchEventsData.startTranslate-t,l.touchEventsData.currentTranslate=l.touchEventsData.currentTranslate-t))}else{const e=S?b.length/f.grid.rows:b.length;l.slideTo(l.activeIndex-e,0,!1,!0)}if(l.allowSlidePrev=c,l.allowSlideNext=p,l.controller&&l.controller.control&&!a){const e={slideRealIndex:t,direction:i,setTranslate:r,activeSlideIndex:n,byController:!0};Array.isArray(l.controller.control)?l.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===f.slidesPerView&&s})})):l.controller.control instanceof l.constructor&&l.controller.control.params.loop&&l.controller.control.loopFix({...e,slideTo:l.controller.control.params.slidesPerView===f.slidesPerView&&s})}l.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const i=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;i[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),i.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function _(e,t,s){const i=n(),{params:r}=e,a=r.edgeSwipeDetection,o=r.edgeSwipeThreshold;return!a||!(s<=o||s>=i.innerWidth-o)||"prevent"===a&&(t.preventDefault(),!0)}function V(e){const t=this,s=i();let r=e;r.originalEvent&&(r=r.originalEvent);const a=t.touchEventsData;if("pointerdown"===r.type){if(null!==a.pointerId&&a.pointerId!==r.pointerId)return;a.pointerId=r.pointerId}else"touchstart"===r.type&&1===r.targetTouches.length&&(a.touchId=r.targetTouches[0].identifier);if("touchstart"===r.type)return void _(t,r,r.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===r.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=r.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=t.contains(e);if(!s&&t instanceof HTMLSlotElement)return[...element.assignedElements()].includes(e);return s}(p,t.wrapperEl))return;if("which"in r&&3===r.which)return;if("button"in r&&r.button>0)return;if(a.isTouched&&a.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,f=r.composedPath?r.composedPath():r.path;u&&r.target&&r.target.shadowRoot&&f&&(p=f[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,m=!(!r.target||!r.target.shadowRoot);if(l.noSwiping&&(m?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===i()||s===n())return null;s.assignedSlot&&(s=s.assignedSlot);const r=s.closest(e);return r||s.getRootNode?r||t(s.getRootNode().host):null}(t)}(h,p):p.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=r.pageX,d.currentY=r.pageY;const v=d.currentX,g=d.currentY;if(!_(t,r,v))return;Object.assign(a,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=v,d.startY=g,a.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(a.allowThresholdMove=!1);let w=!0;p.matches(a.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(a.isTouched=!1)),s.activeElement&&s.activeElement.matches(a.focusableElements)&&s.activeElement!==p&&s.activeElement.blur();const S=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!S||p.isContentEditable||r.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",r)}function N(e){const t=i(),s=this,r=s.touchEventsData,{params:n,touches:a,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!n.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==r.touchId)return;if(p.pointerId!==r.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===r.touchId))[0],!c||c.identifier!==r.touchId)return}else c=p;if(!r.isTouched)return void(r.startMoving&&r.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,f=c.pageY;if(p.preventedByNestedSwiper)return a.startX=u,void(a.startY=f);if(!s.allowTouchMove)return p.target.matches(r.focusableElements)||(s.allowClick=!1),void(r.isTouched&&(Object.assign(a,{startX:u,startY:f,currentX:u,currentY:f}),r.touchStartTime=o()));if(n.touchReleaseOnEdges&&!n.loop)if(s.isVertical()){if(fa.startY&&s.translate>=s.minTranslate())return r.isTouched=!1,void(r.isMoved=!1)}else if(ua.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&p.target===t.activeElement&&p.target.matches(r.focusableElements))return r.isMoved=!0,void(s.allowClick=!1);r.allowTouchCallbacks&&s.emit("touchMove",p),a.previousX=a.currentX,a.previousY=a.currentY,a.currentX=u,a.currentY=f;const h=a.currentX-a.startX,m=a.currentY-a.startY;if(s.params.threshold&&Math.sqrt(h**2+m**2)=25&&(e=180*Math.atan2(Math.abs(m),Math.abs(h))/Math.PI,r.isScrolling=s.isHorizontal()?e>n.touchAngle:90-e>n.touchAngle)}if(r.isScrolling&&s.emit("touchMoveOpposite",p),void 0===r.startMoving&&(a.currentX===a.startX&&a.currentY===a.startY||(r.startMoving=!0)),r.isScrolling||"touchmove"===p.type&&r.preventTouchMoveFromPointerMove)return void(r.isTouched=!1);if(!r.startMoving)return;s.allowClick=!1,!n.cssMode&&p.cancelable&&p.preventDefault(),n.touchMoveStopPropagation&&!n.nested&&p.stopPropagation();let v=s.isHorizontal()?h:m,g=s.isHorizontal()?a.currentX-a.previousX:a.currentY-a.previousY;n.oneWayMovement&&(v=Math.abs(v)*(l?1:-1),g=Math.abs(g)*(l?1:-1)),a.diff=v,v*=n.touchRatio,l&&(v=-v,g=-g);const w=s.touchesDirection;s.swipeDirection=v>0?"prev":"next",s.touchesDirection=g>0?"prev":"next";const S=s.params.loop&&!n.cssMode,T="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!r.isMoved){if(S&&T&&s.loopFix({direction:s.swipeDirection}),r.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}r.allowMomentumBounce=!1,!n.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),r.isMoved&&r.allowThresholdMove&&w!==s.touchesDirection&&S&&T&&Math.abs(v)>=1)return Object.assign(a,{startX:u,startY:f,currentX:u,currentY:f,startTranslate:r.currentTranslate}),r.loopSwapReset=!0,void(r.startTranslate=r.currentTranslate);s.emit("sliderMove",p),r.isMoved=!0,r.currentTranslate=v+r.startTranslate;let b=!0,y=n.resistanceRatio;if(n.touchReleaseOnEdges&&(y=0),v>0?(S&&T&&r.allowThresholdMove&&r.currentTranslate>(n.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),r.currentTranslate>s.minTranslate()&&(b=!1,n.resistance&&(r.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+r.startTranslate+v)**y))):v<0&&(S&&T&&r.allowThresholdMove&&r.currentTranslate<(n.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]:s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===n.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(n.slidesPerView,10)))}),r.currentTranslater.startTranslate&&(r.currentTranslate=r.startTranslate),s.allowSlidePrev||s.allowSlideNext||(r.currentTranslate=r.startTranslate),n.threshold>0){if(!(Math.abs(v)>n.threshold||r.allowThresholdMove))return void(r.currentTranslate=r.startTranslate);if(!r.allowThresholdMove)return r.allowThresholdMove=!0,a.startX=a.currentX,a.startY=a.currentY,r.currentTranslate=r.startTranslate,void(a.diff=s.isHorizontal()?a.currentX-a.startX:a.currentY-a.startY)}n.followFinger&&!n.cssMode&&((n.freeMode&&n.freeMode.enabled&&s.freeMode||n.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),n.freeMode&&n.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(r.currentTranslate),s.setTranslate(r.currentTranslate))}function F(e){const t=this,s=t.touchEventsData;let i,r=e;r.originalEvent&&(r=r.originalEvent);if("touchend"===r.type||"touchcancel"===r.type){if(i=[...r.changedTouches].filter((e=>e.identifier===s.touchId))[0],!i||i.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(r.pointerId!==s.pointerId)return;i=r}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(r.type)){if(!(["pointercancel","contextmenu"].includes(r.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:n,touches:l,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!n.simulateTouch&&"mouse"===r.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",r),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&n.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);n.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),f=u-s.touchStartTime;if(t.allowClick){const e=r.path||r.composedPath&&r.composedPath();t.updateClickedSlide(e&&e[0]||r.target,e),t.emit("tap click",r),f<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",r)}if(s.lastClickTime=o(),a((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===l.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=n.followFinger?d?t.translate:-t.translate:-s.currentTranslate,n.cssMode)return;if(n.freeMode&&n.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const m=h>=-t.maxTranslate()&&!t.params.loop;let v=0,g=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&h=c[e])&&(v=e,g=c[c.length-1]-c[c.length-2])}let w=null,S=null;n.rewind&&(t.isBeginning?S=n.virtual&&n.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const T=(h-c[v])/g,b=vn.longSwipesMs){if(!n.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(T>=n.longSwipesRatio?t.slideTo(n.rewind&&t.isEnd?w:v+b):t.slideTo(v)),"prev"===t.swipeDirection&&(T>1-n.longSwipesRatio?t.slideTo(v+b):null!==S&&T<0&&Math.abs(T)>n.longSwipesRatio?t.slideTo(S):t.slideTo(v))}else{if(!n.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(r.target===t.navigation.nextEl||r.target===t.navigation.prevEl)?r.target===t.navigation.nextEl?t.slideTo(v+b):t.slideTo(v):("next"===t.swipeDirection&&t.slideTo(null!==w?w:v+b),"prev"===t.swipeDirection&&t.slideTo(null!==S?S:v))}}function B(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:i,allowSlidePrev:r,snapGrid:n}=e,a=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const o=a&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||o?e.params.loop&&!a?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=r,e.allowSlideNext=i,e.params.watchOverflow&&n!==e.snapGrid&&e.checkOverflow()}function $(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function H(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:i}=e;if(!i)return;let r;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const n=e.maxTranslate()-e.minTranslate();r=0===n?0:(e.translate-e.minTranslate())/n,r!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function R(e){const t=this;I(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function j(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const W=(e,t)=>{const s=i(),{params:r,el:n,wrapperEl:a,device:o}=e,l=!!r.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;n&&"string"!=typeof n&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:l}),n[d]("touchstart",e.onTouchStart,{passive:!1}),n[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:l}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:l}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(r.preventClicks||r.preventClicksPropagation)&&n[d]("click",e.onClick,!0),r.cssMode&&a[d]("scroll",e.onScroll),r.updateOnWindowResize?e[c](o.ios||o.android?"resize orientationchange observerUpdate":"resize observerUpdate",B,!0):e[c]("observerUpdate",B,!0),n[d]("load",e.onLoad,{capture:!0}))};const Y=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var q={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function X(e,t){return function(s){void 0===s&&(s={});const i=Object.keys(s)[0],r=s[i];"object"==typeof r&&null!==r?(!0===e[i]&&(e[i]={enabled:!0}),"navigation"===i&&e[i]&&e[i].enabled&&!e[i].prevEl&&!e[i].nextEl&&(e[i].auto=!0),["pagination","scrollbar"].indexOf(i)>=0&&e[i]&&e[i].enabled&&!e[i].el&&(e[i].auto=!0),i in e&&"enabled"in r?("object"!=typeof e[i]||"enabled"in e[i]||(e[i].enabled=!0),e[i]||(e[i]={enabled:!1}),c(t,s)):c(t,s)):c(t,s)}}const U={eventsEmitter:M,update:O,translate:A,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;i.cssMode||(i.autoHeight&&s.updateAutoHeight(),z({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:i}=s;s.animating=!1,i.cssMode||(s.setTransition(0),z({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:G,loop:D,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=V.bind(e),e.onTouchMove=N.bind(e),e.onTouchEnd=F.bind(e),e.onDocumentTouchStart=j.bind(e),t.cssMode&&(e.onScroll=H.bind(e)),e.onClick=$.bind(e),e.onLoad=R.bind(e),W(e,"on")},detachEvents:function(){W(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:i,el:r}=e,n=i.breakpoints;if(!n||n&&0===Object.keys(n).length)return;const a=e.getBreakpoint(n,e.params.breakpointsBase,e.el);if(!a||e.currentBreakpoint===a)return;const o=(a in n?n[a]:void 0)||e.originalParams,l=Y(e,i),d=Y(e,o),p=e.params.grabCursor,u=o.grabCursor,f=i.enabled;l&&!d?(r.classList.remove(`${i.containerModifierClass}grid`,`${i.containerModifierClass}grid-column`),e.emitContainerClasses()):!l&&d&&(r.classList.add(`${i.containerModifierClass}grid`),(o.grid.fill&&"column"===o.grid.fill||!o.grid.fill&&"column"===i.grid.fill)&&r.classList.add(`${i.containerModifierClass}grid-column`),e.emitContainerClasses()),p&&!u?e.unsetGrabCursor():!p&&u&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===o[t])return;const s=i[t]&&i[t].enabled,r=o[t]&&o[t].enabled;s&&!r&&e[t].disable(),!s&&r&&e[t].enable()}));const h=o.direction&&o.direction!==i.direction,m=i.loop&&(o.slidesPerView!==i.slidesPerView||h),v=i.loop;h&&s&&e.changeDirection(),c(e.params,o);const g=e.params.enabled,w=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),f&&!g?e.disable():!f&&g&&e.enable(),e.currentBreakpoint=a,e.emit("_beforeBreakpoint",o),s&&(m?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!v&&w?(e.loopCreate(t),e.updateSlides()):v&&!w&&e.loopDestroy()),e.emit("breakpoint",o)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let i=!1;const r=n(),a="window"===t?r.innerHeight:s.clientHeight,o=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:a*t,point:e}}return{value:e,point:e}}));o.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:i,el:r,device:n}=e,a=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((i=>{e[i]&&s.push(t+i)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:i},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:n.android},{ios:n.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...a),r.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},K={};class J{constructor(){let e,t;for(var s=arguments.length,r=new Array(s),n=0;n1){const e=[];return a.querySelectorAll(t.el).forEach((s=>{const i=c({},t,{el:s});e.push(new J(i))})),e}const o=this;o.__swiper__=!0,o.support=y(),o.device=x({userAgent:t.userAgent}),o.browser=E(),o.eventsListeners={},o.eventsAnyListeners=[],o.modules=[...o.__modules__],t.modules&&Array.isArray(t.modules)&&o.modules.push(...t.modules);const l={};o.modules.forEach((e=>{e({params:t,swiper:o,extendParams:X(t,l),on:o.on.bind(o),once:o.once.bind(o),off:o.off.bind(o),emit:o.emit.bind(o)})}));const d=c({},q,l);return o.params=c({},d,K,t),o.originalParams=c({},o.params),o.passedParams=c({},t),o.params&&o.params.on&&Object.keys(o.params.on).forEach((e=>{o.on(e,o.params.on[e])})),o.params&&o.params.onAny&&o.onAny(o.params.onAny),Object.assign(o,{enabled:o.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===o.params.direction,isVertical:()=>"vertical"===o.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:o.params.allowSlideNext,allowSlidePrev:o.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:o.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:o.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),o.emit("_swiper"),o.params.init&&o.init(),o}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,i=g(f(t,`.${s.slideClass}, swiper-slide`)[0]);return g(e)-i}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const i=s.minTranslate(),r=(s.maxTranslate()-i)*e+i;s.translateTo(r,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const i=e.getSlideClasses(s);t.push({slideEl:s,classNames:i}),e.emit("_slideClass",s,i)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:i,slidesGrid:r,slidesSizesGrid:n,size:a,activeIndex:o}=this;let l=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=i[o]?Math.ceil(i[o].swiperSlideSize):0;for(let s=o+1;sa&&(e=!0));for(let s=o-1;s>=0;s-=1)i[s]&&!e&&(t+=i[s].swiperSlideSize,l+=1,t>a&&(e=!0))}else if("current"===e)for(let e=o+1;e=0;e-=1){r[o]-r[e]{t.complete&&I(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)i(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;r=e.slideTo(t.length-1,0,!1,!0)}else r=e.slideTo(e.activeIndex,0,!1,!0);r||i()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,i=s.params.direction;return e||(e="horizontal"===i?"vertical":"horizontal"),e===i||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${i}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const i=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let r=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(i())}return f(s,i())[0]})();return!r&&t.params.createElements&&(r=m("div",t.params.wrapperClass),s.append(r),f(s,`.${t.params.slideClass}`).forEach((e=>{r.append(e)}))),Object.assign(t,{el:s,wrapperEl:r,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:r,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===v(s,"direction")),wrongRTL:"-webkit-box"===v(r,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?I(t,e):e.addEventListener("load",(e=>{I(t,e.target)}))})),k(t),t.initialized=!0,k(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:i,el:r,wrapperEl:n,slides:a}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),i.loop&&s.loopDestroy(),t&&(s.removeClasses(),r&&"string"!=typeof r&&r.removeAttribute("style"),n&&n.removeAttribute("style"),a&&a.length&&a.forEach((e=>{e.classList.remove(i.slideVisibleClass,i.slideFullyVisibleClass,i.slideActiveClass,i.slideNextClass,i.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){c(K,e)}static get extendedDefaults(){return K}static get defaults(){return q}static installModule(e){J.prototype.__modules__||(J.prototype.__modules__=[]);const t=J.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>J.installModule(e))),J):(J.installModule(e),J)}}return Object.keys(U).forEach((e=>{Object.keys(U[e]).forEach((t=>{J.prototype[t]=U[e][t]}))})),J.use([function(e){let{swiper:t,on:s,emit:i}=e;const r=n();let a=null,o=null;const l=()=>{t&&!t.destroyed&&t.initialized&&(i("beforeResize"),i("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&i("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==r.ResizeObserver?t&&!t.destroyed&&t.initialized&&(a=new ResizeObserver((e=>{o=r.requestAnimationFrame((()=>{const{width:s,height:i}=t;let r=s,n=i;e.forEach((e=>{let{contentBoxSize:s,contentRect:i,target:a}=e;a&&a!==t.el||(r=i?i.width:(s[0]||s).inlineSize,n=i?i.height:(s[0]||s).blockSize)})),r===s&&n===i||l()}))})),a.observe(t.el)):(r.addEventListener("resize",l),r.addEventListener("orientationchange",d))})),s("destroy",(()=>{o&&r.cancelAnimationFrame(o),a&&a.unobserve&&t.el&&(a.unobserve(t.el),a=null),r.removeEventListener("resize",l),r.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const a=[],o=n(),l=function(e,s){void 0===s&&(s={});const i=new(o.MutationObserver||o.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void r("observerUpdate",e[0]);const s=function(){r("observerUpdate",e[0])};o.requestAnimationFrame?o.requestAnimationFrame(s):o.setTimeout(s,0)}));i.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),a.push(i)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),i("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=function(e,t){const s=[];let i=e.parentElement;for(;i;)t?i.matches(t)&&s.push(i):s.push(i),i=i.parentElement;return s}(t.hostEl);for(let t=0;t{a.forEach((e=>{e.disconnect()})),a.splice(0,a.length)}))}]),J}(); +//# sourceMappingURL=swiper.min.js.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.min.js.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.min.js.map new file mode 100644 index 0000000..9926ed3 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.js.js","names":["Swiper","isObject$1","obj","constructor","Object","extend$1","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","split","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","extend","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","filter","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classes","classList","add","Array","isArray","trim","c","classesToTokens","elementStyle","prop","elementIndex","child","previousSibling","elementOuterSize","size","includeMargins","offsetWidth","support","deviceCached","browser","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","need3dFix","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","slideEl","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","shadowRoot","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","abs","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","v","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","e","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","parent","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","scrollLeft","scrollTop","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","prototypeGroup","protoMethod","observer","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","parents","parentElement","elementParents","disconnect"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.min.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.min.mjs new file mode 100644 index 0000000..ad5831e --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.min.mjs @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +export{S as Swiper,S as default}from"./shared/swiper-core.min.mjs"; +//# sourceMappingURL=swiper.min.mjs.map \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.min.mjs.map b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.min.mjs.map new file mode 100644 index 0000000..6938270 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.min.mjs.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper.mjs.mjs","names":["S"],"sources":["0"],"mappings":";;;;;;;;;;;;OAYSA,YAAaA,iBAAoB"} \ No newline at end of file diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.mjs b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.mjs new file mode 100644 index 0000000..25595d2 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.mjs @@ -0,0 +1,13 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +export { S as Swiper, S as default } from './shared/swiper-core.mjs'; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.scss b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.scss new file mode 100644 index 0000000..f8424c2 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/swiper.scss @@ -0,0 +1,252 @@ +/** + * Swiper 11.1.7 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: July 24, 2024 + */ + +@import 'swiper-vars.scss'; +@at-root { + @font-face { + font-family: 'swiper-icons'; + src: url('data:application/font-woff;charset=utf-8;base64, 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') + format('woff'); + font-weight: 400; + font-style: normal; + } +} +@at-root { + :root { + --swiper-theme-color: #{$themeColor}; + /* + --swiper-preloader-color: var(--swiper-theme-color); + --swiper-wrapper-transition-timing-function: initial; + */ + } +} +:host { + position: relative; + display: block; + margin-left: auto; + margin-right: auto; + z-index: 1; +} +.swiper { + margin-left: auto; + margin-right: auto; + position: relative; + overflow: hidden; + list-style: none; + padding: 0; + /* Fix of Webkit flickering */ + z-index: 1; + display: block; +} +.swiper-vertical > .swiper-wrapper { + flex-direction: column; +} +.swiper-wrapper { + position: relative; + width: 100%; + height: 100%; + z-index: 1; + display: flex; + transition-property: transform; + transition-timing-function: var(--swiper-wrapper-transition-timing-function, initial); + box-sizing: content-box; +} +.swiper-android .swiper-slide, +.swiper-ios .swiper-slide, +.swiper-wrapper { + transform: translate3d(0px, 0, 0); +} +.swiper-horizontal { + touch-action: pan-y; +} +.swiper-vertical { + touch-action: pan-x; +} +.swiper-slide { + flex-shrink: 0; + width: 100%; + height: 100%; + position: relative; + transition-property: transform; + display: block; +} +.swiper-slide-invisible-blank { + visibility: hidden; +} +/* Auto Height */ +.swiper-autoheight, +.swiper-autoheight .swiper-slide { + height: auto; +} +.swiper-autoheight .swiper-wrapper { + align-items: flex-start; + transition-property: transform, height; +} +.swiper-backface-hidden .swiper-slide { + transform: translateZ(0); + backface-visibility: hidden; +} +/* 3D Effects */ +.swiper-3d.swiper-css-mode .swiper-wrapper { + perspective: 1200px; +} +.swiper-3d .swiper-wrapper { + transform-style: preserve-3d; +} +.swiper-3d { + perspective: 1200px; + .swiper-slide, + .swiper-cube-shadow { + transform-style: preserve-3d; + } +} + +/* CSS Mode */ +.swiper-css-mode { + > .swiper-wrapper { + overflow: auto; + scrollbar-width: none; /* For Firefox */ + -ms-overflow-style: none; /* For Internet Explorer and Edge */ + &::-webkit-scrollbar { + display: none; + } + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: start start; + } + &.swiper-horizontal { + > .swiper-wrapper { + scroll-snap-type: x mandatory; + } + } + &.swiper-vertical { + > .swiper-wrapper { + scroll-snap-type: y mandatory; + } + } + &.swiper-free-mode { + > .swiper-wrapper { + scroll-snap-type: none; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: none; + } + } + &.swiper-centered { + > .swiper-wrapper::before { + content: ''; + flex-shrink: 0; + order: 9999; + } + > .swiper-wrapper > .swiper-slide { + scroll-snap-align: center center; + scroll-snap-stop: always; + } + } + &.swiper-centered.swiper-horizontal { + > .swiper-wrapper > .swiper-slide:first-child { + margin-inline-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + height: 100%; + min-height: 1px; + width: var(--swiper-centered-offset-after); + } + } + &.swiper-centered.swiper-vertical { + > .swiper-wrapper > .swiper-slide:first-child { + margin-block-start: var(--swiper-centered-offset-before); + } + > .swiper-wrapper::before { + width: 100%; + min-width: 1px; + height: var(--swiper-centered-offset-after); + } + } +} + +/* Slide styles start */ +/* 3D Shadows */ +.swiper-3d { + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom, + .swiper-slide-shadow, + .swiper-slide-shadow-left, + .swiper-slide-shadow-right, + .swiper-slide-shadow-top, + .swiper-slide-shadow-bottom { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + pointer-events: none; + z-index: 10; + } + .swiper-slide-shadow { + background: rgba(0, 0, 0, 0.15); + } + .swiper-slide-shadow-left { + background-image: linear-gradient(to left, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-right { + background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-top { + background-image: linear-gradient(to top, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } + .swiper-slide-shadow-bottom { + background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0)); + } +} +.swiper-lazy-preloader { + width: 42px; + height: 42px; + position: absolute; + left: 50%; + top: 50%; + margin-left: -21px; + margin-top: -21px; + z-index: 10; + transform-origin: 50%; + box-sizing: border-box; + border: 4px solid var(--swiper-preloader-color, var(--swiper-theme-color)); + border-radius: 50%; + border-top-color: transparent; +} +.swiper:not(.swiper-watch-progress), +.swiper-watch-progress .swiper-slide-visible { + .swiper-lazy-preloader { + animation: swiper-preloader-spin 1s infinite linear; + } +} +.swiper-lazy-preloader-white { + --swiper-preloader-color: #fff; +} +.swiper-lazy-preloader-black { + --swiper-preloader-color: #000; +} +@keyframes swiper-preloader-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +/* Slide styles end */ + + + diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/index.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/index.d.ts new file mode 100644 index 0000000..e6e0dc4 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/index.d.ts @@ -0,0 +1,6 @@ +// @ts-nocheck +export * from './shared.d.ts'; +export { default as Swiper } from './swiper-class.d.ts'; +export * from './swiper-events.d.ts'; +export * from './swiper-options.d.ts'; +export * from './modules/public-api.d.ts'; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/a11y.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/a11y.d.ts new file mode 100644 index 0000000..67cb64a --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/a11y.d.ts @@ -0,0 +1,103 @@ +export interface A11yMethods {} + +export interface A11yEvents {} + +export interface A11yOptions { + /** + * Enables A11y + * + * @default true + */ + enabled?: boolean; + + /** + * Message for screen readers for previous button + * + * @default 'Previous slide' + */ + prevSlideMessage?: string; + + /** + * Message for screen readers for next button + * + * @default 'Next slide' + */ + nextSlideMessage?: string; + + /** + * Message for screen readers for previous button when swiper is on first slide + * + * @default 'This is the first slide' + */ + firstSlideMessage?: string; + + /** + * Message for screen readers for next button when swiper is on last slide + * + * @default 'This is the last slide' + */ + lastSlideMessage?: string; + + /** + * Message for screen readers for single pagination bullet + * + * @default 'Go to slide {{index}}' + */ + paginationBulletMessage?: string; + + /** + * CSS class name of A11y notification + * + * @default 'swiper-notification' + */ + notificationClass?: string; + + /** + * Message for screen readers for outer swiper container + * + * @default null + */ + containerMessage?: string | null; + + /** + * Message for screen readers describing the role of outer swiper container + * + * @default null + */ + containerRoleDescriptionMessage?: string | null; + + /** + * Message for screen readers describing the role of slide element + * + * @default null + */ + itemRoleDescriptionMessage?: string | null; + + /** + * Message for screen readers describing the label of slide element + * + * @default '{{index}} / {{slidesLength}}' + */ + slideLabelMessage?: string; + + /** + * Value of swiper slide `role` attribute + * + * @default 'group' + */ + slideRole?: string; + + /** + * Value of `id` attribute to be set on swiper-wrapper. If `null` will be generated automatically + * + * @default null + */ + id?: string | number | null; + + /** + * Enables scrolling to the slide that has been focused + * + * @default true + */ + scrollOnFocus?: boolean; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/autoplay.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/autoplay.d.ts new file mode 100644 index 0000000..4c87488 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/autoplay.d.ts @@ -0,0 +1,133 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface AutoplayMethods { + /** + * Whether autoplay enabled and running + */ + running: boolean; + + /** + * Whether autoplay is paused + */ + paused: boolean; + + /** + * If autoplay is paused, it contains time left (in ms) before transition to next slide + */ + timeLeft: number; + + /** + * Pause autoplay + */ + pause(): void; + + /** + * Resume autoplay + */ + resume(): void; + + /** + * Start autoplay + */ + start(): boolean; + + /** + * Stop autoplay + */ + stop(): boolean; +} + +export interface AutoplayEvents { + /** + * Event will be fired in when autoplay started + */ + autoplayStart: (swiper: Swiper) => void; + /** + * Event will be fired when autoplay stopped + */ + autoplayStop: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay pause + */ + autoplayPause: (swiper: Swiper) => void; + /** + * Event will be fired on autoplay resume + */ + autoplayResume: (swiper: Swiper) => void; + /** + * Event triggers continuously while autoplay is enabled. It contains time left (in ms) before transition to next slide and percentage of that time related to autoplay delay + */ + autoplayTimeLeft: (swiper: Swiper, timeLeft: number, percentage: number) => void; + /** + * Event will be fired when slide changed with autoplay + */ + autoplay: (swiper: Swiper) => void; +} + +/** + * Object with autoplay parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + * }); + * ``` + */ +export interface AutoplayOptions { + /** + * Delay between transitions (in ms). If this parameter is not specified, auto play will be disabled + * + * If you need to specify different delay for specific slides you can do it by using + * `data-swiper-autoplay` (in ms) attribute on slide. + * + * @example + * ```html + * + *
+ * ``` + * + * @default 3000 + */ + delay?: number; + + /** + * Enable this parameter and autoplay will be stopped when it reaches last slide (has no effect in loop mode) + * + * @default false + */ + stopOnLastSlide?: boolean; + + /** + * Set to `false` and autoplay will not be disabled after user interactions (swipes), + * it will be restarted every time after interaction + * + * @default true + */ + disableOnInteraction?: boolean; + + /** + * Enables autoplay in reverse direction + * + * @default false + */ + reverseDirection?: boolean; + + /** + * When enabled autoplay will wait for wrapper transition to continue. + * Can be disabled in case of using Virtual Translate when your + * slider may not have transition + * + * @default true + */ + waitForTransition?: boolean; + + /** + * When enabled autoplay will be paused on pointer (mouse) enter over Swiper container. + * + * @default false + */ + pauseOnMouseEnter?: boolean; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/controller.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/controller.d.ts new file mode 100644 index 0000000..cf61aef --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/controller.d.ts @@ -0,0 +1,35 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ControllerMethods { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper + */ + control?: Swiper | Swiper[]; +} + +export interface ControllerEvents {} + +export interface ControllerOptions { + /** + * Pass here another Swiper instance or array with Swiper instances that should be controlled + * by this Swiper. Also accepts string with CSS selector of Swiper element, or HTMLElement of Swiper element + */ + control?: Swiper | Swiper[] | string | HTMLElement | null; + + /** + * Set to `true` and controlling will be in inverse direction + * + * @default false + */ + inverse?: boolean; + + /** + * Defines a way how to control another slider: slide by slide + * (with respect to other slider's grid) or depending on all slides/container + * (depending on total slider percentage). + * + * @default 'slide' + */ + by?: 'slide' | 'container'; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-cards.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-cards.d.ts new file mode 100644 index 0000000..9f688a4 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-cards.d.ts @@ -0,0 +1,33 @@ +export interface CardsEffectMethods {} + +export interface CardsEffectEvents {} + +export interface CardsEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + + /** + * Enables cards rotation + * + * @default true + */ + rotate?: boolean; + + /** + * Rotate angle per slide (in degrees) + * + * @default 2 + */ + perSlideRotate?: number; + + /** + * Offset distance per slide (in px) + * + * @default 8 + */ + perSlideOffset?: number; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-coverflow.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-coverflow.d.ts new file mode 100644 index 0000000..847201f --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-coverflow.d.ts @@ -0,0 +1,42 @@ +export interface CoverflowEffectMethods {} + +export interface CoverflowEffectEvents {} + +export interface CoverflowEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Slide rotate in degrees + * + * @default 50 + */ + rotate?: number; + /** + * Stretch space between slides (in px) + * + * @default 0 + */ + stretch?: number; + /** + * Depth offset in px (slides translate in Z axis) + * + * @default 100 + */ + depth?: number; + /** + * Slide scale effect + * + * @default 1 + */ + scale?: number; + /** + * Effect multiplier + * + * @default 1 + */ + modifier?: number; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-creative.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-creative.d.ts new file mode 100644 index 0000000..eba8987 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-creative.d.ts @@ -0,0 +1,86 @@ +interface CreativeEffectTransform { + translate?: (string | number)[]; + rotate?: number[]; + opacity?: number; + scale?: number; + shadow?: boolean; + origin?: string; +} + +export interface CreativeEffectMethods {} + +export interface CreativeEffectEvents {} + +export interface CreativeEffectOptions { + /** + * Previous slide transformations. Accepts object of the following type: + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + prev?: CreativeEffectTransform; + /** + * Next slide transformations. + * + * @example + * ```js + * { + * // Array with translate X, Y and Z values + * translate: (string | number)[]; + * // Array with rotate X, Y and Z values (in deg) + * rotate?: number[]; + * // Slide opacity + * opacity?: number; + * // Slide scale + * scale?: number; + * // Enables slide shadow + * shadow?: boolean; + * // Transform origin, e.g. `left bottom` + * origin?: string; + * } + * ``` + * + */ + next?: CreativeEffectTransform; + + /** + * Limit progress/offset to amount of side slides. If `1`, then slides all slides after prev/next will have same state. If `2`, then all slides after 2nd before/after active will have same state, etc. + * + * @default 1 + */ + limitProgress?: number; + /** + * Splits shadow "opacity" per slide based on `limitProgress` (only if transformation shadows enabled). E.g. setting `limitProgress: 2` and enabling `shadowPerProgress`, will set shadow opacity to `0.5` and `1` on two slides next to active. With this parameter disabled, all slides beside active will have shadow with `1` opacity + * + * @default false + */ + shadowPerProgress?: boolean; + /** + * Allows to multiply slides transformations and opacity. + * + * @default 1 + */ + progressMultiplier?: number; + /** + * Enable this parameter if your custom transforms require 3D transformations (`translateZ`, `rotateX`, `rotateY` ) + * + * @default true + */ + perspective?: boolean; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-cube.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-cube.d.ts new file mode 100644 index 0000000..8ce90bb --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-cube.d.ts @@ -0,0 +1,30 @@ +export interface CubeEffectMethods {} + +export interface CubeEffectEvents {} + +export interface CubeEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Enables main slider shadow + * + * @default true + */ + shadow?: boolean; + /** + * Main shadow offset in px + * + * @default 20 + */ + shadowOffset?: number; + /** + * Main shadow scale ratio + * + * @default 0.94 + */ + shadowScale?: number; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-fade.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-fade.d.ts new file mode 100644 index 0000000..1d3123c --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-fade.d.ts @@ -0,0 +1,12 @@ +export interface FadeEffectMethods {} + +export interface FadeEffectEvents {} + +export interface FadeEffectOptions { + /** + * Enables slides cross fade + * + * @default false + */ + crossFade?: boolean; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-flip.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-flip.d.ts new file mode 100644 index 0000000..aa672c3 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/effect-flip.d.ts @@ -0,0 +1,18 @@ +export interface FlipEffectMethods {} + +export interface FlipEffectEvents {} + +export interface FlipEffectOptions { + /** + * Enables slides shadows + * + * @default true + */ + slideShadows?: boolean; + /** + * Limit edge slides rotation + * + * @default true + */ + limitRotation?: boolean; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/free-mode.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/free-mode.d.ts new file mode 100644 index 0000000..474d776 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/free-mode.d.ts @@ -0,0 +1,64 @@ +export interface FreeModeMethods { + onTouchMove(): void; + onTouchEnd(): void; +} + +export interface FreeModeEvents {} + +export interface FreeModeOptions { + /** + * Whether the free mode is enabled + * + * @default false + */ + enabled?: boolean; + + /** + * If enabled, then slide will keep moving for a while after you release it + * + * @default true + */ + momentum?: boolean; + + /** + * Higher value produces larger momentum distance after you release slider + * + * @default 1 + */ + momentumRatio?: number; + + /** + * Higher value produces larger momentum velocity after you release slider + * + * @default 1 + */ + momentumVelocityRatio?: number; + + /** + * Set to `false` if you want to disable momentum bounce in free mode + * + * @default true + */ + momentumBounce?: boolean; + + /** + * Higher value produces larger momentum bounce effect + * + * @default 1 + */ + momentumBounceRatio?: number; + + /** + * Minimum touchmove-velocity required to trigger free mode momentum + * + * @default 0.02 + */ + minimumVelocity?: number; + + /** + * Set to enabled to enable snap to slides positions in free mode + * + * @default false + */ + sticky?: boolean; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/grid.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/grid.d.ts new file mode 100644 index 0000000..070b14a --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/grid.d.ts @@ -0,0 +1,21 @@ +export interface GridMethods {} + +export interface GridEvents {} + +export interface GridOptions { + /** + * Number of slides rows, for multirow layout + * + * @default 1 + */ + rows?: number; + + /** + * Can be `'column'` or `'row'`. Defines how slides should fill rows, by column or by row + * + * @note if used with loop mode make sure number of slides is even specified in loop mode requirements, or enable `loopAddBlankSlides` parameter + * + * @default 'column' + */ + fill?: 'row' | 'column'; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/hash-navigation.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/hash-navigation.d.ts new file mode 100644 index 0000000..8b6edfe --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/hash-navigation.d.ts @@ -0,0 +1,38 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface HashNavigationMethods {} + +export interface HashNavigationEvents { + /** + * Event will be fired on window hash change + */ + hashChange: (swiper: Swiper) => void; + /** + * Event will be fired when swiper updates the hash + */ + hashSet: (swiper: Swiper) => void; +} + +export interface HashNavigationOptions { + /** + * Set to `true` to enable also navigation through slides (when hashnav + * is enabled) by browser history or by setting directly hash on document location + * + * @default false + */ + watchState?: boolean; + + /** + * Works in addition to hashnav to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; + + /** + * Designed to be used with Virtual slides when it is impossible to find slide in DOM by hash (e.g. not yet rendered) + * + */ + getSlideIndex?: (swiper: Swiper, hash: string) => number; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/history.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/history.d.ts new file mode 100644 index 0000000..70fc813 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/history.d.ts @@ -0,0 +1,43 @@ +export interface HistoryMethods {} + +export interface HistoryEvents {} + +export interface HistoryOptions { + /** + * Enables History Plugin. + * + * @default false + */ + enabled?: boolean; + + /** + * Swiper page root, useful to specify when you use Swiper history mode not on root website page. + * For example can be `https://my-website.com/` or `https://my-website.com/subpage/` or `/subpage/` + * + * + * @default '' + */ + root?: string; + + /** + * Works in addition to hashnav or history to replace current url state with the + * new one instead of adding it to history + * + * @default false + */ + replaceState?: boolean; + + /** + * Url key for slides + * + * @default 'slides' + */ + key?: string; + + /** + * Keep query parameters when changing browser url. + * + * @default false + */ + keepQuery?: boolean; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/index.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/index.d.ts new file mode 100644 index 0000000..d0a1b9b --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/index.d.ts @@ -0,0 +1,53 @@ +import type { SwiperModule } from '../shared.d.ts'; + +declare const A11y: SwiperModule; +declare const Autoplay: SwiperModule; +declare const Controller: SwiperModule; +declare const EffectCoverflow: SwiperModule; +declare const EffectCube: SwiperModule; +declare const EffectFade: SwiperModule; +declare const EffectFlip: SwiperModule; +declare const EffectCreative: SwiperModule; +declare const EffectCards: SwiperModule; +declare const HashNavigation: SwiperModule; +declare const History: SwiperModule; +declare const Keyboard: SwiperModule; +declare const Lazy: SwiperModule; +declare const Mousewheel: SwiperModule; +declare const Navigation: SwiperModule; +declare const Pagination: SwiperModule; +declare const Parallax: SwiperModule; +declare const Scrollbar: SwiperModule; +declare const Thumbs: SwiperModule; +declare const Virtual: SwiperModule; +declare const Zoom: SwiperModule; +declare const FreeMode: SwiperModule; +declare const Grid: SwiperModule; +declare const Manipulation: SwiperModule; + +export { + A11y, + Autoplay, + Controller, + EffectCoverflow, + EffectCube, + EffectFade, + EffectFlip, + EffectCreative, + EffectCards, + HashNavigation, + History, + Keyboard, + Lazy, + Mousewheel, + Navigation, + Pagination, + Parallax, + Scrollbar, + Thumbs, + Virtual, + Zoom, + FreeMode, + Grid, + Manipulation, +}; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/keyboard.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/keyboard.d.ts new file mode 100644 index 0000000..d38dd8d --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/keyboard.d.ts @@ -0,0 +1,46 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface KeyboardMethods { + /** + * Whether the keyboard control is enabled + */ + enabled: boolean; + + /** + * Enable keyboard control + */ + enable(): void; + + /** + * Disable keyboard control + */ + disable(): void; +} + +export interface KeyboardEvents { + /** + * Event will be fired on key press + */ + keyPress: (swiper: Swiper, keyCode: string) => void; +} + +export interface KeyboardOptions { + /** + * Set to `true` to enable keyboard control + * + * @default false + */ + enabled?: boolean; + /** + * When enabled it will control sliders that are currently in viewport + * + * @default true + */ + onlyInViewport?: boolean; + /** + * When enabled it will enable keyboard navigation by Page Up and Page Down keys + * + * @default true + */ + pageUpDown?: boolean; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/manipulation.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/manipulation.d.ts new file mode 100644 index 0000000..f4d068d --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/manipulation.d.ts @@ -0,0 +1,70 @@ +export interface ManipulationMethods { + /** + * Add new slides to the end. slides could be + * HTMLElement or HTML string with new slide or + * array with such slides, for example: + * + * @example + * ```js + * appendSlide('
Slide 10"
') + * + * appendSlide([ + * '
Slide 10"
', + * '
Slide 11"
' + * ]); + * ``` + */ + appendSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the beginning. slides could be + * HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * prependSlide('
Slide 0"
') + * + * prependSlide([ + * '
Slide 1"
', + * '
Slide 2"
' + * ]); + * ``` + */ + prependSlide(slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Add new slides to the required index. slides could be HTMLElement or HTML string with new slide or array with such slides, for example: + * + * @example + * ```js + * addSlide(1, '
Slide 10"
') + * + * addSlide(1, [ + * '
Slide 10"
', + * '
Slide 11"
' + * ]); + * ``` + */ + addSlide(index: number, slides: HTMLElement | string | string[] | HTMLElement[]): void; + + /** + * Remove selected slides. slideIndex could be a number with slide index to remove or array with indexes. + * + * @example + * ```js + * removeSlide(0); // remove first slide + * removeSlide([0, 1]); // remove first and second slides + * removeAllSlides(); // Remove all slides + * ``` + */ + removeSlide(slideIndex: number | number[]): void; + + /** + * Remove all slides + */ + removeAllSlides(): void; +} + +export interface ManipulationEvents {} + +export interface ManipulationOptions {} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/mousewheel.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/mousewheel.d.ts new file mode 100644 index 0000000..4f2bb8f --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/mousewheel.d.ts @@ -0,0 +1,86 @@ +import type Swiper from '../swiper-class.d.ts'; +import type { CSSSelector } from '../shared.d.ts'; + +export interface MousewheelMethods { + /** + * Whether the mousewheel control is enabled + */ + enabled: boolean; + + /** + * Enable mousewheel control + */ + enable(): void; + + /** + * Disable mousewheel control + */ + disable(): void; +} + +export interface MousewheelEvents { + /** + * Event will be fired on mousewheel scroll + */ + scroll: (swiper: Swiper, event: WheelEvent) => void; +} + +export interface MousewheelOptions { + /** + * Set to `true` to enable mousewheel control + * + * @default false + */ + enabled?: boolean; + /** + * Set to `true` to force mousewheel swipes to axis. So in horizontal mode mousewheel will work only with horizontal mousewheel scrolling, and only with vertical scrolling in vertical mode. + * + * @default false + */ + forceToAxis?: boolean; + /** + * Set to `true` and swiper will release mousewheel event and allow page scrolling when swiper is on edge positions (in the beginning or in the end) + * + * @default false + */ + releaseOnEdges?: boolean; + /** + * Set to `true` to invert sliding direction + * + * @default false + */ + invert?: boolean; + /** + * Multiplier of mousewheel data, allows to tweak mouse wheel sensitivity + * + * @default 1 + */ + sensitivity?: number; + /** + * String with CSS selector or HTML element of the container accepting mousewheel events. By default it is swiper + * + * @default 'container' + */ + eventsTarget?: 'container' | 'wrapper' | CSSSelector | HTMLElement; + + /** + * Minimum mousewheel scroll delta to trigger swiper slide change + * + * @default null + */ + thresholdDelta?: number | null; + + /** + * Minimum mousewheel scroll time delta (in ms) to trigger swiper slide change + * + * @default null + */ + thresholdTime?: number | null; + + /** + * Scrolling on elements with this class will be ignored + * + * @default 'swiper-no-mousewheel' + */ + noMousewheelClass?: string; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/navigation.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/navigation.d.ts new file mode 100644 index 0000000..3d5c6e6 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/navigation.d.ts @@ -0,0 +1,105 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface NavigationMethods { + /** + * HTMLElement of "next" navigation button + */ + nextEl: HTMLElement; + + /** + * HTMLElement of "previous" navigation button + */ + prevEl: HTMLElement; + + /** + * Update navigation buttons state (enabled/disabled) + */ + update(): void; + + /** + * Initialize navigation + */ + init(): void; + + /** + * Destroy navigation + */ + destroy(): void; +} + +export interface NavigationEvents { + /** + * Event will be fired on navigation hide + */ + navigationHide: (swiper: Swiper) => void; + /** + * Event will be fired on navigation show + */ + navigationShow: (swiper: Swiper) => void; + /** + * Event will be fired on navigation prev button click + */ + navigationPrev: (swiper: Swiper) => void; + /** + * Event will be fired on navigation next button click + */ + navigationNext: (swiper: Swiper) => void; +} + +export interface NavigationOptions { + /** + * Boolean property to use with breakpoints to enable/disable navigation on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the element that will work + * like "next" button after click on it + * + * @default null + */ + nextEl?: CSSSelector | HTMLElement | null; + + /** + * String with CSS selector or HTML element of the element that will work + * like "prev" button after click on it + * + * @default null + */ + prevEl?: CSSSelector | HTMLElement | null; + + /** + * Toggle navigation buttons visibility after click on Slider's container + * + * @default false + */ + hideOnClick?: boolean; + + /** + * CSS class name added to navigation button when it becomes disabled + * + * @default 'swiper-button-disabled' + */ + disabledClass?: string; + + /** + * CSS class name added to navigation button when it becomes hidden + * + * @default 'swiper-button-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name added to navigation button when it is disabled + * + * @default 'swiper-button-lock' + */ + lockClass?: string; + + /** + * CSS class name added on swiper container when navigation is disabled by breakpoint + * + * @default 'swiper-navigation-disabled' + */ + navigationDisabledClass?: string; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/pagination.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/pagination.d.ts new file mode 100644 index 0000000..5af6341 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/pagination.d.ts @@ -0,0 +1,295 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface PaginationMethods { + /** + * HTMLElement of pagination container element + */ + el: HTMLElement; + + /** + * Array of pagination bullets + * HTML elements. To get specific slide HTMLElement + * use `swiper.pagination.bullets[1]`. + */ + bullets: HTMLElement[]; + + /** + * Render pagination layout + */ + render(): void; + + /** + * Update pagination state (enabled/disabled/active) + */ + update(): void; + + /** + * Initialize pagination + */ + init(): void; + + /** + * Destroy pagination + */ + destroy(): void; +} + +export interface PaginationEvents { + /** + * Event will be fired after pagination rendered + */ + paginationRender: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired when pagination updated + */ + paginationUpdate: (swiper: Swiper, paginationEl: HTMLElement) => void; + + /** + * Event will be fired on pagination hide + */ + paginationHide: (swiper: Swiper) => void; + + /** + * Event will be fired on pagination show + */ + paginationShow: (swiper: Swiper) => void; +} + +export interface PaginationOptions { + /** + * Boolean property to use with breakpoints to enable/disable pagination on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with pagination + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * String with type of pagination. Can be `'bullets'`, `'fraction'`, `'progressbar'` or `'custom'` + * + * @default 'bullets' + */ + type?: 'bullets' | 'fraction' | 'progressbar' | 'custom'; + + /** + * Defines which HTML tag will be used to represent single pagination bullet. Only for `'bullets'` pagination type. + * + * @default 'span' + */ + bulletElement?: string; + + /** + * Good to enable if you use bullets pagination with a lot of slides. So it will keep only few bullets visible at the same time. + * + * @default false + */ + dynamicBullets?: boolean; + + /** + * The number of main bullets visible when `dynamicBullets` enabled. + * + * @default 1 + */ + dynamicMainBullets?: number; + + /** + * Toggle (hide/show) pagination container visibility after click on Slider's container + * + * @default true + */ + hideOnClick?: boolean; + + /** + * If `true` then clicking on pagination button will cause transition to appropriate slide. Only for bullets pagination type + * + * @default false + */ + clickable?: boolean; + + /** + * Makes pagination progressbar opposite to Swiper's `direction` parameter, means vertical progressbar for horizontal swiper + * direction and horizontal progressbar for vertical swiper direction + * + * @default false + */ + progressbarOpposite?: boolean; + + /** + * format fraction pagination current number. Function receives current number, + * and you need to return formatted value + */ + formatFractionCurrent?: (number: number) => number | string; + + /** + * format fraction pagination total number. Function receives total number, and you + * need to return formatted value + */ + formatFractionTotal?: (number: number) => number | string; + + /** + * This parameter allows totally customize pagination bullets, you need to pass here a function that accepts `index` number of + * pagination bullet and required element class name (`className`). Only for `'bullets'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderBullet: function (index, className) { + * return '' + (index + 1) + ''; + * } + * }); + * ``` + */ + renderBullet?: (index: number, className: string) => string; + + /** + * This parameter allows to customize "fraction" pagination html. Only for `'fraction'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderFraction: function (currentClass, totalClass) { + * return '' + + * ' of ' + + * ''; + * } + * }); + * ``` + */ + renderFraction?: (currentClass: string, totalClass: string) => string; + + /** + * This parameter allows to customize "progress" pagination. Only for `'progress'` pagination type + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderProgressbar: function (progressbarFillClass) { + * return ''; + * } + * }); + * ``` + */ + renderProgressbar?: (progressbarFillClass: string) => string; + + /** + * This parameter is required for `'custom'` pagination type where you have to specify + * how it should be rendered. + * + * @default null + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * //... + * renderCustom: function (swiper, current, total) { + * return current + ' of ' + total; + * } + * }); + * ``` + */ + renderCustom?: (swiper: Swiper, current: number, total: number) => string; + + /** + * CSS class name of single pagination bullet + * + * @default 'swiper-pagination-bullet' + */ + bulletClass?: string; + + /** + * CSS class name of currently active pagination bullet + * + * @default 'swiper-pagination-bullet-active' + */ + bulletActiveClass?: string; + + /** + * The beginning of the modifier CSS class name that will be added to pagination depending on parameters + * + * @default 'swiper-pagination-' + */ + modifierClass?: string; + + /** + * CSS class name of the element with currently active index in "fraction" pagination + * + * @default 'swiper-pagination-current' + */ + currentClass?: string; + + /** + * CSS class name of the element with total number of "snaps" in "fraction" pagination + * + * @default 'swiper-pagination-total' + */ + totalClass?: string; + + /** + * CSS class name of pagination when it becomes inactive + * + * @default 'swiper-pagination-hidden' + */ + hiddenClass?: string; + + /** + * CSS class name of pagination progressbar fill element + * + * @default 'swiper-pagination-progressbar-fill' + */ + progressbarFillClass?: string; + + /** + * CSS class name of pagination progressbar opposite + * + * @default 'swiper-pagination-progressbar-opposite' + */ + progressbarOppositeClass?: string; + /** + * CSS class name set to pagination when it is clickable + * + * @default 'swiper-pagination-clickable' + */ + clickableClass?: string; + + /** + * CSS class name set to pagination when it is disabled + * + * @default 'swiper-pagination-lock' + */ + lockClass?: string; + + /** + * CSS class name set to pagination in horizontal Swiper + * + * @default 'swiper-pagination-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to pagination in vertical Swiper + * + * @default 'swiper-pagination-vertical' + */ + verticalClass?: string; + + /** + * CSS class name added on swiper container and pagination element when pagination is disabled by breakpoint + * + * @default 'swiper-pagination-disabled' + */ + paginationDisabledClass?: string; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/parallax.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/parallax.d.ts new file mode 100644 index 0000000..59729ea --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/parallax.d.ts @@ -0,0 +1,12 @@ +export interface ParallaxMethods {} + +export interface ParallaxEvents {} + +export interface ParallaxOptions { + /** + * Enable, if you want to use "parallaxed" elements inside of slider + * + * @default false + */ + enabled?: boolean; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/public-api.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/public-api.d.ts new file mode 100644 index 0000000..2553f46 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/public-api.d.ts @@ -0,0 +1,23 @@ +export type * from './a11y.d.ts'; +export type * from './autoplay.d.ts'; +export type * from './controller.d.ts'; +export type * from './effect-coverflow.d.ts'; +export type * from './effect-cube.d.ts'; +export type * from './effect-fade.d.ts'; +export type * from './effect-flip.d.ts'; +export type * from './effect-creative.d.ts'; +export type * from './effect-cards.d.ts'; +export type * from './hash-navigation.d.ts'; +export type * from './history.d.ts'; +export type * from './keyboard.d.ts'; +export type * from './mousewheel.d.ts'; +export type * from './navigation.d.ts'; +export type * from './pagination.d.ts'; +export type * from './parallax.d.ts'; +export type * from './scrollbar.d.ts'; +export type * from './thumbs.d.ts'; +export type * from './virtual.d.ts'; +export type * from './zoom.d.ts'; +export type * from './free-mode.d.ts'; +export type * from './grid.d.ts'; +export type * from './manipulation.d.ts'; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/scrollbar.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/scrollbar.d.ts new file mode 100644 index 0000000..4e04d95 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/scrollbar.d.ts @@ -0,0 +1,140 @@ +import type { CSSSelector } from '../shared.d.ts'; +import type Swiper from '../swiper-class.d.ts'; + +export interface ScrollbarMethods { + /** + * HTMLElement of Scrollbar container element + */ + el: HTMLElement; + + /** + * HTMLElement of Scrollbar draggable handler element + */ + dragEl: HTMLElement; + + /** + * Updates scrollbar track and handler sizes + */ + updateSize(): void; + + /** + * Updates scrollbar translate + */ + setTranslate(): void; + + /** + * Initialize scrollbar + */ + init(): void; + + /** + * Destroy scrollbar + */ + destroy(): void; +} + +export interface ScrollbarEvents { + /** + * Event will be fired on draggable scrollbar drag start + */ + scrollbarDragStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag move + */ + scrollbarDragMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired on draggable scrollbar drag end + */ + scrollbarDragEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; +} + +/** + * Object with scrollbar parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ +export interface ScrollbarOptions { + /** + * Boolean property to use with breakpoints to enable/disable scrollbar on certain breakpoints + */ + enabled?: boolean; + /** + * String with CSS selector or HTML element of the container with scrollbar. + * + * @default null + */ + el?: CSSSelector | HTMLElement | null; + + /** + * Hide scrollbar automatically after user interaction + * + * @default true + */ + hide?: boolean; + + /** + * Set to `true` to enable make scrollbar draggable that allows you to control slider position + * + * @default false + */ + draggable?: boolean; + + /** + * Set to `true` to snap slider position to slides when you release scrollbar + * + * @default false + */ + snapOnRelease?: boolean; + + /** + * Size of scrollbar draggable element in px + * + * @default 'auto' + */ + dragSize?: 'auto' | number; + + /** + * Scrollbar element additional CSS class when it is disabled + * + * @default 'swiper-scrollbar-lock' + */ + lockClass?: string; + + /** + * Scrollbar draggable element CSS class + * + * @default 'swiper-scrollbar-drag' + */ + dragClass?: string; + + /** + * CSS class name added on swiper container and scrollbar element when scrollbar is disabled by breakpoint + * + * @default 'swiper-scrollbar-disabled' + */ + scrollbarDisabledClass?: string; + + /** + * CSS class name set to scrollbar in horizontal Swiper + * + * @default 'swiper-scrollbar-horizontal' + */ + horizontalClass?: string; + + /** + * CSS class name set to scrollbar in vertical Swiper + * + * @default 'swiper-scrollbar-vertical' + */ + verticalClass?: string; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/thumbs.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/thumbs.d.ts new file mode 100644 index 0000000..51b2625 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/thumbs.d.ts @@ -0,0 +1,54 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ThumbsMethods { + /** + * Swiper instance of thumbs swiper + */ + swiper: Swiper; + + /** + * Update thumbs + */ + update(initial: boolean): void; + + /** + * Initialize thumbs + */ + init(): boolean; +} + +export interface ThumbsEvents {} + +export interface ThumbsOptions { + /** + * Swiper instance of swiper used as thumbs or object with Swiper parameters to initialize thumbs swiper + * + * @default null + */ + swiper?: Swiper | string | null; + /** + * Additional class that will be added to activated thumbs swiper slide + * + * @default 'swiper-slide-thumb-active' + */ + slideThumbActiveClass?: string; + /** + * Additional class that will be added to thumbs swiper + * + * @default 'swiper-thumbs' + */ + thumbsContainerClass?: string; + /** + * When enabled multiple thumbnail slides may get activated + * + * @default true + */ + multipleActiveThumbs?: boolean; + /** + * Allows to set on which thumbs active slide from edge it should automatically move scroll thumbs. For example, if set to 1 and last visible thumb will be activated (1 from edge) it will auto scroll thumbs + + * + * @default 0 + */ + autoScrollOffset?: number; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/virtual.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/virtual.d.ts new file mode 100644 index 0000000..bcf27bd --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/virtual.d.ts @@ -0,0 +1,135 @@ +export interface VirtualMethods { + /** + * Object with cached slides HTML elements + */ + cache: object; + + /** + * Index of first rendered slide + */ + from: number; + + /** + * Index of last rendered slide + */ + to: number; + + /** + * Array with slide items passed by `virtual.slides` parameter + */ + slides: T[]; + + /* + * Methods + */ + + /** + * Append slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + appendSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Prepend slide. `slides` can be a single slide item or array with such slides. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + prependSlide(slide: HTMLElement | string | HTMLElement[] | string[]): void; + + /** + * Remove specific slide or slides. `slideIndexes` can be a number with slide index to remove or array with indexes. + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + removeSlide(slideIndexes: number[]): void; + + /** + * Remove all slides + * + * @note Only for Core version (in React & Vue it should be done by modifying slides array/data/source) + */ + removeAllSlides(): void; + + /** + * Update virtual slides state + */ + update(force: boolean): void; +} + +export interface VirtualEvents {} + +export interface VirtualData { + /** + * slides left/top offset in px + */ + offset: number; + /** + * index of first slide required to be rendered + */ + from: number; + /** + * index of last slide required to be rendered + */ + to: number; + /** + * array with slide items to be rendered + */ + slides: T[]; +} + +export interface VirtualOptions { + /** + * Whether the virtual slides are enabled + * + * @default false + */ + enabled?: boolean; + /** + * Array with slides + * + * @default [] + */ + slides?: T[]; + /** + * Enables DOM cache of rendering slides html elements. Once they are rendered they will be saved to cache and reused from it. + * + * @default true + */ + cache?: boolean; + /** + * Increases amount of pre-rendered slides before active slide + * + * @default 0 + */ + addSlidesBefore?: number; + /** + * Increases amount of pre-rendered slides after active slide + * + * @default 0 + */ + addSlidesAfter?: number; + /** + * Function to render slide. As an argument it accepts current slide item for `slides` array and index number of the current slide. Function must return an outer HTML of the swiper slide or slide HTML element. + * + * @default null + */ + renderSlide?: (slide: T, index: any) => any | null; + /** + * Function for external rendering (e.g. using some other library to handle DOM manipulations and state like React.js or Vue.js). As an argument it accepts `data` object with the following properties: + * + * - `offset` - slides left/top offset in px + * - `from` - index of first slide required to be rendered + * - `to` - index of last slide required to be rendered + * - `slides` - array with slide items to be rendered + * + * @default null + */ + renderExternal?: (data: VirtualData) => any | null; + /** + * When enabled (by default) it will update Swiper layout right after renderExternal called. Useful to disable and update swiper manually when used with render libraries that renders asynchronously + * + * @default true + */ + renderExternalUpdate?: boolean; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/zoom.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/zoom.d.ts new file mode 100644 index 0000000..658f5ba --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/modules/zoom.d.ts @@ -0,0 +1,85 @@ +import type Swiper from '../swiper-class.d.ts'; + +export interface ZoomMethods { + /** + * Whether the zoom module is enabled + */ + enabled: boolean; + + /** + * Current image scale ratio + */ + scale: number; + + /** + * Enable zoom module + */ + enable(): void; + + /** + * Disable zoom module + */ + disable(): void; + + /** + * Zoom in image of the currently active slide. Optionally accepts custom zoom ratio + */ + in(ratio?: number): void; + + /** + * Zoom out image of the currently active slide + */ + out(): void; + + /** + * Toggle image zoom of the currently active slide + */ + toggle(event?: MouseEvent | TouchEvent | PointerEvent): void; +} + +export interface ZoomEvents { + /** + * Event will be fired on zoom change + */ + zoomChange: (swiper: Swiper, scale: number, imageEl: HTMLElement, slideEl: HTMLElement) => void; +} + +export interface ZoomOptions { + /** + * When set to true, the image will not be scaled past 100% of its original size + * + * @default false + */ + limitToOriginalSize?: boolean; + /** + * Maximum image zoom multiplier + * + * @default 3 + */ + maxRatio?: number; + /** + * Minimal image zoom multiplier + * + * @default 1 + */ + minRatio?: number; + /** + * Enable/disable zoom-in by slide's double tap + * + * @default true + */ + toggle?: boolean; + /** + * CSS class name of zoom container + * + * @default 'swiper-zoom-container' + */ + containerClass?: string; + /** + * CSS class name of zoomed in container + * + * @default 'swiper-slide-zoomed' + + */ + zoomedSlideClass?: string; +} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/shared.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/shared.d.ts new file mode 100644 index 0000000..3e410c5 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/shared.d.ts @@ -0,0 +1,13 @@ +import type { Swiper } from './index.d.ts'; + +export interface CSSSelector extends String {} + +export type SwiperModule = (options: { + params: Swiper['params']; + swiper: Swiper; + extendParams: (obj: { [name: string]: any }) => void; + on: Swiper['on']; + once: Swiper['once']; + off: Swiper['off']; + emit: Swiper['emit']; +}) => void; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/swiper-class.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/swiper-class.d.ts new file mode 100644 index 0000000..213916d --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/swiper-class.d.ts @@ -0,0 +1,492 @@ +import type { SwiperOptions } from './swiper-options.d.ts'; +import type { CSSSelector, SwiperModule } from './shared.d.ts'; +import type { SwiperEvents } from './swiper-events.d.ts'; + +import type { A11yMethods } from './modules/a11y.d.ts'; +import type { AutoplayMethods } from './modules/autoplay.d.ts'; +import type { ControllerMethods } from './modules/controller.d.ts'; +import type { CoverflowEffectMethods } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectMethods } from './modules/effect-cube.d.ts'; +import type { FadeEffectMethods } from './modules/effect-fade.d.ts'; +import type { FlipEffectMethods } from './modules/effect-flip.d.ts'; +import type { CreativeEffectMethods } from './modules/effect-creative.d.ts'; +import type { CardsEffectMethods } from './modules/effect-cards.d.ts'; +import type { HashNavigationMethods } from './modules/hash-navigation.d.ts'; +import type { HistoryMethods } from './modules/history.d.ts'; +import type { KeyboardMethods } from './modules/keyboard.d.ts'; +import type { MousewheelMethods } from './modules/mousewheel.d.ts'; +import type { NavigationMethods } from './modules/navigation.d.ts'; +import type { PaginationMethods } from './modules/pagination.d.ts'; +import type { ParallaxMethods } from './modules/parallax.d.ts'; +import type { ScrollbarMethods } from './modules/scrollbar.d.ts'; +import type { ThumbsMethods } from './modules/thumbs.d.ts'; +import type { VirtualMethods } from './modules/virtual.d.ts'; +import type { ZoomMethods } from './modules/zoom.d.ts'; +import type { FreeModeMethods } from './modules/free-mode.d.ts'; +import type { ManipulationMethods } from './modules/manipulation.d.ts'; + +interface SwiperClass { + /** Add event handler */ + on(event: E, handler: Events[E]): void; + /** Add event handler that will be removed after it was fired */ + once(event: E, handler: Events[E]): void; + /** Remove event handler */ + off(event: E, handler: Events[E]): void; + /** Remove all handlers for specified event */ + off(event: E): void; + /** Fire event on instance */ + emit(event: E, ...args: any[]): void; +} + +interface Swiper extends SwiperClass { + /** + * Object with passed initialization parameters + */ + params: SwiperOptions; + + /** + * Object with original initialization parameters + */ + originalParams: SwiperOptions; + + /** + * Slider container HTML element + */ + el: HTMLElement; + + /** + * Wrapper HTML element + */ + wrapperEl: HTMLElement; + + /** + * Array of slides HTML elements. To get specific slide HTMLElement use `swiper.slides[1]` + */ + slides: HTMLElement[]; + + /** + * !INTERNAL + */ + loopedSlides: number | null; + + /** + * Width of container + */ + width: number; + + /** + * Height of container + */ + height: number; + + /** + * Current value of wrapper translate + */ + translate: number; + + /** + * Current progress of wrapper translate (from 0 to 1) + */ + progress: number; + + /** + * Index number of currently active slide + * + * @note Note, that in loop mode active index value will be always shifted on a number of looped slides + */ + activeIndex: number; + + /** + * Index number of currently active slide considering rearranged slides in loop mode + */ + realIndex: number; + + /** + * Index number of previously active slide + */ + previousIndex: number; + + /** + * Index number of current snap in `snapGrid` + */ + snapIndex: number; + + /** + * Slides snap grid + */ + snapGrid: number[]; + + /** + * `true` if slider on most "left"/"top" position + */ + isBeginning: boolean; + + /** + * `true` if slider on most "right"/"bottom" position + */ + isEnd: boolean; + + /** + * `true` if slide is "locked" (by `watchOverflow`) and slides can not be, e.g. when amount of slides is less that slides per view + */ + isLocked: boolean; + + /** + * `true` if swiper is in transition + */ + animating: boolean; + + /** + * Object with the following touch event properties: + * + * - `swiper.touches.startX` + * - `swiper.touches.startY` + * - `swiper.touches.currentX` + * - `swiper.touches.currentY` + * - `swiper.touches.diff` + */ + touches: { + startX: number; + startY: number; + currentX: number; + currentY: number; + diff: number; + }; + + /** + * Index number of last clicked slide + */ + clickedIndex: number; + + /** + * Link to last clicked slide (HTMLElement) + */ + clickedSlide: HTMLElement; + + /** + * Disable / enable ability to slide to the next slides by assigning `false` / `true` to this property + */ + allowSlideNext: boolean; + + /** + * Disable / enable ability to slide to the previous slides by assigning `false` / `true` to this property + */ + allowSlidePrev: boolean; + + /** + * Disable / enable ability move slider by grabbing it with mouse or by touching it with finger (on touch screens) by assigning `false` / `true` to this property + */ + allowTouchMove: boolean; + + /** + * Direction of sliding + */ + swipeDirection: 'prev' | 'next'; + + /** + * !INTERNAL + */ + rtlTranslate: boolean; + + /** + * Disable Swiper (if it was enabled). When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + */ + disable(): void; + + /** + * Enable Swiper (if it was disabled) + * + */ + enable(): void; + + /** + * Set Swiper translate progress (from 0 to 1). Where 0 - its initial position (offset) on first slide, and 1 - its maximum position (offset) on last slide + * + * @param progress Swiper translate progress (from 0 to 1). + * @param speed Transition duration (in ms). + */ + setProgress(progress: number, speed?: number): void; + + /** + * Run transition to next slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideNext(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Run transition to previous slide. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slidePrev(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Run transition to the slide with index number equal to 'index' parameter for the + * duration equal to 'speed' parameter. + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideTo(index: number, speed?: number, runCallbacks?: boolean): boolean; + + /** + * Does the same as .slideTo but for the case when used with enabled loop. So this + * method will slide to slides with realIndex matching to passed index + * + * @param index Index number of slide. + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToLoop(index: number, speed?: number, runCallbacks?: boolean): Swiper; + + /** + * Reset swiper position to currently active slide for the duration equal to 'speed' + * parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideReset(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Reset swiper position to closest slide/snap point for the duration equal to 'speed' parameter. + * + * @param speed Transition duration (in ms). + * @param runCallbacks Set it to false (by default it is true) and transition will + * not produce transition events. + */ + slideToClosest(speed?: number, runCallbacks?: boolean): boolean; + + /** + * Get dynamically calculated amount of slides per view, useful only when slidesPerView set to `auto` + * + */ + slidesPerViewDynamic(): number; + + /** + * Force swiper to update its height (when autoHeight enabled) for the duration equal to + * 'speed' parameter + * + * @param speed Transition duration (in ms). + */ + updateAutoHeight(speed?: number): void; + + /** + * You should call it after you add/remove slides + * manually, or after you hide/show it, or do any + * custom DOM modifications with Swiper + * This method also includes subcall of the following + * methods which you can use separately: + */ + update(): void; + + /** + * recalculate size of swiper container + */ + updateSize(): void; + + /** + * recalculate number of slides and their offsets. Useful after you add/remove slides with JavaScript + */ + updateSlides(): void; + + /** + * recalculate swiper progress + */ + updateProgress(): void; + + /** + * update active/prev/next classes on slides and bullets + */ + updateSlidesClasses(): void; + + /** + * Changes slider direction from horizontal to vertical and back. + * + * @param direction New direction. If not specified, then will automatically changed to opposite direction + * @param needUpdate Will call swiper.update(). Default true + */ + changeDirection(direction?: 'horizontal' | 'vertical', needUpdate?: boolean): void; + + /** + * Changes slider language + * + * @param direction New direction. Should be `rtl` or `ltr` + */ + changeLanguageDirection(direction: 'rtl' | 'ltr'): void; + + /** + * Detach all events listeners + */ + detachEvents(): void; + + /** + * Attach all events listeners again + */ + attachEvents(): void; + + /** + * !INTERNAL + */ + loopCreate(): void; + + /** + * !INTERNAL + */ + loopDestroy(): void; + + /** + * Initialize slider + */ + init(el?: HTMLElement): Swiper; + + /** + * Destroy slider instance and detach all events listeners + * + * @param deleteInstance Set it to false (by default it is true) to not to delete Swiper instance + * @param cleanStyles Set it to true (by default it is true) and all custom styles will be removed from slides, wrapper and container. + * Useful if you need to destroy Swiper and to init again with new options or in different direction + */ + destroy(deleteInstance?: boolean, cleanStyles?: boolean): void; + + /** + * Set custom css3 transform's translate value for swiper wrapper + */ + setTranslate(translate: any): void; + + /** + * Get current value of swiper wrapper css3 transform translate + */ + getTranslate(): any; + + /** + * Animate custom css3 transform's translate value for swiper wrapper + * + * @param translate Translate value (in px) + * @param speed Transition duration (in ms) + * @param runCallbacks Set it to false (by default it is true) and transition will not produce transition events + * @param translateBounds Set it to false (by default it is true) and transition value can extend beyond min and max translate + * + */ + translateTo( + translate: number, + speed: number, + runCallbacks?: boolean, + translateBounds?: boolean, + ): any; + + /** + * Unset grab cursor + */ + unsetGrabCursor(): void; + + /** + * Set grab cursor + */ + setGrabCursor(): void; + + /** + * Add event listener that will be fired on all events + */ + onAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * Remove event listener that will be fired on all events + */ + offAny(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * !INTERNAL + */ + isHorizontal(): boolean; + + /** + * !INTERNAL + */ + getBreakpoint(breakpoints: SwiperOptions['breakpoints']): string; + + /** + * !INTERNAL + */ + setBreakpoint(): void; + + /** + * !INTERNAL + */ + currentBreakpoint: any; + + /** + * !INTERNAL + */ + destroyed: boolean; + + /** + * !INTERNAL + */ + modules: Array; + + a11y: A11yMethods; + autoplay: AutoplayMethods; + controller: ControllerMethods; + coverflowEffect: CoverflowEffectMethods; + cubeEffect: CubeEffectMethods; + fadeEffect: FadeEffectMethods; + flipEffect: FlipEffectMethods; + creativeEffect: CreativeEffectMethods; + cardsEffect: CardsEffectMethods; + hashNavigation: HashNavigationMethods; + history: HistoryMethods; + keyboard: KeyboardMethods; + mousewheel: MousewheelMethods; + navigation: NavigationMethods; + pagination: PaginationMethods; + parallax: ParallaxMethods; + scrollbar: ScrollbarMethods; + thumbs: ThumbsMethods; + virtual: VirtualMethods; + zoom: ZoomMethods; + freeMode: FreeModeMethods; +} + +interface Swiper extends ManipulationMethods {} + +declare class Swiper implements Swiper { + /** + * Constructs a new Swiper instance. + * + * @param container Where Swiper applies to. + * @param options Instance options. + */ + constructor(container: CSSSelector | HTMLElement, options?: SwiperOptions); + /** + * Installs modules on Swiper in runtime. + */ + static use(modules: SwiperModule[]): void; + + /** + * Swiper default options + */ + static defaults: SwiperOptions; + + /** + * Extend global Swiper defaults + */ + static extendDefaults(options: SwiperOptions): void; + + /** + * Object with global Swiper extended options + */ + static extendedDefaults: SwiperOptions; +} + +export default Swiper; diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/swiper-events.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/swiper-events.d.ts new file mode 100644 index 0000000..4e6aaec --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/swiper-events.d.ts @@ -0,0 +1,359 @@ +import type { SwiperOptions } from './swiper-options.d.ts'; +import type Swiper from './swiper-class.d.ts'; + +import type { A11yEvents } from './modules/a11y.d.ts'; +import type { AutoplayEvents } from './modules/autoplay.d.ts'; +import type { ControllerEvents } from './modules/controller.d.ts'; +import type { CoverflowEffectEvents } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectEvents } from './modules/effect-cube.d.ts'; +import type { FadeEffectEvents } from './modules/effect-fade.d.ts'; +import type { FlipEffectEvents } from './modules/effect-flip.d.ts'; +import type { CreativeEffectEvents } from './modules/effect-creative.d.ts'; +import type { CardsEffectEvents } from './modules/effect-cards.d.ts'; +import type { HashNavigationEvents } from './modules/hash-navigation.d.ts'; +import type { HistoryEvents } from './modules/history.d.ts'; +import type { KeyboardEvents } from './modules/keyboard.d.ts'; +import type { MousewheelEvents } from './modules/mousewheel.d.ts'; +import type { NavigationEvents } from './modules/navigation.d.ts'; +import type { PaginationEvents } from './modules/pagination.d.ts'; +import type { ParallaxEvents } from './modules/parallax.d.ts'; +import type { ScrollbarEvents } from './modules/scrollbar.d.ts'; +import type { ThumbsEvents } from './modules/thumbs.d.ts'; +import type { VirtualEvents } from './modules/virtual.d.ts'; +import type { ZoomEvents } from './modules/zoom.d.ts'; +import type { FreeModeEvents } from './modules/free-mode.d.ts'; + +export interface SwiperEvents { + // CORE_EVENTS_START + /** + * Fired right after Swiper initialization. + * @note Note that with `swiper.on('init')` syntax it will + * work only in case you set `init: false` parameter. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * init: false, + * // other parameters + * }); + * swiper.on('init', function() { + * // do something + * }); + * // init Swiper + * swiper.init(); + * ``` + * + * @example + * ```js + * // Otherwise use it as the parameter: + * const swiper = new Swiper('.swiper', { + * // other parameters + * on: { + * init: function () { + * // do something + * }, + * } + * }); + * ``` + */ + init: (swiper: Swiper) => any; + + /** + * Event will be fired right before Swiper destroyed + */ + beforeDestroy: (swiper: Swiper) => void; + + /** + * Event will be fired after slides and their sizes are calculated and updated + */ + slidesUpdated: (swiper: Swiper) => void; + /** + * Event will be fired when currently active slide is changed + */ + slideChange: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of animation to other slide (next or previous). + */ + slideChangeTransitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after animation to other slide (next or previous). + */ + slideChangeTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "forward" direction only + */ + slideNextTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "forward" direction only + */ + slideNextTransitionEnd: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionStart" but for "backward" direction only + */ + slidePrevTransitionStart: (swiper: Swiper) => void; + + /** + * Same as "slideChangeTransitionEnd" but for "backward" direction only + */ + slidePrevTransitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired in the beginning of transition. + */ + transitionStart: (swiper: Swiper) => void; + + /** + * Event will be fired after transition. + */ + transitionEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when user touch Swiper. Receives `pointerdown` event as an arguments. + */ + touchStart: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper. Receives `pointermove` event as an arguments. + */ + touchMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper in direction opposite to direction parameter. Receives `pointermove` event as an arguments. + */ + touchMoveOpposite: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user touch and move finger over Swiper and move it. Receives `pointermove` event as an arguments. + */ + sliderMove: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user release Swiper. Receives `pointerup` event as an arguments. + */ + touchEnd: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + click: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user click/tap on Swiper. Receives `pointerup` event as an arguments. + */ + tap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when user double tap on Swiper's container. Receives `pointerup` event as an arguments + */ + doubleTap: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + + /** + * Event will be fired when Swiper progress is changed, as an arguments it receives progress that is always from 0 to 1 + */ + progress: (swiper: Swiper, progress: number) => void; + + /** + * Event will be fired when Swiper reach its beginning (initial position) + */ + reachBeginning: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper reach last slide + */ + reachEnd: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes to beginning or end position + */ + toEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when Swiper goes from beginning or end position + */ + fromEdge: (swiper: Swiper) => void; + + /** + * Event will be fired when swiper's wrapper change its position. Receives current translate value as an arguments + */ + setTranslate: (swiper: Swiper, translate: number) => void; + + /** + * Event will be fired everytime when swiper starts animation. Receives current transition duration (in ms) as an arguments + */ + setTransition: (swiper: Swiper, transition: number) => void; + + /** + * Event will be fired on window resize right before swiper's onresize manipulation + */ + resize: (swiper: Swiper) => void; + + /** + * Event will be fired if observer is enabled and it detects DOM mutations + */ + observerUpdate: (swiper: Swiper) => void; + + /** + * Event will be fired right before "loop fix" + */ + beforeLoopFix: (swiper: Swiper) => void; + + /** + * Event will be fired after "loop fix" + */ + loopFix: (swiper: Swiper) => void; + + /** + * Event will be fired on breakpoint change + */ + breakpoint: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired right before breakpoint change + */ + _beforeBreakpoint?: (swiper: Swiper, breakpointParams: SwiperOptions) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper container element + */ + _containerClasses?: (swiper: Swiper, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on swiper slide element + */ + _slideClass?: (swiper: Swiper, slideEl: HTMLElement, classNames: string) => void; + + /** + * !INTERNAL: Event will fired after setting CSS classes on all swiper slides + */ + _slideClasses?: ( + swiper: Swiper, + slides: { slideEl: HTMLElement; classNames: string; index: number }[], + ) => void; + + /** + * !INTERNAL: Event will fired as soon as swiper instance available (before init) + */ + _swiper?: (swiper: Swiper) => void; + + /** + * !INTERNAL: Event will be fired on free mode touch end (release) and there will no be momentum + */ + _freeModeNoMomentumRelease?: (swiper: Swiper) => void; + + /** + * Event will fired on active index change + */ + activeIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on snap index change + */ + snapIndexChange: (swiper: Swiper) => void; + /** + * Event will fired on real index change + */ + realIndexChange: (swiper: Swiper) => void; + /** + * Event will fired right after initialization + */ + afterInit: (swiper: Swiper) => void; + /** + * Event will fired right before initialization + */ + beforeInit: (swiper: Swiper) => void; + /** + * Event will fired before resize handler + */ + beforeResize: (swiper: Swiper) => void; + /** + * Event will fired before slide change transition start + */ + beforeSlideChangeStart: (swiper: Swiper) => void; + /** + * Event will fired before transition start + */ + beforeTransitionStart: (swiper: Swiper, speed: number, internal: any) => void; // what is internal? + /** + * Event will fired on direction change + */ + changeDirection: (swiper: Swiper) => void; + /** + * Event will be fired when user double click/tap on Swiper + */ + doubleClick: (swiper: Swiper, event: MouseEvent | TouchEvent | PointerEvent) => void; + /** + * Event will be fired on swiper destroy + */ + destroy: (swiper: Swiper) => void; + /** + * Event will be fired on momentum bounce + */ + momentumBounce: (swiper: Swiper) => void; + /** + * Event will be fired on orientation change (e.g. landscape -> portrait) + */ + orientationchange: (swiper: Swiper) => void; + /** + * Event will be fired in the beginning of animation of resetting slide to current one + */ + slideResetTransitionStart: (swiper: Swiper) => void; + /** + * Event will be fired in the end of animation of resetting slide to current one + */ + slideResetTransitionEnd: (swiper: Swiper) => void; + /** + * Event will be fired with first touch/drag move + */ + sliderFirstMove: (swiper: Swiper, event: TouchEvent) => void; + /** + * Event will be fired when number of slides has changed + */ + slidesLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when slides grid has changed + */ + slidesGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired when snap grid has changed + */ + snapGridLengthChange: (swiper: Swiper) => void; + /** + * Event will be fired after swiper.update() call + */ + update: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is locked (when `watchOverflow` enabled) + */ + lock: (swiper: Swiper) => void; + /** + * Event will be fired when swiper is unlocked (when `watchOverflow` enabled) + */ + unlock: (swiper: Swiper) => void; + // CORE_EVENTS_END +} + +interface SwiperEvents extends A11yEvents {} +interface SwiperEvents extends AutoplayEvents {} +interface SwiperEvents extends ControllerEvents {} +interface SwiperEvents extends CoverflowEffectEvents {} +interface SwiperEvents extends CubeEffectEvents {} +interface SwiperEvents extends FadeEffectEvents {} +interface SwiperEvents extends FlipEffectEvents {} +interface SwiperEvents extends CreativeEffectEvents {} +interface SwiperEvents extends CardsEffectEvents {} +interface SwiperEvents extends HashNavigationEvents {} +interface SwiperEvents extends HistoryEvents {} +interface SwiperEvents extends KeyboardEvents {} +interface SwiperEvents extends MousewheelEvents {} +interface SwiperEvents extends NavigationEvents {} +interface SwiperEvents extends PaginationEvents {} +interface SwiperEvents extends ParallaxEvents {} +interface SwiperEvents extends ScrollbarEvents {} +interface SwiperEvents extends ThumbsEvents {} +interface SwiperEvents extends VirtualEvents {} +interface SwiperEvents extends ZoomEvents {} +interface SwiperEvents extends FreeModeEvents {} diff --git a/web/themes/custom/quartiers_de_demain/librairies/swiper/types/swiper-options.d.ts b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/swiper-options.d.ts new file mode 100644 index 0000000..7a97910 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/librairies/swiper/types/swiper-options.d.ts @@ -0,0 +1,1217 @@ +import type { A11yOptions } from './modules/a11y.d.ts'; +import type { AutoplayOptions } from './modules/autoplay.d.ts'; +import type { ControllerOptions } from './modules/controller.d.ts'; +import type { CoverflowEffectOptions } from './modules/effect-coverflow.d.ts'; +import type { CubeEffectOptions } from './modules/effect-cube.d.ts'; +import type { FadeEffectOptions } from './modules/effect-fade.d.ts'; +import type { FlipEffectOptions } from './modules/effect-flip.d.ts'; +import type { CreativeEffectOptions } from './modules/effect-creative.d.ts'; +import type { CardsEffectOptions } from './modules/effect-cards.d.ts'; +import type { HashNavigationOptions } from './modules/hash-navigation.d.ts'; +import type { HistoryOptions } from './modules/history.d.ts'; +import type { KeyboardOptions } from './modules/keyboard.d.ts'; +import type { MousewheelOptions } from './modules/mousewheel.d.ts'; +import type { NavigationOptions } from './modules/navigation.d.ts'; +import type { PaginationOptions } from './modules/pagination.d.ts'; +import type { ParallaxOptions } from './modules/parallax.d.ts'; +import type { ScrollbarOptions } from './modules/scrollbar.d.ts'; +import type { ThumbsOptions } from './modules/thumbs.d.ts'; +import type { VirtualOptions } from './modules/virtual.d.ts'; +import type { ZoomOptions } from './modules/zoom.d.ts'; +import type { FreeModeOptions } from './modules/free-mode.d.ts'; +import type { GridOptions } from './modules/grid.d.ts'; + +import type { CSSSelector, SwiperModule } from './shared.d.ts'; +import type { SwiperEvents } from './swiper-events.d.ts'; + +export interface SwiperOptions { + /** + * Array with Swiper modules + * + * @example + * ```js + * import Swiper from 'swiper'; + * import { Navigation, Pagination } from 'swiper/modules'; + * + * const swiper = new Swiper('.swiper', { + * modules: [ Navigation, Pagination ], + * }); + * ``` + */ + modules?: SwiperModule[]; + /** + * Inject text styles to the shadow DOM. Only for usage with Swiper Element + * + */ + injectStyles?: string[]; + /** + * Inject styles ``s to the shadow DOM. Only for usage with Swiper Element + * + */ + injectStylesUrls?: string[]; + /** + * Whether Swiper should be initialised automatically when you create an instance. + * If disabled, then you need to init it manually by calling `swiper.init()` + * + * @default true + */ + init?: boolean; + + /** + * Whether Swiper initially enabled. When Swiper is disabled, it will hide all navigation elements and won't respond to any events and interactions + * + * @default true + */ + enabled?: boolean; + + /** + * Swiper will recalculate slides position on window resize (orientationchange) + * + * @default true + */ + updateOnWindowResize?: boolean; + + /** + * When enabled it will use ResizeObserver (if supported by browser) on swiper container to detect container resize (instead of watching for window resize) + * + * @default true + */ + resizeObserver?: boolean; + + /** + * Index number of initial slide. + * + * @default 0 + */ + initialSlide?: number; + + /** + * Can be `'horizontal'` or `'vertical'` (for vertical slider). + * + * @default 'horizontal' + */ + direction?: 'horizontal' | 'vertical'; + + /** + * When enabled, will swipe slides only forward (one-way) regardless of swipe direction + * + * @default false + */ + + oneWayMovement?: boolean; + + /** + * The name of the swiper element node name; used for detecting web component rendering + * + * @default 'SWIPER-CONTAINER' + */ + swiperElementNodeName?: string; + + /** + * Duration of transition between slides (in ms) + * + * @default 300 + */ + speed?: number; + + /** + * Enabled this option and plugin will set width/height on swiper wrapper equal to total size of all slides. + * Mostly should be used as compatibility fallback option for browser that don't support flexbox layout well + * + * @default false + */ + setWrapperSize?: boolean; + + /** + * Enabled this option and swiper will be operated as usual except it will not move, real translate values on wrapper will not be set. + * Useful when you may need to create custom slide transition + * + * @default false + */ + virtualTranslate?: boolean; + + /** + * Swiper width (in px). Parameter allows to force Swiper width. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + width?: number | null; + + /** + * Swiper height (in px). Parameter allows to force Swiper height. + * Useful only if you initialize Swiper when it is hidden and in SSR and Test environments for correct Swiper initialization + * + * @default null + * + * @note Setting this parameter will make Swiper not responsive + */ + height?: number | null; + + /** + * Set to `true` and slider wrapper will adapt its height to the height of the currently active slide + * + * @default false + */ + autoHeight?: boolean; + + /** + * Set to `true` to round values of slides width and height to prevent blurry texts on usual + * resolution screens (if you have such) + * + * @default false + */ + roundLengths?: boolean; + + /** + * Set to `true` on Swiper for correct touch events interception. Use only on + * swipers that use same direction as the parent one + * + * @default false + */ + nested?: boolean; + + /** + * When enabled Swiper will automatically wrap slides with swiper-wrapper element, + * and will create required elements for navigation, pagination and scrollbar + * they are enabled (with their respective params object or with boolean `true`)) + * + * @default false + */ + createElements?: boolean; + + /** + * Event name prefix for all DOM events emitted by Swiper Element (web component) + * + * @default `swiper` + */ + eventsPrefix?: string; + + /** + * CSS selector for focusable elements. Swiping will be disabled on such elements if they are "focused" + * + * @default 'input, select, option, textarea, button, video, label' + */ + focusableElements?: string; + + /** + * If enabled (by default) and navigation elements' parameters passed as a string (like `".pagination"`) + * then Swiper will look for such elements through child elements first. + * Applies for pagination, prev/next buttons and scrollbar elements + * + * @default true + */ + uniqueNavElements?: boolean; + + /** + * Transition effect. Can be `'slide'`, `'fade'`, `'cube'`, `'coverflow'`, `'flip'`, `'creative'` or `'cards'` + * + * @default 'slide' + */ + effect?: 'slide' | 'fade' | 'cube' | 'coverflow' | 'flip' | 'creative' | 'cards' | string; + + /** + * Fire Transition/SlideChange/Start/End events on swiper initialization. + * Such events will be fired on initialization in case of your initialSlide is not 0, or you use loop mode + * + * @default true + */ + runCallbacksOnInit?: boolean; + + /** + * When enabled Swiper will be disabled and hide navigation buttons on + * case there are not enough slides for sliding. + * + * @default true + */ + watchOverflow?: boolean; + + /** + * userAgent string. Required for browser/device detection when rendered on server-side + * + * @default null + */ + userAgent?: string | null; + + /** + * Required for active slide detection when rendered on server-side and enabled history + * + * @default null + */ + url?: string | null; + + /** + * Register event handlers + */ + on?: { + [event in keyof SwiperEvents]?: SwiperEvents[event]; + }; + + /** + * Add event listener that will be fired on all events + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * onAny(eventName, ...args) { + * console.log('Event: ', eventName); + * console.log('Event data: ', args); + * } + * }); + * ``` + */ + onAny?(handler: (eventName: string, ...args: any[]) => void): void; + + /** + * When enabled it will use modern CSS Scroll Snap API. + * It doesn't support all of Swiper's features, but potentially should bring a much better performance in simple configurations. + * + * This is what is not supported when it is enabled: + * + * - Cube effect + * - `speed` parameter may not have no effect + * - All transition start/end related events (use `slideChange` instead) + * - `slidesPerGroup` has limited support + * - `simulateTouch` doesn't have effect and "dragging" with mouse doesn't work + * - `resistance` doesn't have any effect + * - `allowSlidePrev/Next` + * - `swipeHandler` + * + * In case if you use it with other effects, especially 3D effects, it is required to wrap slide's content with `
` element. And if you use any custom styles on slides (like background colors, border radius, border, etc.), they should be set on `swiper-slide-transform` element instead. + * + * @example + * ```html + *
+ *
+ *
+ * + *
+ * ... slide content ... + *
+ *
+ * ... + *
+ *
+ * + * ``` + * + * @default false + */ + cssMode?: boolean; + + // Slides grid + + /** + * Distance between slides in px. + * + * @default 0 + * + * @note If you use "margin" css property to the elements which go into Swiper in which you pass "spaceBetween" into, navigation might not work properly. + */ + spaceBetween?: number | string; + + /** + * Number of slides per view (slides visible at the same time on slider's container). + * @note `slidesPerView: 'auto'` is currently not compatible with multirow mode, when `grid.rows` > 1 + * + * @default 1 + */ + slidesPerView?: number | 'auto'; + + /** + * If total number of slides less than specified here value, then Swiper will enable `backface-visibility: hidden` on slide elements to reduce visual "flicker" in Safari. + * + * @note It is not recommended to enable it on large amount of slides as it will reduce performance + * + * @default 10 + */ + maxBackfaceHiddenSlides?: number; + + /** + * Set numbers of slides to define and enable group sliding. Useful to use with slidesPerView > 1 + * + * @default 1 + */ + slidesPerGroup?: number; + + /** + * The parameter works in the following way: If `slidesPerGroupSkip` equals `0` (default), no slides are excluded from grouping, and the resulting behaviour is the same as without this change. + * + * If `slidesPerGroupSkip` is equal or greater than `1` the first X slides are treated as single groups, whereas all following slides are grouped by the `slidesPerGroup` value. + * + * @default 0 + */ + slidesPerGroupSkip?: number; + + /** + * This param intended to be used only with `slidesPerView: 'auto'` and `slidesPerGroup: 1`. When enabled, it will skip all slides in view on `.slideNext()` & `.slidePrev()` methods calls, on Navigation "buttons" clicks and in autoplay. + * + * @default false + */ + slidesPerGroupAuto?: boolean; + + /** + * If `true`, then active slide will be centered, not always on the left side. + * + * @default false + */ + centeredSlides?: boolean; + + /** + * If `true`, then active slide will be centered without adding gaps at the beginning and end of slider. + * Required `centeredSlides: true`. Not intended to be used with `loop` or `pagination` + * + * @default false + */ + centeredSlidesBounds?: boolean; + + /** + * Add (in px) additional slide offset in the beginning of the container (before all slides) + * + * @default 0 + */ + slidesOffsetBefore?: number; + + /** + * Add (in px) additional slide offset in the end of the container (after all slides) + * + * @default 0 + */ + slidesOffsetAfter?: number; + + /** + * Normalize slide index. + * + * @default true + */ + normalizeSlideIndex?: boolean; + + /** + * When enabled it center slides if the amount of slides less than `slidesPerView`. Not intended to be used `loop` mode and `grid.rows` + * + * @default false + */ + centerInsufficientSlides?: boolean; + + /** + * This option may a little improve desktop usability. If `true`, user will see the "grab" cursor when hover on Swiper + * + * @default false + */ + grabCursor?: boolean; + + /** + * Target element to listen touch events on. Can be `'container'` (to listen for touch events on swiper) or `'wrapper'` + * (to listen for touch events on swiper-wrapper) + * + * @default 'wrapper' + */ + touchEventsTarget?: 'container' | 'wrapper'; + + /** + * Touch ratio + * + * @default 1 + */ + touchRatio?: number; + + /** + * Allowable angle (in degrees) to trigger touch move + * + * @default 45 + */ + touchAngle?: number; + + /** + * If `true`, Swiper will accept mouse events like touch events (click and drag to change slides) + * + * @default true + */ + simulateTouch?: boolean; + + /** + * Set to `false` if you want to disable short swipes + * + * @default true + */ + shortSwipes?: boolean; + + /** + * Set to `false` if you want to disable long swipes + * + * @default true + */ + longSwipes?: boolean; + + /** + * Ratio to trigger swipe to next/previous slide during long swipes + * + * @default 0.5 + */ + longSwipesRatio?: number; + + /** + * Minimal duration (in ms) to trigger swipe to next/previous slide during long swipes + * + * @default 300 + */ + longSwipesMs?: number; + + /** + * If disabled, then slider will be animated only when you release it, it will not move while you hold your finger on it + * + * @default true + */ + followFinger?: boolean; + + /** + * If `false`, then the only way to switch the slide is use of external API functions like slidePrev or slideNext + * + * @default true + */ + allowTouchMove?: boolean; + + /** + * Threshold value in px. If "touch distance" will be lower than this value then swiper will not move + * + * @default 5 + */ + threshold?: number; + + /** + * If disabled, `pointerdown` event won't be prevented + * + * @default true + */ + touchStartPreventDefault?: boolean; + + /** + * Force to always prevent default for `touchstart` (`pointerdown`) event + * + * @default false + */ + touchStartForcePreventDefault?: boolean; + + /** + * If enabled, then propagation of "touchmove" will be stopped + * + * @default false + */ + touchMoveStopPropagation?: boolean; + + /** + * Enable to release Swiper events for swipe-back work in app. If set to `'prevent'` then it will prevent system swipe-back navigation instead. This feature works only with "touch" events (and not pointer events), so it will work on iOS/Android devices and won't work on Windows devices with pointer (touch) events. + * + * @default false + */ + edgeSwipeDetection?: boolean | string; + + /** + * Area (in px) from left edge of the screen to release touch events for swipe-back in app + * + * @default 20 + */ + edgeSwipeThreshold?: number; + + /** + * Enable to release touch events on slider edge position (beginning, end) to allow for further page scrolling. This feature works only with "touch" events (and not pointer events), so it will work on iOS/Android devices and won't work on Windows devices with pointer events. Also `threshold` parameter must be set to `0` + * + * @default false + */ + touchReleaseOnEdges?: boolean; + + /** + * Passive event listeners will be used by default where possible to improve scrolling performance on mobile devices. + * But if you need to use `e.preventDefault` and you have conflict with it, then you should disable this parameter + * + * @default true + */ + passiveListeners?: boolean; + + // Touch Resistance + + /** + * Set to `false` if you want to disable resistant bounds + * + * @default true + */ + resistance?: boolean; + + /** + * This option allows you to control resistance ratio + * + * @default 0.85 + */ + resistanceRatio?: number; + + // Swiping / No swiping + /** + * When enabled it won't allow to change slides by swiping or navigation/pagination buttons during transition + * + * @default false + */ + preventInteractionOnTransition?: boolean; + + /** + * Set to `false` to disable swiping to previous slide direction (to left or top) + * + * @default true + */ + allowSlidePrev?: boolean; + + /** + * Set to `false` to disable swiping to next slide direction (to right or bottom) + * + * @default true + */ + allowSlideNext?: boolean; + + /** + * Enable/disable swiping on elements matched to class specified in `noSwipingClass` + * + * @default true + */ + noSwiping?: boolean; + + /** + * Specify `noSwiping`'s element css class + * + * @default 'swiper-no-swiping' + */ + noSwipingClass?: string; + + /** + * Can be used instead of `noSwipingClass` to specify elements to disable swiping on. + * For example `'input'` will disable swiping on all inputs + * + * @default + */ + noSwipingSelector?: string; + + /** + * String with CSS selector or HTML element of the container with pagination that will work as only available handler for swiping + * + * @default null + */ + swipeHandler?: CSSSelector | HTMLElement | null; + + // Clicks + /** + * Set to `true` to prevent accidental unwanted clicks on links during swiping + * + * @default true + */ + preventClicks?: boolean; + + /** + * Set to `true` to stop clicks event propagation on links during swiping + * + * @default true + */ + preventClicksPropagation?: boolean; + + /** + * Set to `true` and click on any slide will produce transition to this slide + * + * @default false + */ + slideToClickedSlide?: boolean; + + // Progress + /** + * Enable this feature to calculate each slides progress and visibility (slides in viewport will have additional visible class) + * + * @default false + */ + watchSlidesProgress?: boolean; + + /** + * Set to `true` to enable continuous loop mode + * + * Because of nature of how the loop mode works (it will rearrange slides), total number of slides must be: + * + * - more than or equal to `slidesPerView` + `slidesPerGroup` + * - even to `slidesPerGroup` (or use `loopAddBlankSlides` parameter) + * - even to `grid.rows` (or use `loopAddBlankSlides` parameter) + * + * @default false + * + */ + loop?: boolean; + + /** + * Automatically adds blank slides if you use Grid or `slidesPerGroup` and the total amount of slides is not even to `slidesPerGroup` or to `grid.rows` + * + * + * @default true + * + */ + loopAddBlankSlides?: boolean; + + /** + * Allows to increase amount of looped slides + * + * @default 0 + */ + loopAdditionalSlides?: number; + + /** + * If enabled then slideNext/Prev will do nothing while slider is animating in loop mode + * + * @default true + */ + loopPreventsSliding?: boolean; + + /** + * Set to `true` to enable "rewind" mode. When enabled, clicking "next" navigation button (or calling `.slideNext()`) when on last slide will slide back to the first slide. Clicking "prev" navigation button (or calling `.slidePrev()`) when on first slide will slide forward to the last slide. + * + * @default false + * + * @note Should not be used together with `loop` mode + */ + rewind?: boolean; + + /** + * Allows to set different parameter for different responsive breakpoints (screen sizes). Not all parameters can be changed in breakpoints, only those which do not require different layout and logic, like `slidesPerView`, `slidesPerGroup`, `spaceBetween`, `grid.rows`. Such parameters like `loop` and `effect` won't work + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * // Default parameters + * slidesPerView: 1, + * spaceBetween: 10, + * // Responsive breakpoints + * breakpoints: { + * // when window width is >= 320px + * 320: { + * slidesPerView: 2, + * spaceBetween: 20 + * }, + * // when window width is >= 480px + * 480: { + * slidesPerView: 3, + * spaceBetween: 30 + * }, + * // when window width is >= 640px + * 640: { + * slidesPerView: 4, + * spaceBetween: 40 + * } + * } + * }) + * ``` + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * slidesPerView: 1, + * spaceBetween: 10, + * // using "ratio" endpoints + * breakpoints: { + * '@0.75': { + * slidesPerView: 2, + * spaceBetween: 20, + * }, + * '@1.00': { + * slidesPerView: 3, + * spaceBetween: 40, + * }, + * '@1.50': { + * slidesPerView: 4, + * spaceBetween: 50, + * }, + * } + * }); + * ``` + */ + breakpoints?: { + [width: number]: SwiperOptions; + [ratio: string]: SwiperOptions; + }; + + /** + * Base for breakpoints (beta). Can be `window` or `container`. If set to `window` (by default) then breakpoint keys mean window width. If set to `container` then breakpoint keys treated as swiper container width + * + * @default 'window' + */ + breakpointsBase?: 'window' | 'container'; + + // Observer + /** + * Set to `true` to enable Mutation Observer on Swiper and its elements. In this case Swiper will be updated (reinitialized) each time if you change its style (like hide/show) or modify its child elements (like adding/removing slides) + * + * @default false + */ + observer?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper slide children elements + * + * @default false + */ + observeSlideChildren?: boolean; + /** + * Set to `true` if you also need to watch Mutations for Swiper parent elements + * + * @default false + */ + observeParents?: boolean; + + // Namespace + /** + * The beginning of the modifier CSS class that can be added to swiper container depending on different parameters + * + * @default 'swiper-' + */ + containerModifierClass?: string; + + /** + * CSS class name of slide + * + * @default 'swiper-slide' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue components + */ + slideClass?: string; + + /** + * CSS class name of currently active slide + * + * @default 'swiper-slide-active' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue components + */ + slideActiveClass?: string; + + /** + * CSS class name of currently/partially visible slide + * + * @default 'swiper-slide-visible' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slideVisibleClass?: string; + + /** + * CSS class name of fully (when whole slide is in the viewport) visible slide + * + * @default 'swiper-slide-fully-visible' + * + * @note Not supported in Swiper React/Vue + */ + slideFullyVisibleClass?: string; + + /** + * CSS class name of the blank slide added by the loop mode (when `loopAddBlankSlides` is enabled) + * + * @default 'swiper-slide-blank' + * + * @note Not supported in Swiper React/Vue + */ + slideBlankClass?: string; + + /** + * CSS class name of slide which is right after currently active slide + * + * @default 'swiper-slide-next' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slideNextClass?: string; + + /** + * CSS class name of slide which is right before currently active slide + * + * @default 'swiper-slide-prev' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + */ + slidePrevClass?: string; + + /** + * CSS class name of slides' wrapper + * + * @default 'swiper-wrapper' + * + * @note By changing classes you will also need to change Swiper's CSS to reflect changed classes + * + * @note Not supported in Swiper React/Vue + * + */ + wrapperClass?: string; + + /** + * CSS class name of lazy preloader + * + * @default 'swiper-lazy-preloader' + */ + lazyPreloaderClass?: string; + + /** + * Number of next and previous slides to preload. Only applicable if using lazy loading. + * + * @default 0 + */ + lazyPreloadPrevNext?: number; + + /** + * Object with a11y parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * a11y: { + * prevSlideMessage: 'Previous slide', + * nextSlideMessage: 'Next slide', + * }, + * }); + * ``` + */ + a11y?: A11yOptions; + + /** + * Object with autoplay parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * autoplay: { + * delay: 5000, + * }, + *}); + * ``` + */ + autoplay?: AutoplayOptions | boolean; + + /** + * Object with controller parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * controller: { + * inverse: true, + * }, + * }); + * ``` + */ + controller?: ControllerOptions; + + /** + * Object with Coverflow-effect parameters. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'coverflow', + * coverflowEffect: { + * rotate: 30, + * slideShadows: false, + * }, + * }); + * ``` + */ + coverflowEffect?: CoverflowEffectOptions; + + /** + * Object with Cube-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cube', + * cubeEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + cubeEffect?: CubeEffectOptions; + + /** + * Object with Fade-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'fade', + * fadeEffect: { + * crossFade: true + * }, + * }); + * ``` + */ + fadeEffect?: FadeEffectOptions; + + /** + * Object with Flip-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'flip', + * flipEffect: { + * slideShadows: false, + * }, + * }); + * ``` + */ + flipEffect?: FlipEffectOptions; + + /** + * Object with Creative-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'creative', + * creativeEffect: { + * prev: { + * // will set `translateZ(-400px)` on previous slides + * translate: [0, 0, -400], + * }, + * next: { + * // will set `translateX(100%)` on next slides + * translate: ['100%', 0, 0], + * }, + * }, + * }); + * ``` + */ + creativeEffect?: CreativeEffectOptions; + + /** + * Object with Cards-effect parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * effect: 'cards', + * cardsEffect: { + * // ... + * }, + * }); + * ``` + */ + cardsEffect?: CardsEffectOptions; + + /** + * Enables hash url navigation to for slides. + * Object with hash navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * hashNavigation: { + * replaceState: true, + * }, + * }); + * ``` + */ + hashNavigation?: HashNavigationOptions | boolean; + + /** + * Enables history push state where every slide will have its own url. In this parameter you have to specify main slides url like `"slides"` and specify every slide url using `data-history` attribute. + * + * Object with history navigation parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * history: { + * replaceState: true, + * }, + * }); + * ``` + * + * @example + * ```html + * + *
+ * ``` + */ + history?: HistoryOptions | boolean; + + /** + * Enables navigation through slides using keyboard. Object with keyboard parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * keyboard: { + * enabled: true, + * onlyInViewport: false, + * }, + * }); + * ``` + */ + keyboard?: KeyboardOptions | boolean; + + /** + * Enables navigation through slides using mouse wheel. Object with mousewheel parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * mousewheel: { + * invert: true, + * }, + * }); + * ``` + */ + mousewheel?: MousewheelOptions | boolean; + + /** + * Object with navigation parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * navigation: { + * nextEl: '.swiper-button-next', + * prevEl: '.swiper-button-prev', + * }, + * }); + * ``` + */ + navigation?: NavigationOptions | boolean; + + /** + * Object with pagination parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * pagination: { + * el: '.swiper-pagination', + * type: 'bullets', + * }, + * }); + * ``` + */ + pagination?: PaginationOptions | boolean; + + /** + * Object with parallax parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * parallax: true, + * }); + * ``` + */ + parallax?: ParallaxOptions | boolean; + + /** + * Object with scrollbar parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * scrollbar: { + * el: '.swiper-scrollbar', + * draggable: true, + * }, + * }); + * ``` + */ + scrollbar?: ScrollbarOptions | boolean; + + /** + * Object with thumbs component parameters + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * ... + * thumbs: { + * swiper: thumbsSwiper + * } + * }); + * ``` + */ + thumbs?: ThumbsOptions; + + /** + * Enables virtual slides functionality. Object with virtual slides parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * virtual: { + * slides: ['Slide 1', 'Slide 2', 'Slide 3', 'Slide 4', 'Slide 5'], + * }, + * }); + * ``` + */ + virtual?: VirtualOptions | boolean; + + /** + * Enables zooming functionality. Object with zoom parameters or boolean `true` to enable with default settings + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * zoom: { + * maxRatio: 5, + * }, + * }); + * ``` + */ + zoom?: ZoomOptions | boolean; + + /** + * Enables free mode functionality. Object with free mode parameters or boolean `true` to enable with default settings. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * freeMode: true, + * }); + * + * const swiper = new Swiper('.swiper', { + * freeMode: { + * enabled: true, + * sticky: true, + * }, + * }); + * ``` + */ + freeMode?: FreeModeOptions | boolean; + + /** + * Object with grid parameters to enable "multirow" slider. + * + * @example + * ```js + * const swiper = new Swiper('.swiper', { + * grid: { + * rows: 2, + * }, + * }); + * ``` + */ + grid?: GridOptions; + + /** + * !INTERNAL When enabled will emit "_containerClasses" and "_slideClass" events + */ + _emitClasses?: boolean; +} diff --git a/web/themes/custom/quartiers_de_demain/package-lock.json b/web/themes/custom/quartiers_de_demain/package-lock.json index ec33427..afa0174 100644 --- a/web/themes/custom/quartiers_de_demain/package-lock.json +++ b/web/themes/custom/quartiers_de_demain/package-lock.json @@ -8,6 +8,9 @@ "name": "quartiers_de_demain", "version": "1.0.0", "license": "ISC", + "dependencies": { + "swiper": "^11.1.7" + }, "devDependencies": { "autoprefixer": "^10.4.19", "file-loader": "^6.2.0", @@ -1816,6 +1819,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/swiper": { + "version": "11.1.7", + "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.1.7.tgz", + "integrity": "sha512-2EpQvhgKb+DNbi8/i9uRXhddivcMZQxca341t2NZYV1xroCR2p4YtYd3azuqRQ4OEBGcG4nv3aN24O80bMipow==", + "funding": [ + { + "type": "patreon", + "url": "https://www.patreon.com/swiperjs" + }, + { + "type": "open_collective", + "url": "http://opencollective.com/swiper" + } + ], + "license": "MIT", + "engines": { + "node": ">= 4.7.0" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", diff --git a/web/themes/custom/quartiers_de_demain/package.json b/web/themes/custom/quartiers_de_demain/package.json index d8b8f4f..4eb625c 100644 --- a/web/themes/custom/quartiers_de_demain/package.json +++ b/web/themes/custom/quartiers_de_demain/package.json @@ -26,5 +26,8 @@ "> 1%", "iOS 7", "last 3 iOS versions" - ] + ], + "dependencies": { + "swiper": "^11.1.7" + } } diff --git a/web/themes/custom/quartiers_de_demain/quartiers_de_demain.libraries.yml b/web/themes/custom/quartiers_de_demain/quartiers_de_demain.libraries.yml index 6fb4236..476496a 100644 --- a/web/themes/custom/quartiers_de_demain/quartiers_de_demain.libraries.yml +++ b/web/themes/custom/quartiers_de_demain/quartiers_de_demain.libraries.yml @@ -3,8 +3,9 @@ global: js: dist/assets/bundle.js: {} librairies/slick-1.8.1/slick/slick.min.js: {} - + librairies/swiper/swiper-bundle.js: {} css: theme: dist/assets/css/bundle.css: {} + librairies/swiper/swiper-bundle.css: {} # css/animated_logo.css: {} diff --git a/web/themes/custom/quartiers_de_demain/src/assets/js/quartiers_de_demain.js b/web/themes/custom/quartiers_de_demain/src/assets/js/quartiers_de_demain.js index da4d4c2..182e792 100644 --- a/web/themes/custom/quartiers_de_demain/src/assets/js/quartiers_de_demain.js +++ b/web/themes/custom/quartiers_de_demain/src/assets/js/quartiers_de_demain.js @@ -94,7 +94,7 @@ }, 5000); } - ////////////// + ////////////////////////////////////// let lastScrollTop = 0; let threshold = 100; // Change this value as needed @@ -299,7 +299,7 @@ } else if (window.innerWidth <= 900) { return 2; // Show 2 slides on medium screens } else { - return 3; // Show 3 slides on large screens + return 2; // Show 3 slides on large screens } } @@ -455,6 +455,80 @@ observer.observe(document.body, config); }); + + // $(document).ready(function(){ + // $('.config_pages--type--diaporama-home .field_field_images').slick({ + // slidesToShow: 3, + // // slidesToScroll: 1, + // dots: false, + // arrows: false, + // centerMode: true, + // adaptiveHeight: true, + // autoplay: true, + // autoplaySpeed: 1500, + // infinite: true, + // // centerPadding: '100px', + // responsive: [ + // { + // breakpoint: 810, + // settings: { + // slidesToShow: 1, + // adaptiveHeight: false, + // arrows: true, + // draggable: true, + // centerMode: true, + // autoplay: true, + // autoplaySpeed: 2000, + // } + // }] + // }); + // console.log('salut slick home'); + +// }); + + ////////////////////// start diaporama home swiper ///////////////////////////////// + + $(document).ready(function () { + //initialize swiper when document ready + var mySwiper = new Swiper ('.swiper-container', { + + speed: 400, + spaceBetween: 100, + // Optional parameters + autoplay: { + delay: 3000, + disableOnInteraction: false, + }, + direction: 'horizontal', + loop: true, + + // zoom: { + // maxRatio: 5, + // }, + + // If we need pagination + // pagination: { + // el: '.swiper-pagination', + // }, + + // Navigation arrows + // navigation: { + // nextEl: '.swiper-button-next', + // prevEl: '.swiper-button-prev', + // }, + + // And if we need scrollbar + // scrollbar: { + // el: '.swiper-scrollbar', + // }, + }) + // swiper.autoplay(); + }); + + ////////////////////// end diaporama home swiper ///////////////////////////////// + + + })(jQuery, window); diff --git a/web/themes/custom/quartiers_de_demain/src/assets/scss/pages/home.scss b/web/themes/custom/quartiers_de_demain/src/assets/scss/pages/home.scss index 0714ac6..3f3fb06 100644 --- a/web/themes/custom/quartiers_de_demain/src/assets/scss/pages/home.scss +++ b/web/themes/custom/quartiers_de_demain/src/assets/scss/pages/home.scss @@ -3,12 +3,61 @@ .config_pages--type--diaporama-home{ position: relative; - .field_field_images{ - img{ - width: 100%; - height: auto; + + .swiper-container{ + .swiper-wrapper{ + .swiper-slide { + // animation: motion-autoplay 4s infinite; + // // animation-name: motion-autoplay; + // // animation-duration: 4s; + // // animation-timing-function: ease; + // animation-delay: 3s; + // // animation-iteration-count: infinite; + // animation-direction: normal; + // // animation-fill-mode: none; + // animation-play-state: running; + // // animation-timeline: ; + + + .cadre-img-zoom{ + max-height: 1281px; + overflow:hidden; + img{ + width: 100%; + height: auto; + animation: zoomOut 3.5s ease-in infinite; + } + } + blockquote{ + // color: white; + position: relative; + top: -30px; + // background-color: gray; + p{ + font-size: 0.6rem !important; + font-family: 'gilroy-regular'; + } + + } + :hover{ + color: blueviolet; + } + @keyframes zoomOut { + 0% { + transform: scale(1); + } + // 50% { + // transform: translateX(calc(-100% - 16px)); + // } + 100% { + transform: scale(1.1); + } + } + + } + } } - } + } .content_container{ #block-quartiers-de-demain-titredepage{ diff --git a/web/themes/custom/quartiers_de_demain/templates/field--config-pages--diaporama-home.html.twig b/web/themes/custom/quartiers_de_demain/templates/field--config-pages--diaporama-home.html.twig new file mode 100644 index 0000000..42ae347 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/templates/field--config-pages--diaporama-home.html.twig @@ -0,0 +1,78 @@ +{# +/** + * @file + * Default theme implementation for a field. + * + * To override output, copy the "field.html.twig" from the templates directory + * to your theme's directory and customize it, just like customizing other + * Drupal templates such as page.html.twig or node.html.twig. + * + * Instead of overriding the theming for all fields, you can also just override + * theming for a subset of fields using + * @link themeable Theme hook suggestions. @endlink For example, + * here are some theme hook suggestions that can be used for a field_foo field + * on an article node type: + * - field--node--field-foo--article.html.twig + * - field--node--field-foo.html.twig + * - field--node--article.html.twig + * - field--field-foo.html.twig + * - field--text-with-summary.html.twig + * - field.html.twig + * + * Available variables: + * - attributes: HTML attributes for the containing element. + * - label_hidden: Whether to show the field label or not. + * - title_attributes: HTML attributes for the title. + * - label: The label for the field. + * - multiple: TRUE if a field can contain multiple items. + * - items: List of all the field items. Each item contains: + * - attributes: List of HTML attributes for each item. + * - content: The field item's content. + * - entity_type: The entity type to which the field belongs. + * - field_name: The name of the field. + * - field_type: The type of the field. + * - label_display: The display settings for the label. + * + * @see template_preprocess_field() + * + * @ingroup themeable + */ +#} +{% + set title_classes = [ + 'field', + 'field--name-' ~ field_name|clean_class, + 'field--type-' ~ field_type|clean_class, + 'field--label-' ~ label_display, + label_display == 'visually_hidden' ? 'visually-hidden', + ] +%} +{% + set ancre_href = '#paragraph-id--' ~ paragraph.id() +%} +{% if label_hidden %} + {% if multiple %} +
+ {% for item in items %} +
{{ item.content }}
+ {% endfor %} +
+ {% else %} + {% for item in items %} + {{ item.content }}
+ {% endfor %} + {% endif %} +{% else %} +
+
{{ label }}
+ {% if multiple %} +
+ {% endif %} + {% for item in items %} +
{{ item.content }}
+ {% endfor %} + {% if multiple %} +
+ {% endif %} +
+{% endif %} diff --git a/web/themes/custom/quartiers_de_demain/templates/html.html.twig b/web/themes/custom/quartiers_de_demain/templates/html.html.twig index a07ee6b..6863a8b 100644 --- a/web/themes/custom/quartiers_de_demain/templates/html.html.twig +++ b/web/themes/custom/quartiers_de_demain/templates/html.html.twig @@ -36,12 +36,13 @@ - + + {# diff --git a/web/themes/custom/quartiers_de_demain/templates/image-caption-formatter.html.twig b/web/themes/custom/quartiers_de_demain/templates/image-caption-formatter.html.twig new file mode 100644 index 0000000..fc3af26 --- /dev/null +++ b/web/themes/custom/quartiers_de_demain/templates/image-caption-formatter.html.twig @@ -0,0 +1,24 @@ +{# +/** + * @file + * Default theme implementation to display a formatted image field with a caption. + * + * Available variables: + * - image: A collection of image data. + * - image_style: An optional image style. + * - url: An optional URL the image can be linked to. + * - caption : An optional image caption. + * + * @see template_preprocess_image_caption_formatter() + * + * @ingroup themeable + */ +#} +{% if url %} + {{ image }} +{% else %} +
{{ image }}
+{% endif %} +{% if caption %} +
{{ caption }}
+{% endif %}