const cursorSmall = document.querySelector(".cursor-small"); const cursorBig = document.querySelector(".cursor-big");
let scale = 1;
function mousemoveHandler(e) { const target = e.target; const tl = gsap.timeline({ defaults: { x: e.clientX - 10, y: e.clientY - 10, ease: "power2.out" } });
// Controlla se il target è uno degli elementi icona o content dell'icon box if (target.matches(".pulsante-icona .elementor-icon, .pulsante-icona .elementor-icon svg, .pulsante-icona .elementor-icon svg path, .pulsante-icona-chiara .elementor-icon, .pulsante-icona-chiara .elementor-icon svg, .pulsante-icona-chiara .elementor-icon svg path, .pulsante-icona .elementor-icon-box-content .elementor-icon-box-title a, .pulsante-icona-chiara .elementor-icon-box-title a")) { gsap.to(cursorSmall, { opacity: 0 });
// Trova l'elemento .elementor-icon correlato, sia che si tratti dell'icona stessa o del titolo dell'icon box let icon = target.closest('.elementor-icon') || target.closest('.elementor-icon-box-wrapper')?.querySelector('.elementor-icon'); if (icon) { // Applica il colore del bordo in base alla classe if (icon.closest('.pulsante-icona-chiara')) { icon.style.borderColor = "#fbfbfb"; } else { icon.style.borderColor = "#fbfbfb"; } } } else { // Rimuovi il colore del bordo da tutti gli elementi .elementor-icon document.querySelectorAll(".pulsante-icona .elementor-icon, .pulsante-icona-chiara .elementor-icon").forEach(icon => { icon.style.borderColor = "transparent"; });
// cursore su immagini if (target.closest(".project-view")) { tl.to(cursorSmall, { opacity: 0 }) .to(cursorBig, { opacity: 1 }, "-=0.5"); } else { if (target.classList.contains("yreveal")) { scale = 4; } else { scale = 1; } tl.to(cursorSmall, { opacity: 1 }) .to(cursorBig, { opacity: 0 }, "-=0.5"); } } }
function mouseleaveHandler() { gsap.to(cursorSmall, { opacity: 0 }); }
document.addEventListener("mousemove", mousemoveHandler); document.addEventListener("mouseleave", mouseleaveHandler);