PageSourceSearch

https://www.stjoseph-stpaul.org/combine/2c69c78c7871c7a701db4388fb0f58c7-1743414548.js

js stjoseph-stpaul.org collected 2026-09-26 13:06:31 UTC 16,949 bytes, 566 lines download raw bytes

1addEventListener('page:loaded', function() {
2    initGsap();
3    initLenis();
4    initImages();
5    initHeadroom();
6    initFancybox();
7    initMarquee();
8    initForm();
9    initBackToTop();
10});
11
12function initGsap() {
13    if(typeof ScrollTrigger !== 'undefined') { gsap.registerPlugin(ScrollTrigger); }
14    if(typeof SplitText !== 'undefined') { gsap.registerPlugin(SplitText); }
15    if(typeof GSDevTools !== 'undefined') { gsap.registerPlugin(GSDevTools); }
16
17    // GSDevTools.create();
18}
19
20function initLenis() {
21    // Init lenis
22    window.scroll = new Lenis()
23    window.scroll.on('scroll', (e) => {
24        //console.log(e)
25    })
26    window.scroll.on('scroll', ScrollTrigger.update)
27    gsap.ticker.add((time)=>{
28        window.scroll.raf(time * 1000)
29    })
30    gsap.ticker.lagSmoothing(0);
31
32    // Handle anchors
33    document.querySelectorAll('*[href*="#"]').forEach(function(el) {
34        el.addEventListener('click', function(e) {
35            const offset = parseInt(getComputedStyle(document.documentElement).getPropertyValue('--header-h'));
36            const target = el.getAttribute('href');
37            const hash = '#'+target.split('#')[1];
38
39            if(target.charAt(0) == '#') {
40                e.preventDefault();
41                window.scroll.scrollTo(hash, { offset: -offset });
42            } else {
43                const actualPathname = window.location.pathname;
44                const targetPathname = new URL(target).pathname
45                if(actualPathname == targetPathname) {
46                    e.preventDefault();
47                    window.scroll.scrollTo(hash, { offset: -offset });
48                }
49            }
50        });
51    })
52}
53
54// Initialisation du lazyload
55function initImages() {
56    const imagesToResize = document.querySelectorAll('img[sizes]');
57    addEventListener('resize', function(e) {
58        imagesToResize.forEach(function(el) {
59            const width = el.clientWidth;
60            el.sizes = width+'px';
61        })
62    });
63}
64
65// Gestion de l'entête sticky.
66function initHeadroom() {
67    let offset = 0;
68
69    let el = document.body;
70    setClasses(0, 0);
71
72    ScrollTrigger.create({
73        trigger: el,
74        start: 'top+='+offset+' top',
75        end: 'bottom bottom',
76        onEnter: function(self) { 
77            setClasses(self.progress, self.direction)
78        },
79        onUpdate: function(self) {
80            setClasses(self.progress, self.direction);
81        }
82    });
83
84    function setClasses(progress, direction) {
85        switch(progress) {
86            case 0:
87                el.classList.remove('not-top');
88                el.classList.add('top');
89                break;
90            case 1:
91                el.classList.remove('top');
92                el.classList.add('bottom');
93                break;
94            default:
95                el.classList.remove('top');
96                el.classList.add('not-top');
97                break;
98        }
99
100        switch(direction) {
101            case 1:
102                el.classList.remove('pinned');
103                el.classList.add('unpinned');
104                break;
105            default:
106                el.classList.remove('unpinned');
107                el.classList.add('pinned');
108                break;
109        }
110    }
111}
112
113// Initialisation du fancybox
114function initFancybox() {
115    if (typeof Fancybox !== "undefined") {
116        Fancybox.bind("[data-fancybox]", {
117
118        });
119    }
120}
121
122// Initialisation d'un marquee
123function initMarquee() {
124    if (typeof Marquee3k !== "undefined") {
125        Marquee3k.init();
126    }
127}
128
129// Gestion des classes sur un formulaire
130function initForm() {
131
132    // Ajout / suppression d'une classe active lors du focus d'un élément
133    document.querySelectorAll('input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]), select, textarea').forEach(function(el) {
134        el.addEventListener('focus', function(e) {
135            const field = e.target.closest('.field');
136            if(!field) return;
137            field.classList.add('field-focus');
138        });
139        el.addEventListener('focusout', function(e) {
140            const field = e.target.closest('.field');
141            if(!field) return;
142            field.classList.remove('field-focus');
143            if(e.target.value) {
144                field.classList.add('field-filled');
145            } else {
146                field.classList.remove('field-filled');
147            }
148        });
149    });
150    
151    // Champs invalides après soumission
152    addEventListener('ajax:invalid-field', function(e) {
153        const { element, fieldName, fieldMessages, isFirst } = e.detail;
154        const field = element.closest('.field');
155        if(!field) return;
156        field.classList.add('field-error');
157    });
158
159    // Nettoyage des champs au moment de la validation
160    addEventListener('ajax:promise', function(e) {
161        if(e.target.tagName == 'FORM') {
162            e.target.closest('form').querySelectorAll('.field-error').forEach(function(el) {
163                el.classList.remove('field-error');
164            });
165        }
166    });
167
168    // On réinitialise la fonction en cas de refresh ajax
169    addEventListener('ajax:update-complete', function(e) {
170        // Refresh form
171        initForm();
172        // Refresh scroll trigger
173        if(typeof ScrollTrigger !== 'undefined') { ScrollTrigger.refresh() }
174    });
175
176}
177
178// Affichage d'un lien vers le haut de page
179function initBackToTop() {
180    var offset = 1000;
181    var selector = document.getElementById('backtotop');
182    if(selector) {
183        window.addEventListener('scroll', function() {
184            scrollTop = window.scrollY;
185            if (scrollTop > offset) {
186                selector.classList.add('visible');
187            } else {
188                selector.classList.remove('visible');
189            }
190        });
191    }
192}
193
194// Fonction utilitaire pour calculer une valeur avec Gsap
195function calculateVar(progress, x, y, start, end) {
196    return progress < start ? x : x + (y - x) * (Math.min(progress, 1) - start) / (end - start);
197}
198// Lorsque le DOM est prêt 
199addEventListener('page:loaded', function() {
200    initSwipers();
201    initButtons();
202    initGsap();
203    initVideos();
204});
205
206window.document.addEventListener('offline.boxes.editorRefreshed', function (e) {
207    initSwipers();
208    initButtons();
209    initGsap();
210    initVideos();
211});
212
213
214function initSwipers() {
215    // Hero accueil
216    document.querySelectorAll('.box-hero-1, .box-hero-2').forEach(function(el, index) {
217        new Swiper(el.querySelector('.swiper'), {
218            speed: 750,
219            spaceBetween: 4,
220            slidesPerView: 1,
221            rewind: true,
222            centeredSlides: false,
223            autoplay: false,
224            pagination: {
225                el: el.querySelector('.swiper-pagination'),
226                clickable: true,
227            },
228            breakpoints: {
229                575: {
230                    slidesPerView: 1,
231                },
232                768: {
233                    slidesPerView: 1,
234                },
235                991: {
236                    slidesPerView: 1,
237                    centeredSlides: false,
238                    autoplay: {
239                        delay: 3000,
240                    },
241                },
242                1200: {
243                    slidesPerView: 2,
244                },
245                1400: {
246                    slidesPerView: 2,
247                },
248            }
249        });
250    });
251
252    // Text images
253    document.querySelectorAll('.box-text-2, .box-text-3').forEach(function(el, index) {
254        new Swiper(el.querySelector('.swiper'), {
255            speed: 750,
256            spaceBetween: 16,
257            slidesPerView: 1,
258            pagination: {
259                el: el.querySelector('.swiper-pagination'),
260                clickable: true,
261            },
262            navigation: {
263                prevEl: el.querySelector('.prev'),
264                nextEl: el.querySelector('.next'),
265            },
266            breakpoints: {
267                575: {
268
269                },
270                768: {
271
272                },
273                991: {
274
275                },
276                1200: {
277
278                },
279                1400: {
280                    
281                },
282            }
283        });
284    });
285
286    // Liste de vignettes
287    document.querySelectorAll('.box-list-2').forEach(function(el, index) {
288        new Swiper(el.querySelector('.swiper'), {
289            speed: 750,
290            spaceBetween: 16,
291            slidesPerView: 1.2,
292            initialSlide: el.querySelectorAll('.swiper-slide').length - 1,
293            breakpoints: {
294                575: {
295                    slidesPerView: 2.2,
296                },
297                768: {
298                    slidesPerView: 1.5,
299                },
300                991: {
301                    slidesPerView: 1.5,
302                },
303                1200: {
304                    slidesPerView: 2,
305                },
306                1400: {
307                    slidesPerView: 2.5,
308                },
309                1800: {
310                    slidesPerView: 3.5,
311                },
312            }
313        });
314    });
315
316    document.querySelectorAll('.box-list-4').forEach(function(el, index) {
317        const cols = el.dataset.cols;
318        new Swiper(el.querySelector('.swiper'), {
319            speed: 750,
320            spaceBetween: 16,
321            slidesPerView: 1.2,
322            pagination: {
323                el: el.querySelector('.swiper-pagination'),
324                clickable: true,
325            },
326            breakpoints: {
327                575: {
328                    slidesPerView: cols / 3,
329                },
330                768: {
331                    slidesPerView: cols / 2.5,
332                },
333                991: {
334                    slidesPerView: cols / 2,
335                },
336                1400: {
337                    slidesPerView: cols,
338                },
339            }
340        });
341    });
342
343    document.querySelectorAll('.box-list-7').forEach(function(el, index) {
344        new Swiper(el.querySelector('.swiper'), {
345            speed: 750,
346            spaceBetween: 16,
347            slidesPerView: 1,
348            pagination: {
349                el: el.querySelector('.swiper-pagination'),
350                clickable: true,
351            },
352            breakpoints: {
353                575: {
354                    slidesPerView: 1.2,
355                },
356                768: {
357                    slidesPerView: 1.5,
358                },
359                991: {
360                    slidesPerView: 1.5,
361                },
362                1200: {
363                    slidesPerView: 2,
364                },
365                1400: {
366                    slidesPerView: 2.5,
367                },
368                1800: {
369                    slidesPerView: 3.5,
370                },
371            }
372        });
373    });
374
375    // Actualités
376    document.querySelectorAll('.box-blog-1').forEach(function(el, index) {
377        new Swiper(el.querySelector('.swiper'), {
378            speed: 750,
379            spaceBetween: 48,
380            slidesPerView: 1,
381            // slidesPerGroup: 3,
382            autoplay: {
383                delay: 4000,
384            },
385            pagination: {
386                el: el.querySelector('.swiper-pagination'),
387                clickable: true,
388            },
389            breakpoints: {
390                575: {
391                    slidesPerView: 1.5,
392                },
393                768: {
394                    slidesPerView: 1.8,
395                },
396                991: {
397                    slidesPerView: 2.2,
398                },
399                1200: {
400                    slidesPerView: 2.6,
401                },
402                1400: {
403                    slidesPerView: 3.8,
404                },
405            }
406        });
407    });
408
409    // Liste de logos
410    document.querySelectorAll('.box-logos-1').forEach(function(el, index) {
411        const cols = el.dataset.cols;
412        new Swiper(el.querySelector('.swiper'), {
413            speed: 750,
414            spaceBetween: 64,
415            slidesPerView: 'auto',
416            // centeredSlides: true,
417            navigation: {
418                prevEl: el.querySelector('.prev'),
419                nextEl: el.querySelector('.next'),
420            },
421            pagination: {
422                el: el.querySelector('.swiper-pagination'),
423                clickable: true,
424            },
425            /*
426            breakpoints: {
427                575: {
428                    slidesPerView: 2,
429                },
430                768: {
431                    slidesPerView: 3,
432                },
433                991: {
434                    slidesPerView: 3,
435                },
436                1200: {
437                    slidesPerView: 4,
438                },
439                1400: {
440                    slidesPerView: 5,
441                },
442            }
443                */
444        });
445    });
446
447    // Témoignages
448    document.querySelectorAll('.box-testimonials-1').forEach(function(el, index) {
449        new Swiper(el.querySelector('.swiper'), {
450            speed: 750,
451            spaceBetween: 16,
452            slidesPerView: 1,
453            autoHeight: true,
454            // slidesPerGroup: 3,
455            navigation: {
456                prevEl: el.querySelector('.prev'),
457                nextEl: el.querySelector('.next'),
458            },
459            pagination: {
460                el: el.querySelector('.swiper-pagination'),
461                clickable: true,
462            },
463        });
464    });
465
466    // Blog
467    document.querySelectorAll('.box-blog-slider').forEach(function(el, index) {
468        const cols = el.dataset.cols;
469        new Swiper(el.querySelector('.swiper'), {
470            speed: 750,
471            spaceBetween: 24,
472            slidesPerView: cols,
473            rewind: true,
474            autoplay: {
475                delay: 4000,
476            },
477            navigation: {
478                prevEl: el.querySelector('.swiper-button-prev'),
479                nextEl: el.querySelector('.swiper-button-next'),
480            },
481            scrollbar: {
482                el: el.querySelector('.swiper-scrollbar'),
483                draggable: true,
484            },
485        });
486    });
487
488
489    // Actualités
490    document.querySelectorAll('.box-blog-related').forEach(function(el, index) {
491        new Swiper(el.querySelector('.swiper'), {
492            speed: 750,
493            spaceBetween: 16,
494            slidesPerView: 3.8,
495            // slidesPerGroup: 3,
496            navigation: {
497                prevEl: el.querySelector('.prev'),
498                nextEl: el.querySelector('.next'),
499            },
500        });
501    });
502}
503
504function initButtons() {
505    document.querySelectorAll('.btn').forEach(function (el) {
506        const text = el.innerHTML;
507        
508        el.innerHTML = `<div class="btn-inner"><span>${text}</span><span>${text}</span></div>`; // Ajoute les spans avec le texte répété
509    });
510}
511
512
513function initGsap() {
514    // Liste de vignettes (variante 2)
515    document.querySelectorAll('.box-hero-1').forEach(function(el, index) {
516        /*
517        gsap.fromTo('.box-hero-1', 
518            {
519                x: '75%',
520            },
521            { 
522                x: '-25%',
523                scrollTrigger: {
524                    trigger: '.bigtitle',
525                    scrub: 1,
526                },
527            }
528        );
529        */
530        /*
531        const swiper = el.querySelector('.swiper');
532        ScrollTrigger.create({
533            trigger: el.querySelector('.slider'),
534            //start: 'top top',
535            //endTrigger: '#otherID',
536            //end: 'bottom 50%+=100px',
537            //onToggle: (self) => console.log('toggled, isActive:', self.isActive),
538            onUpdate: (self) => {
539                swiper.setProgress(self.progress.toFixed(3));
540                console.log(
541                    'progress:',
542                    self.progress.toFixed(3),
543                    'direction:',
544                    self.direction,
545                    'velocity',
546                    self.getVelocity()
547                );
548            }
549        });
550        */
551    });
552}
553
554function initVideos() {
555    document.querySelectorAll('.video-js').forEach(function(el) {
556        const player = videojs(document.querySelector('.video-js'));
557        player.on('play', function(e) {
558            el.parentNode.classList.remove('overlay-20');
559        });
560        player.on('pause', function(e) {
561            el.parentNode.classList.add('overlay-20');
562        });
563        
564    })
565
566}

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.