1GLightbox(); 2 3/*HEADER JS*/ 4 5const navbar = document.querySelector(".navbar"); 6 7if (navbar !== null) { 8 document.querySelectorAll(".navbar-toggle").forEach(toggle => { 9 toggle.addEventListener("click", () => { 10 navbar.classList.toggle("open"); 11 12 document.body.classList.toggle("navbar-open"); 13 }); 14 }); 15} 16 17const stickyNav = document.querySelector("nav.sticky"); 18const stickedToggles = document.querySelectorAll(".nav-sticky-toggle"); 19 20const callback = entries => { 21 entries.forEach(entry => { 22 stickyNav.classList[entry.isIntersecting ? "add" : "remove"]("sticked"); 23 }); 24}; 25 26const observer = new IntersectionObserver(callback, {}); 27 28if (stickyNav !== null) { 29 stickedToggles.forEach(toggle => { 30 observer.observe(toggle); 31 }); 32} 33 34document.querySelectorAll(".dropdown-toggle").forEach(toggle => { 35 const container = toggle.parentElement; 36 const chevron = toggle.firstElementChild; 37 const dropdown = toggle.nextElementSibling; 38 39 container.addEventListener("mouseleave", () => { 40 toggle.classList.remove("open"); 41 }); 42 43 toggle.addEventListener("click", () => { 44 toggle.classList.toggle("open"); 45 }); 46}); 47 48/*SLIDER CSS*/ 49 50document.querySelectorAll(".c-tns-wrapper").forEach(wrapper => { 51 const breakpoints = { 52 sm: 640, 53 md: 768, 54 lg: 1024, 55 xl: 1280, 56 "2xl": 1536 57 }; 58 59 const responsive = 60 wrapper.dataset.responsive === undefined 61 ? false 62 : Object.fromEntries( 63 wrapper.dataset.responsive 64 .split(",") 65 .filter(Boolean) 66 .map(value => { 67 const [breakpoint, items] = value.split(":"); 68 69 return [breakpoints[breakpoint.trim()], { items }]; 70 }) 71 ); 72 73 const controlsContainer = wrapper.querySelector(".c-tns-controls-container"); 74 const prevButton = wrapper.querySelector(".c-tns-prev-button"); 75 const nextButton = wrapper.querySelector(".c-tns-next-button"); 76 const controls = controlsContainer !== null || (prevButton !== null && nextButton !== null); 77 78 tns({ 79 autoplay: wrapper.dataset.autoplay || true, 80 autoplayButtonOutput: false, 81 autoplayTimeout: wrapper.dataset.autoplayTimeout || 5000, 82 container: wrapper.querySelector(".c-tns-container"), 83 controls, 84 controlsContainer, 85 gutter: wrapper.dataset.gutter || 0, 86 items: wrapper.dataset.items || 1, 87 mode: wrapper.dataset.mode || "carousel", 88 nav: wrapper.dataset.nav ? wrapper.dataset.nav : false, 89 navContainer: wrapper.querySelector(".c-tns-nav-container"), 90 navPosition: wrapper.dataset.navPosition || "bottom", 91 slideBy: wrapper.getAttribute('data-tns-slide-by')?wrapper.getAttribute('data-tns-slide-by'):'1', 92 nextButton, 93 prevButton, 94 responsive, 95 mouseDrag: wrapper.dataset.drag ? wrapper.dataset.drag : false, 96 speed: wrapper.dataset.speed || 300 97 98 }); 99}); 100 101/*CLICK A CHILD*/ 102 103document.addEventListener('click', (e) => { 104 if(e.target.nodeName == 'A') return; 105 let el = e.target.closest('.click-a-child'); 106 if(el) { 107 let anchor = el.querySelector('a'); 108 if(anchor.target == '_blank' || e.ctrlKey || e.metaKey) return window.open(anchor.href, '_blank'); 109 if(e.shiftKey) return window.open(anchor.href, ''); 110 anchor.click(); 111 } 112}); 113 114/*AOS ANIMATED*/ 115 116if (activarAnimaciones === 1 && window.innerWidth > 640){ 117 AOS.init(); 118} else { 119 document.querySelectorAll('[data-aos]').forEach(e => e.removeAttribute('data-aos')); 120} 121 122// Añadimos esto para que una vez quede cargada la página, quitar el hidden del menú 123addEventListener("DOMContentLoaded", (event) => { 124 navbar.classList.remove('hidden'); 125});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.