PageSourceSearch

https://www.fast-transports.fr/js/PAGE_4UGGAFF8S4.min.js?v=1791596511

js fast-transports.fr collected 2026-10-10 02:17:42 UTC 10,811 bytes, 28 lines download raw bytes

1let carouselContainers=document.getElementsByClassName("blk-carousel");for(let carouselContainer of carouselContainers){let carouselLinks=carouselContainer.querySelectorAll(".blk-carousel__lightbox");for(let link of carouselLinks){link.addEventListener("click",e=>openGallery(e,carouselLinks));}}
2document.addEventListener('DOMContentLoaded',function(){function setupCarousel(scene){const isReduced=currentMotion==='reduced';const parentScene=scene.parentNode;const isAutoPlay=parentScene.dataset.autoplay==='true';let autoPlay;if(isReduced||isAutoPlay!=true){autoPlay=false;}else{autoPlay=true;}
3scene.setAttribute('aria-live','off');const navContainer=document.createElement('div');navContainer.classList.add('blk-carousel__nav','blk-button--text');scene.insertAdjacentElement('afterend',navContainer);const dotsContainer=document.createElement('div');dotsContainer.classList.add('blk-carousel__dots-container');dotsContainer.setAttribute('role','tablist');dotsContainer.setAttribute('aria-label','Slides');navContainer.appendChild(dotsContainer);for(let i=0;i<scene.children.length;i++){scene.children[i].setAttribute('role','tabpanel');scene.children[i].setAttribute('id','slide-'+(i+1));scene.children[i].setAttribute('aria-roledescription','slide');scene.children[i].setAttribute('aria-label','slide '+(i+1)+' of '+scene.children.length);if(!scene.children[i].querySelector('a')){}else{scene.children[i].querySelector('a').addEventListener('click',function(){asInteract=true;});}
4const dot=document.createElement('span');dot.classList.add('blk-carousel__dot');dot.setAttribute('role','tab');dot.setAttribute('aria-controls','slide-'+(i+1));dot.setAttribute('aria-label','slide '+(i+1));dot.setAttribute('aria-selected','false');dot.setAttribute('tabindex','-1');dotsContainer.appendChild(dot);dot.addEventListener('click',function(){scrollToItem(i);playBtnIcon.classList.remove('hide');pauseBtnIcon.classList.add('hide');isPaused=true;progressPaused=isPaused;clearInterval(intervalId);asInteract=true;});}
5const prevButton=document.createElement('button');prevButton.classList.add('blk-carousel__prev-btn','tiny','blk-button__link');prevButton.setAttribute('aria-label','Previous slide');prevButton.innerHTML=`<span class="ico blk-button__icon" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-left" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"></path><polyline points="15 6 9 12 15 18"></polyline></svg></span>`;prevButton.setAttribute("aria-hidden","true");const nextButton=document.createElement('button');nextButton.classList.add('blk-carousel__next-btn','tiny','blk-button__link');nextButton.setAttribute('aria-label','Next slide');nextButton.innerHTML=`<span class="ico blk-button__icon" aria-hidden="true"><svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-right" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z"></path><polyline points="9 6 15 12 9 18"></polyline></svg></span>`;const pauseButton=document.createElement('button');pauseButton.classList.add('blk-carousel__pause-btn','tiny','blk-button__link');pauseButton.setAttribute('aria-label','Pause or play slideshow');pauseButton.innerHTML=`<span class="ico blk-button__icon play hide" aria-hidden="true">
6        <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" class="play icon-outline"><path class="outline" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M7 4v16l13-8L7 4Z"></path></svg>
7        </span>
8        <span class="ico blk-button__icon pause" aria-hidden="true">
9        <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="none" viewBox="0 0 24 24" class="pause icon-outline"><path class="outline" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9 5H7a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1Zm8 0h-2a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h2a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1Z"></path></svg>
10        </span>`;navContainer.appendChild(prevButton);navContainer.appendChild(pauseButton);navContainer.appendChild(nextButton);const playBtnIcon=pauseButton.querySelector('.play');const pauseBtnIcon=pauseButton.querySelector('.pause');let currentIndex=0;let isPaused=false;let progressPaused=false;let intervalId;let asInteract=false;let animationDuration=parentScene.dataset.duration?parseInt(parentScene.dataset.duration):6000;let isCarouselVisible=true;if(autoPlay!=false){let hasBeenNonVisible=false;const observer=new IntersectionObserver((entries)=>
10{entries.forEach((entry)=>{isCarouselVisible=entry.isIntersecting;if(!isCarouselVisible){hasBeenNonVisible=true;if(!isPaused){isPaused=!isPaused;if(!isPaused){playBtnIcon.classList.add('hide');pauseBtnIcon.classList.remove('hide');}else{playBtnIcon.classList.remove('hide');pauseBtnIcon.classList.add('hide');}
11progressPaused=isPaused;clearInterval(intervalId);}}
12else{if(hasBeenNonVisible===true){setTimeout(function(){if(!asInteract){isPaused=false;if(!isPaused){playBtnIcon.classList.add('hide');pauseBtnIcon.classList.remove('hide');}else{playBtnIcon.classList.remove('hide');pauseBtnIcon.classList.add('hide');}
13progressPaused=false;startAutoScroll();scrollToItem(currentIndex);}},2000);}}});},{threshold:0.2});observer.observe(scene);}
14function scrollToItem(index){currentIndex=index;if(parentScene.classList.contains('active-centered')){scene.scrollLeft=scene.children[index].offsetLeft-(window.innerWidth / 2-scene.children[index].offsetWidth / 2);}else{scene.scrollLeft=scene.children[index].offsetLeft;}
15updateNavigation();}
16function navigate(direction){const newIndex=currentIndex+direction;if(newIndex>=0&&newIndex<scene.children.length){scrollToItem(newIndex);}else if(newIndex===scene.children.length){scrollToItem(0);}}
17function autoScroll(){if(!isPaused){const activeItem=scene.querySelector('.collection-item.active');const activeItemRect=activeItem.getBoundingClientRect();if(activeItemRect.left>=0&&activeItemRect.right<=window.innerWidth){navigate(1);}else{playBtnIcon.classList.remove('hide');pauseBtnIcon.classList.add('hide');isPaused=true;clearInterval(intervalId);}}}
18pauseButton.addEventListener('click',function(){isPaused=!isPaused;if(!isPaused){playBtnIcon.classList.add('hide');pauseBtnIcon.classList.remove('hide');}else{playBtnIcon.classList.remove('hide');pauseBtnIcon.classList.add('hide');}
19progressPaused=isPaused;if(isPaused){clearInterval(intervalId);asInteract=true;}else{asInteract=false;startAutoScroll();scrollToItem(currentIndex);}});prevButton.addEventListener('click',function(){navigate(-1);playBtnIcon.classList.remove('hide');pauseBtnIcon.classList.add('hide');isPaused=true;progressPaused=isPaused;clearInterval(intervalId);asInteract=true;});nextButton.addEventListener('click',function(){navigate(1);playBtnIcon.classList.remove('hide');pauseBtnIcon.classList.add('hide');isPaused=true;progressPaused=isPaused;clearInterval(intervalId);asInteract=true;});document.addEventListener('keydown',function(event){if(event.key==='ArrowLeft'&&currentIndex>0){navigate(-1);playBtnIcon.classList.remove('hide');pauseBtnIcon.classList.add('hide');isPaused=true;progressPaused=isPaused;clearInterval(intervalId);asInteract=true;}else if(event.key==='ArrowRight'&&currentIndex<scene.children.length-1){navigate(1);playBtnIcon.classList.remove('hide');pauseBtnIcon.classList.add('hide');isPaused=true;progressPaused=isPaused;clearInterval(intervalId);asInteract=true;}});scene.addEventListener('focusin',function(){playBtnIcon.classList.remove('hide');pauseBtnIcon.classList.add('hide');isPaused=true;clearInterval(intervalId);});function updateNavigation(){const dots=dotsContainer.querySelectorAll('.blk-carousel__dot');const items=scene.querySelectorAll('.collection-item');dots.forEach((dot,index)=>{if(index===currentIndex){dot.classList.add('active');dot.setAttribute('aria-selected','true');dot.setAttribute('tabindex','0');}else{dot.classList.remove('active');dot.setAttribute('aria-selected','false');dot.setAttribute('tabindex','-1');}});items.forEach((item,index)=>{if(index===currentIndex){item.classList.add('active');}else{item.classList.remove('active');}});prevButton.setAttribute('aria-hidden',currentIndex===0?'true':'false');prevButton.setAttribute('tabindex',currentIndex===0?'-1':'0');nextButton.setAttribute('aria-hidden',currentIndex===scene.children.length-1?'true':'false');nextButton.setAttribute('tabindex',currentIndex===scene.children.length-1?'-1':'0');updateProgress();}
20function updateProgress(){let startTime;let progress=0;let animationFrameId;function updateProgressBar(){const currentTime=Date.now();const elapsedTime=currentTime-startTime;progress=(elapsedTime / animationDuration)*100;if(progress>=100){progress=100;cancelAnimationFrame(animationFrameId);}
21if(!progressPaused){dotsContainer.querySelector('.blk-carousel__dot.active').style.setProperty('--_progress',`${progress}%`);}else{dotsContainer.querySelector('.blk-carousel__dot.active').style.setProperty('--_progress','100%');}
22if(progress<100&&!progressPaused){animationFrameId=requestAnimationFrame(updateProgressBar);}}
23startTime=Date.now();updateProgressBar();}
24function startAutoScroll(){clearInterval(intervalId);if(!progressPaused){intervalId=setInterval(autoScroll,animationDuration);updateProgress();}}
25scene.addEventListener('mouseenter',function(){if(!isPaused){isPau
25sed=!isPaused;if(!isPaused){playBtnIcon.classList.add('hide');pauseBtnIcon.classList.remove('hide');}else{playBtnIcon.classList.remove('hide');pauseBtnIcon.classList.add('hide');}
26progressPaused=isPaused;clearInterval(intervalId);}});scene.addEventListener('mouseleave',function(){if(!asInteract&&autoPlay==true){isPaused=false;if(!isPaused){playBtnIcon.classList.add('hide');pauseBtnIcon.classList.remove('hide');}else{playBtnIcon.classList.remove('hide');pauseBtnIcon.classList.add('hide');}
27progressPaused=false;startAutoScroll();scrollToItem(currentIndex);}});scene.children[0].classList.add('active');const firstDot=dotsContainer.children[0];firstDot.classList.add('active');firstDot.setAttribute('aria-selected','true');firstDot.setAttribute('tabindex','0');if(autoPlay!=false){startAutoScroll();}else{pauseButton.classList.add('hide');dotsContainer.querySelector('.blk-carousel__dot.active').style.setProperty('--_progress','100%');}}
28const carousels=document.querySelectorAll('.blk-carousel[data-controls="dots"] .blk-carousel__scene');carousels.forEach(setupCarousel);});

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.