class NextThreeDSwap{static instances=[];constructor(element){Object.assign(this,{element,duration:parseFloat(element.getAttribute("data-duration")),ease:element.getAttribute("data-easing"),stagger:parseFloat(element.getAttribute("data-stagger")),eventListeners:[],frontElement:element.querySelector(".dan-3d-swap-hover__title--front"),backElement:element.querySelector(".dan-3d-swap-hover__title--back")});this.initialize()} initialize(){this.element.removeAttribute("dan-3d-swap-hover-hide");this.updateContent();this.createSplitText();this.createAnimation();this.setupEventListeners();three_d_swap_adjust_widths_for_element(this.element)} updateContent(){if(this.frontElement){const frontContent=this.frontElement.getAttribute('data-content');if(frontContent){this.frontElement.innerHTML=frontContent}} if(this.backElement){const backContent=this.backElement.getAttribute('data-content');if(backContent){this.backElement.innerHTML=backContent}}} createSplitText(){if(this.frontSplit)this.frontSplit.revert();if(this.backSplit)this.backSplit.revert();this.frontSplit=new SplitText(this.frontElement,{type:"words, chars",charsClass:"char"});this.backSplit=new SplitText(this.backElement,{type:"words, chars",charsClass:"char"});this.frontChars=this.element.querySelectorAll(".dan-3d-swap-hover__title--front .char");this.backChars=this.element.querySelectorAll(".dan-3d-swap-hover__title--back .char")} createAnimation(){if(this.timeline){this.timeline.kill()} this.timeline=gsap.timeline({paused:!0}).to(this.frontChars,{translateY:"-0.2em",rotationY:"-5.7deg",rotationX:"-90deg",stagger:{each:this.stagger},ease:this.ease,duration:this.duration}).from(this.backChars,{translateY:"0.2em",rotationY:"5.7deg",rotationX:"90deg",stagger:{each:this.stagger},ease:this.ease,duration:this.duration},0.1)} setupEventListeners(){this.eventListeners.forEach(({element,type,listener})=>{element.removeEventListener(type,listener)});this.eventListeners=[];const onEnter=()=>this.timeline.restart();const onLeave=()=>this.timeline.reverse();this.element.addEventListener("mouseenter",onEnter);this.element.addEventListener("mouseleave",onLeave);this.eventListeners.push({element:this.element,type:"mouseenter",listener:onEnter},{element:this.element,type:"mouseleave",listener:onLeave})} destroy(){if(this.timeline){this.timeline.kill()} if(this.frontSplit){this.frontSplit.revert()} if(this.backSplit){this.backSplit.revert()} this.eventListeners.forEach(({element,type,listener})=>{element.removeEventListener(type,listener)});this.eventListeners=[];this.updateContent()} static destroyAll(){NextThreeDSwap.instances.forEach(instance=>instance.destroy());NextThreeDSwap.instances=[]}} const three_d_swap_adjust_widths_for_element=(el)=>{if(!el)return;const wrapper=el.querySelector('.dan-3d-swap-hover__inner-wrapper');const front=el.querySelector('.dan-3d-swap-hover__title--front');const back=el.querySelector('.dan-3d-swap-hover__title--back');if(!wrapper||!front||!back)return;const measure=(baseEl,text)=>{const clone=baseEl.cloneNode(!0);clone.textContent=text;clone.style.visibility='hidden';clone.style.position='absolute';clone.style.left='-99999px';clone.style.transform='none';clone.style.transition='none';clone.style.width='auto';wrapper.appendChild(clone);const w=clone.getBoundingClientRect().width;clone.remove();return w};const frontText=front.getAttribute('data-content')||front.textContent||'';const backText=back.getAttribute('data-content')||back.textContent||'';const fw=measure(front,frontText);const bw=measure(front,backText);if(bw>fw){wrapper.style.width=`${bw}px`}else{wrapper.style.removeProperty('width')}}; const three_d_swap_adjust_widths=()=>{document.querySelectorAll('.dan-3d-swap-hover').forEach(el=>three_d_swap_adjust_widths_for_element(el))}; const dancepad_3d_swap_hover=()=>{NextThreeDSwap.destroyAll();document.querySelectorAll(".dan-3d-swap-hover").forEach(element=>{element.removeAttribute('data-flickering');NextThreeDSwap.instances.push(new NextThreeDSwap(element))});three_d_swap_adjust_widths()} if(!window.__dan_3d_swap_resize_bound){window.__dan_3d_swap_resize_bound=true;let __dan_3d_swap_resize_t;window.addEventListener('resize',()=>{clearTimeout(__dan_3d_swap_resize_t);__dan_3d_swap_resize_t=setTimeout(three_d_swap_adjust_widths,150)})}