PageSourceSearch

https://www.yanse.nl/js/custom.js?nocache=1790906570

js yanse.nl collected 2026-10-02 02:03:38 UTC 20,377 bytes, 629 lines download raw bytes

1/*===============stiky-header===============*/
2$(window).scroll(function () {
3    if ($(window).scrollTop() > 0) {
4        $('.header-area').addClass('header-active');
5    }
6    else {
7        $('.header-area').removeClass('header-active');
8    }
9});
10/*===============mobile-menu===============*/
11$(".menu-btn").click(function () {
12    $(this).toggleClass('active');
13    $("body").toggleClass('overflow-hidden');
14    $(".mobile-menu").toggleClass('mobile-menu-active');
15    $(".mobile-menu li").toggleClass('active');
16    $(".body-overlay").toggleClass('body-overlay-active');
17});
18$(".body-overlay").click(function () {
19    $(this).removeClass('body-overlay-active');
20    $("body").removeClass('overflow-hidden');
21    $(".mobile-menu").removeClass('mobile-menu-active');
22    $(".mobile-menu li").removeClass('active');
23    $(".menu-btn").removeClass('active');
24});
25/*===============Home-Banner-Sec===============*/
26$(document).ready(function () {
27    var slideCount = $('.home-banner-sec .swiper-slide').length;
28    var loopSetting = slideCount > 1;
29    var swiper = new Swiper('.home-banner-sec .swiper', {
30        slidesPerView: 1,
31        effect: 'fade',
32        loop: loopSetting,
33        autoplay: {
34            delay: 3000,
35            disableOnInteraction: false,
36        },
37    });
38});
39// --------- Home About Slider --------- //
40var swiper = new Swiper(".home-about-slider .swiper", {
41    slidesPerView: 1,
42    spaceBetween: 16,
43    loop: false,
44    centeredSlides: false,
45    autoplay: true,
46    speed: 1000,
47    breakpoints: {
48        320: {
49            slidesPerView: 1,
50            autoplay: false,
51            grid: {
52                rows: 2,
53                fill: "row"
54            },
55            direction: "horizontal",
56            spaceBetween: 8
57        },
58        992: {
59            slidesPerView: 4,
60            grid: {
61                rows: 1
62            },
63            direction: "horizontal",
64            spaceBetween: 12,
65        }
66    }
67});
68// --------- Why Choose Slider --------- //
69var swiper = new Swiper(".why-choose-slider .swiper", {
70    slidesPerView: 1,
71    spaceBetween: 16,
72    loop: false,
73    centeredSlides: false,
74    autoplay: false,
75    speed: 1000,
76    navigation: {
77        nextEl: '.why-choose-wrap .swiper-button-next',
78        prevEl: '.why-choose-wrap .swiper-button-prev',
79    },
80    breakpoints: {
81        320: {
82            slidesPerView: 1,
83            grid: {
84                rows: 2,
85                fill: "row"
86            },
87            direction: "horizontal",
88            spaceBetween: 10
89        },
90        992: {
91            slidesPerView: 2,
92            grid: {
93                rows: 1
94            },
95            direction: "horizontal",
96            spaceBetween: 30,
97        },
98        1200: {
99            slidesPerView: 3,
100            grid: {
101                rows: 1
102            },
103            direction: "horizontal",
104            spaceBetween: 30,
105        }
106    }
107});
108/*===============common-button-border-fill-effect===============*/
109// $(function () {
110//     $('.common-btn, .common-arrow , .menu-btn').each(function () {
111//         const $btn = $(this);
112//         const $svg = $btn.find('svg');
113//         const $rect = $btn.find('rect')[0];
114//         if (!$rect) return;
115//         const update = () => {
116//             if (!document.body.contains($rect) || $($rect).css('display') === 'none') return;
117//             try {
118//                 const w = $btn.outerWidth();
119//                 const h = $btn.outerHeight();
120//                 const len = $rect.getTotalLength();
121//                 $svg.attr('viewBox', `0 0 ${w} ${h}`);
122//                 $($rect).attr({
123//                     width: w - 2,
124//                     height: h - 2,
125//                     rx: h / 2 - 1,
126//                     ry: h / 2 - 1
127//                 });
128//                 gsap.set($rect, {
129//                     strokeDasharray: len,
130//                     strokeDashoffset: len
131//                 });
132//                 $btn.off('mouseenter mouseleave').hover(
133//                     () => gsap.to($rect, { strokeDashoffset: 0, duration: 1.2 }),
134//                     () => gsap.to($rect, { strokeDashoffset: len, duration: 1.2 })
135//                 );
136//             } catch (e) {
137//                 console.warn("SVG element not ready or visible yet:", e);
138//             }
139//         };
140//         setTimeout(update, 100);
141//         $(window).on('resize', update);
142//         if (window.ResizeObserver) {
143//             new ResizeObserver(update).observe($btn[0]);
144//         }
145//     });
146// });
147$(function () {
148    $('.common-btn, .common-arrow, .menu-btn').each(function () {
149        const $btn = $(this);
150        const $svg = $btn.find('svg');
151        const rect = $btn.find('rect')[0];
152        if (!rect || !$svg.length) return;
153        const update = () => {
154            if (!document.body.contains(rect)) return;
155            if (!$btn.is(':visible')) return;
156            const w = $btn.outerWidth();
157            const h = $btn.outerHeight();
158            if (w <= 0 || h <= 0) return;
159            const rectW = Math.max(1, w - 2);
160            const rectH = Math.max(1, h - 2);
161            const radius = Math.max(0, h / 2 - 1);
162            $svg.attr('viewBox', `0 0 ${w} ${h}`);
163            $(rect).attr({
164                width: rectW,
165                height: rectH,
166                rx: radius,
167                ry: radius
168            });
169            const len = rect.getTotalLength();
170            gsap.set(rect, {
171                strokeDasharray: len,
172                strokeDashoffset: len
173            });
174            $btn.off('mouseenter mouseleave').hover(
175                () => gsap.to(rect, { strokeDashoffset: 0, duration: 1.2 }),
176                () => gsap.to(rect, { strokeDashoffset: len, duration: 1.2 })
177            );
178        };
179
180        setTimeout(update, 150);
181        $(window).on('resize', update);
182        if (window.ResizeObserver) {
183            new ResizeObserver(update).observe($btn[0]);
184        }
185    });
186});
187// Home Gallery Move //
188// $(window).on("load", function () {
189//     gsap.registerPlugin(ScrollTrigger);
190//     ScrollTrigger.config({ ignoreMobileResize: true });
191//     function setupMarquee($row, dir) {
192//         const html = $row.html();
193//         const repeat = 0;
194//         for (let i = 1; i < repeat; i++) $row.append(html);
195//         let x = 0;
196//         let width = 0;
197//         function calculate() {
198//             width = $row[0].scrollWidth / repeat;
199//         }
200//         calculate();
201//         requestAnimationFrame(calculate);
202//         ScrollTrigger.create({
203//             trigger: ".home-gallery-wrap",
204//             start: "top bottom",
205//             end: "bottom top",
206//             onEnter: calculate,
207//             onEnterBack: calculate,
208//             onRefresh: calculate,
209//             onUpdate: self => {
210//                 const v = self.getVelocity() / 200;
211//                 x += (dir === "rtl" ? -v : v);
212//                 if (x <= -width) x += width;
213//                 if (x >= 0) x -= width;
214//                 gsap.set($row, { x });
215//             }
216//         });
217//     }
218//     $(".right-to-left").each((_, el) => setupMarquee($(el), "ltr"));
219//     $(".left-to-right").each((_, el) => setupMarquee($(el), "rtl"));
220//     ScrollTrigger.refresh();
221// });
222
223// Home Gallery Move //
224$(window).on("load", function () {
225    gsap.registerPlugin(ScrollTrigger);
226    ScrollTrigger.config({ ignoreMobileResize: true });
227    function setupMarquee($row, dir) {
228        let x = 0;
229        let width = $row[0].scrollWidth - $row.parent().width(); 
230        ScrollTrigger.create({
231            trigger: ".home-gallery-wrap",
232            start: "top bottom",
233            end: "bottom top",
234            onUpdate: self => {
235                const v = self.getVelocity() / 200;
236                x += (dir === "rtl" ? -v : v);
237                x = Math.max(-width, Math.min(0, x));
238                gsap.set($row, { x });
239            }
240        });
241    }
242    $(".right-to-left").each((_, el) => setupMarquee($(el), "ltr"));
243    $(".left-to-right").each((_, el) => setupMarquee($(el), "rtl"));
244    ScrollTrigger.refresh();
245});
246
247/*==========usp-marquee==========*/
248$(document).ready(function () {
249    if ($(".usp-marquee-sec").length) {
250        var $marqueeWrap = $(".usp-marquee-wrap");
251        var listItems = $marqueeWrap.html();
252        var repeatCount = 5;
253        for (var i = 1; i < repeatCount; i++) {
254            $marqueeWrap.append(listItems);
255        }
256        var marqueeAnimation = gsap.to($marqueeWrap, {
257            xPercent: -100 / repeatCount,
258            duration: 25,
259            ease: "linear",
260            repeat: -1
261        });
262        $marqueeWrap.on("mouseenter", function () {
263            marqueeAnimation.pause();
264        });
265        $marqueeWrap.on("mouseleave", function () {
266            marqueeAnimation.resume();
267        });
268    }
269});
270// Ft Marqu //
271$(document).ready(function () {
272    if ($(".ft-marque").length) {
273        var $marqueeWrap = $(".ft-usp-marquee");
274        var listItems = $marqueeWrap.html();
275        var repeatCount = 5;
276        for (var i = 1; i < repeatCount; i++) {
277            $marqueeWrap.append(listItems);
278        }
279        var marqueeAnimation = gsap.to($marqueeWrap, {
280            xPercent: -100 / repeatCount,
281            duration: 25,
282            ease: "linear",
283            repeat: -1
284        });
285        $marqueeWrap.on("mouseenter", function () {
286            marqueeAnimation.pause();
287        });
288        $marqueeWrap.on("mouseleave", function () {
289            marqueeAnimation.resume();
290        });
291    }
292});
293// Over Ons //
294let SwiperTop = new Swiper('.over-ons-slider .swiper', {
295      spaceBetween: 10,
296      centeredSlides: true,
297      speed: 6000,
298      autoplay: {
299        delay: 1,
300      },
301      loop: true,
302      slidesPerView:'auto',
303      allowTouchMove: false,
304      disableOnInteraction: true,
305          breakpoints: {
306        320: {
307            slidesPerView: 1.8,
308            spaceBetween: 10,
309            centeredSlides: true,
310            loop: true,
311        },
312        992: {
313            slidesPerView: 2.5,
314            spaceBetween: 13,
315        },
316        1200: {
317            slidesPerView: 2.5,
318            spaceBetween: 37,
319        },
320    },
321});
322// Home Blos Slider //
323var swiper = new Swiper('.home-blog-slider .swiper', {
324    slidesPerView: 1,
325    spaceBetween: 16,
326    loop: false,
327    centeredSlides: false,
328    autoplay: false,
329    speed: 1000,
330    breakpoints: {
331        320: {
332            slidesPerView: 1.1,
333            spaceBetween: 10,
334            centeredSlides: true,
335            loop: true,
336        },
337        992: {
338            slidesPerView: 2,
339            spaceBetween: 13,
340        },
341        1200: {
342            slidesPerView: 3,
343            spaceBetween: 63,
344
345        },
346    },
347});
348/*==========counter with all special character===========*/
349$(document).ready(function () {
350    function animateCounter($countElement) {
351        let text = $countElement.text().trim();
352        let nums = [...text.matchAll(/\d+(\.\d+)?/g)];
353        if (!nums.length) return;
354        let template = text;
355        nums.forEach((m,i)=> template = template.replace(m[0], `__${i}__`));
356        let cur = nums.map(()=>0), dec = nums.map(m=> (m[0].includes('.')? m[0].split('.')[1].length:0));
357        let target = {}; nums.forEach((m,i)=> target['n'+i] = parseFloat(m[0]));
358        function render(){
359            $countElement.text(template.replace(/__(\d+)__/g, (_,i)=> dec[i]?cur[i].toFixed(dec[i]):Math.floor(cur[i])));
360        }
361        $({}).animate(target,{
362            duration:2000,easing:'linear',
363            step:(now,fx)=>{ let i=fx.prop.slice(1); cur[i]=now; render(); },
364            complete:()=> $countElement.text(text)
365        });
366    }
367    $(window).on('scroll', function(){
368        $('.each-counter').each(function(){
369            let $box=$(this);
370            if($box.hasClass('counted')) return;
371            if($box.offset().top < $(window).scrollTop()+$(window).height()-50){
372                $box.addClass('counted');
373                animateCounter($box.find('h2'));
374            }
375        });
376    });
377});
378/*==========Position Change Jquery============*/
379$(window).on("load resize",function(e){
380    if ($(window).width() < 992) {
381        $('.home-service-btn').insertAfter(".home-service-btn-lg");
382        $('.why-slider-btn').insertAfter(".why-slider-btn-lg");
383        $('.ft-social-icons').insertAfter(".ft-logo");
384    }
385    else {
386        $('.home-service-btn').insertAfter(".home-service-btn-mb");
387        $('.why-slider-btn').insertAfter(".why-slider-btn-mb");
388        $('.ft-social-icons').insertAfter(".ft-menu-contact");
389        $('.ft-social-icons').insertAfter(".ft-menu-contact");
390    }
391});
392$(window).on("load resize",function(e){
393    if ($(window).width() < 320 ) {
394        $('.home-gallery-wrap').insertAfter(".home-banner-heading");
395    }
396    else {
397        $('.home-gallery-wrap').insertAfter(".home-banner-heading");
398    }
399});
400/*===============custom-accordion===============*/
401$(document).ready(function () {
402    var slie_time = 300; // set slide time;
403    $('.acc-block .show_accordian>*:not(:first-child)').show()
404    $('.acc-block li > *:first-child').click(function () {
405        var accro_parent = $(this).parent();
406        var accro_content = accro_parent.children(':not(:first-child)');
407        if (accro_parent.hasClass("show_accordian")) {
408            accro_parent.removeClass("show_accordian");
409            accro_content.stop().slideUp(slie_time);
410        } else {
411            accro_parent.siblings().removeClass("show_accordian").children(':not(:first-child)').stop().slideUp(slie_time);
412            accro_parent.addClass("show_accordian");
413            accro_content.stop().slideDown(slie_time);
414        }
415    });
416})
417/*===============vacature-dtl-slider===============*/
418var swiper = new Swiper('.vacature-dtl-slider .swiper', {
419    slidesPerView: 1,
420    spaceBetween: 15,
421    loop: false,
422    speed: 1500,
423    autoplay: {
424        delay: 5000,
425        disableOnInteraction: false,
426    },
427    breakpoints: {
428        320: {
429            slidesPerView: 1,
430            spaceBetween: 10,
431        },
432        768: {
433            slidesPerView: 1,
434            spaceBetween: 15,
435        },
436        992: {
437            slidesPerView: 2,
438            spaceBetween: 15,
439        },
440        1400: {
441            slidesPerView: 3,
442            spaceBetween: 15,
443        },
444    },
445});
446/*=================plan-kennismaking-popup====================*/
447$(".header-popup").click(function () {
448    $(".header-step-form").addClass('step-form-active');
449    $(".body-blur").addClass('body-blur-active');
450});
451$(".step-form-close").click(function () {
452    $(".header-step-form").removeClass('step-form-active');
453    $(".body-blur").removeClass('body-blur-active');
454});
455$(".body-blur").click(function () {
456    $(".header-step-form").removeClass('step-form-active');
457    $(this).removeClass('body-blur-active');
458});
459// Custome Line Draw //
460// For H1 //
461$(document).ready(function () {
462    const svgPath = `
463    <svg viewBox="0 0 259 89" fill="none" xmlns="http://www.w3.org/2000/svg" class="round-svg" preserveAspectRatio="none">
464      <path d="M137.341 87.0447C99.1984 87.0818 60.4263 83.37 25.5655 71.2043
465        C14.3845 67.2976 2.31071 60.9596 1.53697 51.3552
466        C0.984299 44.4046 6.73206 38.1316 13.1346 33.3247
467        C26.9344 22.9686 44.6964 16.4636 62.7903 11.731
468        C97.5488 2.64621 134.799 -0.453177 171.208 2.69263
469        C193.638 4.63207 216.093 9.03064 235.428 18.1804
470        C246.43 23.3862 257.135 31.4224 257.229 41.5187
471        C257.28 47.5598 253.36 53.3131 247.876 57.5354
472        C242.392 61.7576 235.453 64.625 228.396 66.9913
473        C196.503 77.663 161.038 79.092 126.415 80.3819"
474        />
475    </svg>`;
476    $('h1 em , h3 em').append(svgPath);
477
478    function adjustSvg() {
479        $('h1 em , h3 em').each(function () {
480            const $em = $(this);
481            const $svg = $em.find('.round-svg');
482            if (!$svg.length) return;
483            const w = $em.outerWidth();
484            const h = $em.outerHeight();
485            $svg.css({
486                width: w + 'px',
487                height: h + 'px',
488                bottom: -(h * 0.35) + 'px'
489            });
490        });
491    }
492    adjustSvg();
493    $(window).on('resize', adjustSvg);
494
495    gsap.registerPlugin(ScrollTrigger);
496    $('section').each(function () {
497        const $section = $(this);
498        const ems = $section.find('h1 em , h3 em');
499        if (!ems.length) return;
500
501        ScrollTrigger.create({
502            trigger: this,
503            start: 'top 70%',
504            once: true,
505            onEnter: () => {
506                ems.each(function () {
507                    $(this).addClass('em-animate');
508                });
509            }
510        });
511    });
512});
513// For H2 //
514$(document).ready(function () {
515  const svgPath = `
516    <svg width="362" height="24" viewBox="0 0 362 24" fill="none" xmlns="http://www.w3.org/2000/svg" class="underline-svg">
517    <g clip-path="url(#clip0_3136_953)">
518    <g clip-path="url(#clip1_3136_953)">
519    <path class="st-line" d="M2.73796 16.2038C121.055 8.71683 240.224 4.74429 359.437 4.31482" stroke="#124D3F" stroke-width="2.6699" stroke-linecap="round" stroke-linejoin="round"/>
520    <path class="nd-line" d="M69.232 20.62C146.303 16.9767 223.725 15.2804 301.115 15.5309" stroke="#124D3F" stroke-width="2.6699" stroke-linecap="round" stroke-linejoin="round"/>
521    </g>
522    </g>
523    <defs>
524    <clipPath id="clip0_3136_953">
525    <rect width="361.527" height="23.5385" fill="white"/>
526    </clipPath>
527    <clipPath id="clip1_3136_953">
528    <rect width="360.97" height="21.3592" fill="white" transform="translate(0.60199 2.1792)"/>
529    </clipPath>
530    </defs>
531    </svg>
532  `;
533  $('h2').append(svgPath);
534});
535$(document).ready(function () {
536gsap.registerPlugin(ScrollTrigger);
537document.querySelectorAll('section').forEach(section => {
538  const ems = section.querySelectorAll('h2');
539  if (!ems.length) return;
540  ScrollTrigger.create({
541    trigger: section,
542    start: 'top 70%',
543    once: true,
544    onEnter: () => {
545      ems.forEach(em => em.classList.add('h2-animate'));
546    }
547  });
548});
549});
550/*===============introductie-tiktok-block-height-equal===============*/
551function setEqualHeight() {
552    var windowWidth = $(window).width();
553    if (windowWidth < 320) {
554        $('.each-introductie-tiktok-block-info').css('height', 'auto');
555    } else {
556        var highestBox = 0;
557        $('.each-introductie-tiktok-block-info').css('height', 'auto');
558        $('.each-introductie-tiktok-block-info').each(function () {
559            highestBox = Math.max(highestBox, $(this).height());
560        });
561        $('.each-introductie-tiktok-block-info').height(highestBox);
562    }
563}
564$(document).ready(function () {
565    setEqualHeight();
566});
567$(window).on('load resize', function () {
568    setEqualHeight();
569});
570/*===============social-media-slider===============*/
571var swiper = new Swiper('.social-media-slider .swiper', {
572    slidesPerView: 1,
573    spaceBetween: 15,
574    loop: false,
575    speed: 1500,
576    autoHeight: true,
577    autoplay: {
578        delay: 5000,
579        disableOnInteraction: false,
580    },
581    breakpoints: {
582        320: {
583            slidesPerView: 1.1,
584            spaceBetween: 10,
585            loop: true,
586            centeredSlides: true,
587        },
588        768: {
589            slidesPerView: 2.2,
590            spaceBetween: 18,
591            loop: true,
592            centeredSlides: true,
593        },
594        992: {
595            slidesPerView: 2,
596            spaceBetween: 20,
597        },
598        1200: {
599            slidesPerView: 3,
600            spaceBetween: 25,
601        },
602        1400: {
603            slidesPerView: 4,
604            spaceBetween: 37,
605        },
606    },
607});
608
609
610$(".master-btn").click(function () {
611    $(".masterclass-form").addClass('step-form-active');
612    $(".body-blur").addClass('body-blur-active');
613});
614$(".step-form-close").click(function () {
615    $(".masterclass-form").removeClass('step-form-active');
616    $(".body-blur").removeClass('body-blur-active');
617});
618$(".body-blur").click(function () {
619    $(".masterclass-form").removeClass('step-form-active');
620    $(this).removeClass('body-blur-active');
621});
622
623
624// -------- top-logo-wrap --------//
625const items = document.querySelectorAll(".top-logo-wrap ul li");
626const total = items.length;
627items.forEach((el, index) => {
628    el.style.zIndex = total - index;
629});

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.