1const MOBILE_BREAKPOINT=750,DEFAULT_DELAY=300,DEFAULT_DURATION=900,parseIntSafe=(value,fallback)=>{const parsed=parseInt(value);return isNaN(parsed)?fallback:parsed},isMobileDevice=()=>window.innerWidth<750;document.querySelectorAll("[data-intersection-observer]").forEach((intersectElement,i)=>{const intersectionID=intersectElement.dataset.id,observerElement=document.querySelector(`[data-id="${intersectionID}"]`);if(!observerElement){console.warn(`Observer element not found for ID: ${intersectionID}`);return}const intersectOnce=observerElement.dataset.intersectOnce!=="false",observerOptions={rootMargin:"0px 0px -50% 0px",threshold:0,...(()=>{try{return JSON.parse(observerElement.dataset.intersectionObserver||"{}")}catch{return{}}})()},animationBody=observerElement.querySelector(".full-width-banner__animation--body"),animationElements=observerElement.querySelectorAll(".full-width-banner__animation"),intersectionObserver=new IntersectionObserver(entries=>{entries.forEach(entry=>{if(!entry.isIntersecting||intersectionID!==entry.target.dataset.id)return;const isMobile=isMobileDevice(),allowMobileAnimation=observerElement.dataset.animationMobile!=="false";if(isMobile&&!allowMobileAnimation||observerElement.classList.contains("isAnimated")&&intersectOnce)return;observerElement.classList.remove("inAnimation","isAnimated");const animationDelay=animationBody?parseIntSafe(animationBody.dataset.animationDelay,300):300,animationDuration=animationBody?parseIntSafe(animationBody.dataset.animationDuration,900):900;setAnimation({observerElement,animationBody,animationElements});const cleanupDelay=animationElements.length*animationDelay+(animationDelay+animationDuration);setTimeout(()=>{observerElement.classList.contains("isAnimated")&&intersectOnce?intersectionObserver.unobserve(observerElement):observerElement.classList.contains("isAnimated")&&!intersectOnce&&observerElement.classList.remove("isAnimated")},cleanupDelay)})},observerOptions);intersectionObserver.observe(observerElement);function setAnimation(params){const{observerElement:observerElement2,animationBody:animationBody2,animationElements:animationElements2}=params;if(!animationElements2?.length){observerElement2.classList.add("isAnimated");return}const baseAnimationDelay=animationBody2?parseIntSafe(animationBody2.dataset.animationDelay,300):300,baseAnimationDuration=animationBody2?parseIntSafe(animationBody2.dataset.animationDuration,900):900;observerElement2.classList.add("inAnimation");let completedAnimations=0;const totalAnimations=animationElements2.length,scheduleAnimation=(element,index)=>{const elementDelay=parseIntSafe(element.dataset.animationDelay,baseAnimationDelay),elementDuration=parseIntSafe(element.dataset.animationDuration,baseAnimationDuration),startDelay=(index+1)*elementDelay,endDelay=startDelay+elementDuration;setTimeout(()=>{requestAnimationFrame(()=>{element.classList.add("inAnimation");const childElement=element.querySelector("*");childElement&&(childElement.style.animationDuration=`${elementDuration}ms`)})},startDelay),setTimeout(()=>{requestAnimationFrame(()=>{const childElement=element.querySelector("*");childElement&&(childElement.style.animationDuration="",childElement.style.length||childElement.removeAttribute("style")),element.classList.remove("inAnimation"),element.classList.add("isAnimated"),completedAnimations++,completedAnimations===totalAnimations&&(observerElement2.classList.remove("inAnimation"),observerElement2.classList.add("isAnimated"))})},endDelay)};animationElements2.forEach((element,i2)=>{element&&scheduleAnimation(element,i2)})}}); 2//# sourceMappingURL=/cdn/shop/t/15/assets/intersection-observer.js.map?v=132206705891971351491780590550
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.