1(() => { 2 'use strict'; 3 4 function extractThemeClasses(el) { 5 if (!el) return []; 6 return Array.from(el.classList).filter(c => c.startsWith('custom-theme-')); 7 } 8 9 function replaceThemeClasses(target, themeClasses) { 10 if (!target) return; 11 Array.from(target.classList) 12 .filter(c => c.startsWith('custom-theme-')) 13 .forEach(c => target.classList.remove(c)); 14 themeClasses.forEach(c => target.classList.add(c)); 15 } 16 17 function syncTitleClassFromActiveCard(root) { 18 const title = root.querySelector('[data-iuad-card-carousel-home-title]'); 19 const activeCard = root.querySelector('.carousel-card.active'); 20 const themeClasses = extractThemeClasses(activeCard); 21 // Evita il "flash" al colore di default: aggiorna solo se abbiamo una classe valida. 22 if (themeClasses.length === 0) return; 23 replaceThemeClasses(title, themeClasses); 24 } 25 26 document.addEventListener('DOMContentLoaded', () => { 27 const root = document.querySelector('[data-iuad-card-carousel-home]'); 28 if (!root) return; 29 30 const cardsContainer = root.querySelector('.carousel-cards'); 31 syncTitleClassFromActiveCard(root); 32 33 if (!cardsContainer) return; 34 35 const obs = new MutationObserver(() => syncTitleClassFromActiveCard(root)); 36 obs.observe(cardsContainer, { 37 subtree: true, 38 attributes: true, 39 attributeFilter: ['class'] 40 }); 41 42 // Extra: in caso il cambio slide avvenga tramite click sui dot 43 const dots = root.querySelectorAll('.carousel-dot'); 44 dots.forEach(dot => { 45 dot.addEventListener('click', () => { 46 // lascia che l'animazione aggiorni le classi, poi sync 47 window.requestAnimationFrame(() => syncTitleClassFromActiveCard(root)); 48 setTimeout(() => syncTitleClassFromActiveCard(root), 350); 49 }); 50 }); 51 }); 52})();
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.