PageSourceSearch

https://www.raummodul.de/public/frontend/js/app.js?v=1791341641

js raummodul.de collected 2026-10-07 02:54:10 UTC 47,335 bytes, 1,353 lines download raw bytes

1let map;
2async function initMap() {
3  if (document.getElementById("map") != undefined) {
4    //@ts-ignore
5    const { Map } = await google.maps.importLibrary("maps");
6
7    const lat = Number(document.getElementById("map").dataset["lat"]);
8    const lng = Number(document.getElementById("map").dataset["lng"]);
9    map = new Map(document.getElementById("map"), {
10      center: { lat: lat, lng: lng },
11      disableDefaultUI: true,
12      gestureHandling: "greedy",
13      zoom: 15,
14      styles: [
15        {
16          elementType: "geometry",
17          stylers: [
18            {
19              color: "#f5f5f5",
20            },
21          ],
22        },
23        {
24          elementType: "labels.icon",
25          stylers: [
26            {
27              visibility: "off",
28            },
29          ],
30        },
31        {
32          elementType: "labels.text.fill",
33          stylers: [
34            {
35              color: "#616161",
36            },
37          ],
38        },
39        {
40          elementType: "labels.text.stroke",
41          stylers: [
42            {
43              color: "#f5f5f5",
44            },
45          ],
46        },
47        {
48          featureType: "administrative",
49          elementType: "geometry",
50          stylers: [
51            {
52              visibility: "off",
53            },
54          ],
55        },
56        {
57          featureType: "poi",
58          stylers: [
59            {
60              visibility: "off",
61            },
62          ],
63        },
64        {
65          featureType: "poi",
66          elementType: "geometry",
67          stylers: [
68            {
69              color: "#eeeeee",
70            },
71          ],
72        },
73        {
74          featureType: "poi",
75          elementType: "labels.text.fill",
76          stylers: [
77            {
78              color: "#757575",
79            },
80          ],
81        },
82        {
83          featureType: "poi.park",
84          elementType: "geometry",
85          stylers: [
86            {
87              color: "#e5e5e5",
88            },
89          ],
90        },
91        {
92          featureType: "poi.park",
93          elementType: "labels.text.fill",
94          stylers: [
95            {
96              color: "#9e9e9e",
97            },
98          ],
99        },
100        {
101          featureType: "road",
102          elementType: "geometry",
103          stylers: [
104            {
105              color: "#ffffff",
106            },
107          ],
108        },
109        {
110          featureType: "road",
111          elementType: "labels.icon",
112          stylers: [
113            {
114              visibility: "off",
115            },
116          ],
117        },
118        {
119          featureType: "road.arterial",
120          elementType: "geometry.fill",
121          stylers: [
122            {
123              color: "#5d5d5d",
124            },
125          ],
126        },
127        {
128          featureType: "road.arterial",
129          elementType: "labels.text.fill",
130          stylers: [
131            {
132              color: "#444444",
133            },
134          ],
135        },
136        {
137          featureType: "road.arterial",
138          elementType: "labels.text.stroke",
139          stylers: [
140            {
141              color: "#ffffff",
142            },
143            {
144              weight: 4.5,
145            },
146          ],
147        },
148        {
149          featureType: "road.highway",
150          elementType: "geometry",
151          stylers: [
152            {
153              color: "#dadada",
154            },
155          ],
156        },
157        {
158          featureType: "road.highway",
159          elementType: "geometry.stroke",
160          stylers: [
161            {
162              color: "#ffffff",
163            },
164          ],
165        },
166        {
167          featureType: "road.highway",
168          elementType: "labels.text.fill",
169          stylers: [
170            {
171              color: "#616161",
172            },
173          ],
174        },
175        {
176          featureType: "road.local",
177          stylers: [
178            {
179              color: "#cacaca",
180            },
181          ],
182        },
183        {
184          featureType: "road.local",
185          elementType: "geometry.stroke",
186          stylers: [
187            {
188              color: "#999999",
189            },
190          ],
191        },
192        {
193          featureType: "road.local",
194          elementType: "labels.text.fill",
195          stylers: [
196            {
197              color: "#444444",
198            },
199          ],
200        },
201        {
202          featureType: "road.local",
203          elementType: "labels.text.stroke",
204          stylers: [
205            {
206              color: "#ffffff",
207            },
208          ],
209        },
210        {
211          featureType: "transit",
212          stylers: [
213            {
214              visibility: "off",
215            },
216          ],
217        },
218        {
219          featureType: "transit.line",
220          elementType: "geometry",
221          stylers: [
222            {
223              color: "#e5e5e5",
224            },
225          ],
226        },
227        {
228          featureType: "transit.station",
229          elementType: "geometry",
230          stylers: [
231            {
232              color: "#eeeeee",
233            },
234          ],
235        },
236        {
237          featureType: "water",
238          elementType: "geometry",
239          stylers: [
240            {
241              color: "#c9c9c9",
242            },
243          ],
244        },
245        {
246          featureType: "water",
247          elementType: "labels.text.fill",
248          stylers: [
249            {
250              color: "#9e9e9e",
251            },
252          ],
253        },
254      ],
255    });
256    const myLatLng = { lat: lat, lng: lng };
257
258    const image = document.getElementById("map").dataset["image"];
259    if (image) {
260      const icon = {
261        url: image, // url
262        scaledSize: new google.maps.Size(80, 80), // scaled size
263        origin: new google.maps.Point(0, 0), // origin
264        anchor: new google.maps.Point(40, 40), // anchor
265      };
266
267      if ($(window).width() < 768) {
268        icon.scaledSize = new google.maps.Size(30, 30);
269        icon.anchor = new google.maps.Point(15, 15);
270      }
271
272      const marker = new google.maps.Marker({
273        position: myLatLng,
274        map,
275        icon: icon,
276        title: "Marker",
277      });
278
279      marker.addListener("click", ({ domEvent, latLng }) => {
280        const link = $("#map").attr("data-link");
281        window.open(link, "_blank");
282      });
283    }
284  }
285}
286
287initMap();
288
289$(document).ready(function () {
290  // Sample Contact Form
291  function validateEmail(email) {
292    var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
293    return re.test(email);
294  }
295
296  $(".form-contact").submit(function (event) {
297    const form = $(this);
298    event.preventDefault();
299
300    const formData = {
301      name: form.find("[name='name']").val(),
302      vorname: form.find("[name='vorname']").val(),
303      email: form.find("[name='email']").val(),
304      phone: form.find("[name='phone']").val(),
305      project: form.find("[name='project']").val(),
306      request: form.find("[name='request']").val(),
307      currenturl: window.location.href,
308    };
309
310    var error = false;
311    $(".errorinfo").html("");
312    $(".error").removeClass("error");
313    if (!validateEmail(formData.email)) {
314      error = true;
315    }
316
317    if (form.find(".errorinfo").length == 0) {
318      form.append("<div class='errorinfo'></div>");
319    }
320
321    if (!error) {
322      $.post("/frontend/ajaxcontact", formData).done(function (data) {
323        const reponse = JSON.parse(data);
324        if (reponse.sendEmailStatus == true) {
325          form.find("input").not("[type='submit']").val("");
326          form.find("textarea").val("");
327          form.find("#checkbox").prop("checked", false);
328
329          form.find(".errorinfo").html('<p style="margin-top: 20px; color:green">' + reponse.sendEmailTitle + " " + reponse.sendEmailMessage + "</p>");
330        }
331      });
332    } else {
333      form.find(".errorinfo").html('<p style="margin-top: 20px; color:red">Bitte überprüfen Sie die Eingabefelder!</p>');
334    }
335  });
336  $(".form-application").submit(function (event) {
337    const form = $(this);
338    event.preventDefault();
339
340    const formData = {
341      name: form.find("[name='name']").val(),
342      vorname: form.find("[name='vorname']").val(),
343      email: form.find("[name='email']").val(),
344      phone: form.find("[name='phone']").val(),
345      message: form.find("[name='message']").val(),
346      currenturl: window.location.href,
347    };
348
349    var error = false;
350    $(".errorinfo").html("");
351    $(".error").removeClass("error");
352    if (!validateEmail(formData.email)) {
353      error = true;
354    }
355
356    if (form.find(".errorinfo").length == 0) {
357      form.append("<div class='errorinfo'></div>");
358    }
359
360    if (!error) {
361      $.post("/frontend/ajaxapplication", formData).done(function (data) {
362        const reponse = JSON.parse(data);
363        if (reponse.sendEmailStatus == true) {
364          form.find("input").not("[type='submit']").val("");
365          form.find("textarea").val("");
366          form.find("#checkbox").prop("checked", false);
367
368          form.find(".errorinfo").html('<p style="margin-top: 20px; color:green">' + reponse.sendEmailTitle + " " + reponse.sendEmailMessage + "</p>");
369        }
370      });
371    } else {
372      form.find(".errorinfo").html('<p style="margin-top: 20px; color:red">Bitte überprüfen Sie die Eingabefelder!</p>');
373    }
374  });
375});
376
377function playvideo(id) {
378  var vid = document.getElementById(id);
379  vid.play();
380
381  $(".hidevideoplay-" + id).fadeOut();
382  $(".showvideoplay-" + id).fadeIn();
383}
384
385function resetvideo(id) {
386  $(".hidevideoplay-" + id).fadeIn();
387  $(".showvideoplay-" + id).fadeOut();
388}
389
390function stopvideo(id) {
391  var vid = document.getElementById(id);
392  vid.pause();
393  $(".hidevideoplay-" + id).fadeIn();
394  $(".showvideoplay-" + id).fadeOut();
395}
396
397function scrollToView(targetElement, offset = 0) {
398  var target = $(targetElement);
399  if (target.length) {
400    var top = target.offset().top - $("#navigation").height();
401    $("html,body").animate({ scrollTop: top }, 50);
402    return false;
403  }
404}
405
406$(document).ready(function () {
407  let navigationState = "light";
408
409  let loadDoneCount = 0;
410  if ($("load").length > 0) {
411    $("load").each((ix, ele) => {
412      $(ele).load($(ele).attr("data-file"), () => {
413        loadDoneCount++;
414        if (loadDoneCount >= $("load").length) {
415          onLoadAllDone();
416        }
417      });
418    });
419  }
420
421  function onLoadAllDone() {
422    var swiper = new Swiper(".hero-swiper", {
423      spaceBetween: 100,
424      navigation: {
425        nextEl: ".hero-button-next",
426        prevEl: ".hero-button-prev",
427      },
428    });
429
430    let optionMission = {
431      navigation: {
432        nextEl: ".mission-button-next",
433        prevEl: ".mission-button-prev",
434      },
435      pagination: {
436        el: ".swiper-pagination",
437        type: "progressbar",
438      },
439      breakpoints: {
440        0: {
441          slidesPerView: 1,
442        },
443        676: {
444          slidesPerView: 2,
445        },
446        1280: {
447          slidesPerView: 3,
448        },
449      },
450    };
451
452    if ($(window).width() > 767) {
453      optionMission.freeMode = {
454        enabled: true,
455        sticky: true,
456      };
457      optionMission.mousewheel = true;
458    }
459    var missionSwiper = new Swiper(".mission-swiper", optionMission);
460
461    let optionpartner = {
462      navigation: {
463        nextEl: ".partner-button-next",
464        prevEl: ".partner-button-prev",
465      },
466      pagination: {
467        el: ".swiper-pagination",
468        type: "progressbar",
469      },
470      breakpoints: {
471        0: {
472          slidesPerView: 3,
473          spaceBetween: "20%",
474        },
475        676: {
476          slidesPerView: 5,
477          spaceBetween: "12.5%",
478        },
479      },
480    };
481
482    if ($(window).width() > 767) {
483      optionpartner.freeMode = {
484        enabled: true,
485        sticky: true,
486      };
487      optionpartner.mousewheel = true;
488    }
489    var partnerSwiper = new Swiper(".partner-swiper", optionpartner);
490
491    function clamp(input, min, max) {
492      return input < min ? min : input > max ? max : input;
493    }
494    function map(current, in_min, in_max, out_min, out_max) {
495      const mapped = ((current - in_min) * (out_max - out_min)) / (in_max - in_min) + out_min;
496      return clamp(mapped, out_min, out_max);
497    }
498
499    $(".progressBarContainer").each((ix, ele) => {
500      $(ele).scroll(() => {
501        let currY = $($(ele)).scrollTop();
502        let postHeight = $(ele).height();
503        let scrollHeight = $(ele).find(".content").height();
504        let scrollPercent = (currY / (scrollHeight - postHeight)) * 100;
505
506        $(".progressBarContainer:eq(" + ix + ")")
507          .find(".progressFill")
508          .css("height", scrollPercent + "%");
509      });
510    });
511
512    $(".popup-burger").on("click", () => {
513      if ($("body").hasClass("show-popup-navigation")) $("body").removeClass("show-popup-navigation");
514      else {
515        $("body").addClass("show-popup-navigation");
516      }
517    });
518
519    $("[data-delay]").each((ix, ele) => {
520      $(ele).css("animation-delay", $(ele).attr("data-delay"));
521    });
522    $("[data-duration]").each((ix, ele) => {
523      $(ele).css("animation-duration", $(ele).attr("data-duration"));
524    });
525
526    $(".legal-button").each((ix, ele) => {
527      $(ele).on("click", () => {
528        showLegal(ix);
529      });
530    });
531
532    $(".footer-sub-menu-row").each((ix, ele) => {
533      $(ele).on("click", () => {
534        if ($(".footer-sub-menu:eq(" + ix + ")").hasClass("active")) $(".footer-sub-menu:eq(" + ix + ")").removeClass("active");
535        else $(".footer-sub-menu:eq(" + ix + ")").addClass("active");
536      });
537    });
538
539    $(".accordion-menu-row").each((ix, ele) => {
540      $(ele).on("click", () => {
541        let type = $(ele).attr("data-type");
542        if (!type) type = "single";
543
544        if (type == "single") {
545          let needToSetActive = false;
546          if (!$(".accordion-menu:eq(" + ix + ")").hasClass("active")) needToSetActive = true;
547
548          $(".accordion-menu").removeClass("active");
549          $(".accordion-content-left").removeClass("active");
550
551          if (needToSetActive) {
552            $(".accordion-menu:eq(" + ix + ")").addClass("active");
553            $(".accordion-content-left:eq(" + ix + ")").addClass("active");
554          } else {
555            $(".accordion-content-left:eq(" + ix + ")").addClass("active");
556          }
557        } else {
558          if ($(".accordion-menu:eq(" + ix + ")").hasClass("active")) $(".accordion-menu:eq(" + ix + ")").removeClass("active");
559          else $(".accordion-menu:eq(" + ix + ")").addClass("active");
560        }
561      });
562    });
563
564    $(".accordion-menu-row-mobile").each((ix, ele) => {
565      $(ele).on("click", () => {
566        let needToSetActive = false;
567        if (!$(".accordion-menu-mobile:eq(" + ix + ")").hasClass("active")) needToSetActive = true;
568
569        $(".accordion-menu-mobile").removeClass("active");
570        $(".accordion-content-left-mobile").removeClass("active");
571
572        if (needToSetActive) {
573          $(".accordion-menu-mobile:eq(" + ix + ")").addClass("active");
574          $(".accordion-content-left-mobile:eq(" + ix + ")").addClass("active");
575        } else {
576          $(".accordion-content-left-mobile:eq(" + ix + ")").addClass("active");
577        }
578      });
579    });
580
581    let startAutoChange = false;
582    var isManual = false;
583    function setStep(ix, ele) {
584      $(".step-menu").removeClass("active");
585      $(ele).addClass("active");
586      $(".step-content").removeClass("active");
587      $(".step-content:eq(" + ix + ")").addClass("active");
588      // $(".step-content:eq(" + ix + ")").addClass("animated");
589    }
590
591    $(".step-menu").each((ix, ele) => {
592      $(ele).on("click", () => {
593        isManual = true;
594        setStep(ix, ele);
595      });
596    });
597
598    $.fn.isInViewport = function () {
599      var elementTop = $(this).offset().top;
600      var elementBottom = elementTop + $(this).outerHeight();
601
602      var viewportTop = $(window).scrollTop();
603      var viewportBottom = viewportTop + $(window).height();
604
605      return elementBottom > viewportTop && elementTop < viewportBottom;
606    };
607
608    let indexStep = 0;
609    function setAutoChangeStep() {
610      let autoChangeInterval = setInterval(() => {
611        if (isManual == true) {
612          clearInterval(autoChangeInterval);
613          return;
614        }
615        setStep(indexStep, ".step-menu:eq(" + indexStep + ")");
616        indexStep++;
617        if (indexStep > $(".step-menu").length - 1) indexStep = 0;
618      }, 5000);
619    }
620
621    function fadeInLine(line) {
622      const element = $("<p  /> ", {
623        html: line.trim(),
624        style: "opacity: 0",
625      }).appendTo($greeting);
626
627      element.animate({ opacity: 1 }, 500);
628    }
629
630    let i = 0;
631
632    // function rotateLines(interval) {
633    //   setTimeout(() => {
634    //     if (i >= lines.length - 1) {
635    //       fadeInLine(lines[i]);
636    //       // i = 0;
637    //       // interval = 2000;
638    //       // setTimeout(() => {
639    //       //   $greeting.empty();
640    //       // }, interval);
641
642    //       return;
643    //     } else {
644    //       fadeInLine(lines[i]);
645    //       i++;
646    //       interval = 500;
647    //     }
648    //     rotateLines(interval);
649    //   }, interval);
650    // }
651
652    // const $greeting = $(".greeting");
653
654    // if ($greeting.length > 0) {
655    //   $greeting.html($greeting.html().replace("<br>", "\n"));
656    //   const text = $greeting.html();
657    //   const lines = text.split("<br>").filter((e) => e.replace(/\s+/, ""));
658
659    //   setTimeout(() => {
660    //     let intervalCheck = setInterval(() => {
661    //       if ($(".greeting").css("visibility") == "visible") {
662    //         $greeting.empty();
663    //         rotateLines();
664
665    //         clearInterval(intervalCheck);
666    //       }
667    //     }, 1000);
668    //   }, 5000);
669    // }
670
671    if ($(".step-menu").length > 0) {
672      if ($(window).width() > 767) {
673        $(window).on("resize scroll", function () {
674          if (startAutoChange) return;
675
676          if ($(".step-menu").isInViewport()) {
677            startAutoChange = true;
678            setAutoChangeStep();
679          } else {
680          }
681        });
682      }
683    }
684
685    let saveState = [];
686    function setPopupState(targetclass, show, query_popup) {
687      if (saveState[query_popup] == show) return;
688
689      saveState[query_popup] = show;
690
691      if (show == true) {
692        $("body").addClass(targetclass);
693        $(query_popup).removeClass("fadeOut").removeClass("animated");
694        $(query_popup).addClass("fadeIn").addClass("animated");
695      }
696      if (show == false) {
697        $(query_popup).removeClass("fadeIn").removeClass("animated");
698        $(query_popup).addClass("fadeOut").addClass("animated");
699        setTimeout(() => {
700          $("body").removeClass(targetclass);
701        }, 500);
702      }
703    }
704
705    $('a[href="#show-legal-form"]').attr("data-mce-href", null);
706    $('a[href="#show-legal-form"]').on("click", () => {
707      setPopupState("show-datenschutz", true, "#legaldatenschutz");
708    });
709
710    $("#legalagb")
711      .find(".close-popup")
712      .on("click", () => {
713        setPopupState("show-agb", false, "#legalagb");
714      });
715    $("#legalagb")
716      .find(".blackout")
717      .on("click", () => {
718        setPopupState("show-agb", false, "#legalagb");
719      });
720
721    $(".show-agb").on("click", () => {
722      setPopupState("show-agb", true, "#legalagb");
723    });
724
725    $("#legalimpressum")
726      .find(".close-popup")
727      .on("click", () => {
728        setPopupState("show-impressum", false, "#legalimpressum");
729      });
730    $("#legalimpressum")
731      .find(".blackout")
732      .on("click", () => {
733        setPopupState("show-impressum", false, "#legalimpressum");
734      });
735
736    $(".show-impressum").on("click", () => {
737      setPopupState("show-impressum", true, "#legalimpressum");
738    });
739
740    $("#legaldatenschutz")
741      .find(".close-popup")
742      .on("click", () => {
743        setPopupState("show-datenschutz", false, "#legaldatenschutz");
744      });
745    $("#legaldatenschutz")
746      .find(".blackout")
747      .on("click", () => {
748        setPopupState("show-datenschutz", false, "#legaldatenschutz");
749      });
750
751    $(".show-datenschutz").on("click", () => {
752      setPopupState("show-datenschutz", true, "#legaldatenschutz");
753    });
754
755    $("#mission-popup")
756      .find(".close-popup")
757      .on("click", () => {
758        setPopupState("show-mission-popup", false, "#mission-popup");
759      });
760    $("#mission-popup")
761      .find(".blackout")
762      .on("click", () => {
763        setPopupState("show-mission-popup", false, "#mission-popup");
764      });
765
766    $("#team-popup")
767      .find(".close-popup")
768      .on("click", () => {
769        setPopupState("show-team-popup", false, "#team-popup");
770      });
771    $("#team-popup")
772      .find(".blackout")
773      .on("click", () => {
774        setPopupState("show-team-popup", false, "#team-popup");
775      });
776
777    $("#form-popup")
778      .find(".close-popup")
779      .on("click", () => {
780        setPopupState("show-form-popup", false, "#form-popup");
781      });
782    $("#form-popup")
783      .find(".blackout")
784      .on("click", () => {
785        setPopupState("show-form-popup", false, "#form-popup");
786      });
787
788    $("#form-application-popup")
789      .find(".close-popup")
790      .on("click", () => {
791        setPopupState("show-form-application-popup", false, "#form-application-popup");
792      });
793    $("#form-application-popup")
794      .find(".blackout")
795      .on("click", () => {
796        setPopupState("show-form-application-popup", false, "#form-application-popup");
797      });
798
799    $(".show-form").on("click", () => {
800      setPopupState("show-form-popup", true, "#form-popup");
801    });
802
803    $('a[href="#kontakt"]').on("click", (e) => {
804      e.preventDefault();
805
806      setPopupState("show-form-popup", true, "#form-popup");
807    });
808
809    $('a[href="#bewerbung"]').on("click", (e) => {
810      e.preventDefault();
811
812      setPopupState("show-form-application-popup", true, "#form-application-popup");
813    });
814
815    $(".loop-line-arrow-animation").each((ix, ele) => {
816      setTimeout(() => {
817        $(ele).find("#line").addClass("active");
818      }, 1000);
819    });
820
821    $(".show-team-popup").each((ix, ele) => {
822      $(ele).on("click", () => {
823        const contentData = $(ele).find(".content-html");
824        $("#team-popup").find(".headline").html($(contentData).attr("data-headline"));
825        $("#team-popup").find("#arrow-link").attr("href", $(contentData).attr("data-link"));
826        $("#team-popup").find("#content").html($(contentData).html());
827        $("#team-popup").find("#image").attr("src", $(contentData).attr("data-image"));
828
829        setTimeout(() => {
830          $("#team-popup").find("#line").addClass("active");
831        }, 1500);
832
833        setPopupState("show-team-popup", true, "#team-popup");
834      });
835    });
836
837    missionSwiper.on("click", (e) => {
838      const contentData = $(e.clickedSlide).find(".content-html");
839
840      $("#mission-popup").find("#headline").html($(contentData).attr("data-headline"));
841
842      $("#mission-popup").find("#arrow-link").css("display", "block");
843
844      if ($(contentData).attr("data-link")) $("#mission-popup").find("#arrow-link").attr("href", $(contentData).attr("data-link"));
845      else $("#mission-popup").find("#arrow-link").css("display", "none");
846
847      $("#mission-popup").find("#content").html($(contentData).html());
848
849      $("#mission-popup").find("#line").removeClass("active");
850      setTimeout(() => {
851        $("#mission-popup").find("#line").addClass("active");
852      }, 1000);
853
854      setPopupState("show-mission-popup", true, "#mission-popup");
855    });
856
857    $(".btn-load-more").on("click", () => {
858      $(".btn-load-more").parent().parent().parent("#loadmore-container").remove();
859      $(".content-more").removeClass("content-more");
860      $(".content-more-block").addClass("active");
861    });
862
863    $(".btn-goto").each((ix, ele) => {
864      $(ele).off("click");
865      $(ele).on("click", () => {
866        const targetPage = $(ele).attr("data-page");
867        let targetId = $(ele).attr("data-go-to");
868        let scrollToId = "";
869
870        if (targetId) scrollToId = "#" + targetId;
871        else scrollToId = "body";
872
873        const fileName = location.pathname.split("/").slice(-1);
874
875        if (targetPage == fileName[0] || (fileName[0] == "" && targetPage == "index.html")) {
876          // if ($("header").hasClass("hidden") == false) $(".popup-menu").fadeOut();
877
878          scrollToView(scrollToId);
879        } else {
880          if (targetPage == undefined && scrollToId != "") scrollToView(scrollToId);
881          else if (scrollToId == undefined) {
882            window.location = targetPage;
883          } else if (targetPage != undefined) {
884            window.location = targetPage + "#" + targetId;
885          }
886        }
887      });
888    });
889
890    handePadding();
891    function handePadding() {
892      $("main").css("padding-top", $("#header-navigation").height());
893    }
894    $(window).resize((data) => {
895      handePadding();
896    });
897
898    setTimeout(() => {
899      $(".step-content").css("visibility", "visible !important");
900      $(".step-content").css("display", "block !important");
901      let minHeight = 0;
902
903      $(".step-content").each((ix, ele) => {
904        if ($(ele).height() > minHeight) minHeight = $(ele).height();
905      });
906      $(".step-content").css("display", "");
907      $(".step-content").css("visible", "");
908      $(".step-content").css("min-height", minHeight + "px");
909    }, 4000);
910  }
911
912  onLoadAllDone();
913
914  // if ($("footer").length > 0) {
915  //   $("footer").load("./footer.html", () => {
916  //     $(".legal-button").each((ix, ele) => {
917  //       $(ele).on("click", () => {
918  //         showLegal(ix);
919  //       });
920  //     });
921  //   });
922  // }
923  if ($("legal").length > 0) {
924    $("legal").load("./legal.html");
925  }
926
927  if ($("#startup-image").length > 0 && !$("body").hasClass("loaded")) {
928    setTimeout(() => {
929      $("body").addClass("loaded");
930      new WOW().init();
931    }, 2500);
932  } else {
933    new WOW().init();
934    $("body").addClass("loaded");
935  }
936
937  $(".review-box").each((ix, ele) => {
938    $(ele).on("mouseenter", () => {
939      $(".review-box").removeClass("active");
940      $(ele).addClass("active");
941    });
942  });
943
944  if ($(".zoom-gallery").length > 0) {
945    $(".zoom-gallery").magnificPopup({
946      delegate: "a.zoom",
947      type: "image",
948      closeOnContentClick: false,
949      closeBtnInside: false,
950      mainClass: "mfp-with-zoom mfp-img-mobile",
951      image: {
952        markup:
953          '<div class="mfp-figure relative">' +
954          `
955        <div class="bg-white shadow-theme px-[8vw] md:px-[5.83vw] pt-[10vw] pb-[5vw] md:pb[5.42vw] md:pt-[3.71vw]">
956        <div class="font-medium text-20 flex justify-between uppercase " >
957        <a class=" close-popup cursor-pointer absolute right-[4vw] md:right-[4.38vw] top-[3.18vw]">
958            <div class="mfp-close">
959              <img class="w-[4vw] md:w-[0.53vw] aspect-square pointer-events-none" src="/public/frontend/img/x-icon.svg" />
960            </div>
961          </a>
962        </div>
963        <div class="relative">
964        <div class="mfp-bottom-bar">
965        <div class="mfp-title pb-[1.26vw]"></div>
966        <div class="mfp-counters"></div>
967        </div>
968        <div class="relative">
969          <div class="mfp-img"></div>
970          <div id="popup-content-container"></div>
971        </div>
972        <div class="absolute bottom-0 left-[-2.5vw] md:left-[-1vw]">
973          <a id="sub-title" class="text-rotated text-12 font-medium pr-[0.18vw] uppercase"></a>
974        </div>
975
976         </div>
977        <div class="arrow-controller"></div>
978        <div class="flex justify-end mr-[-5.83vw]">
979        <div class="w-[50%] gallery-progressbar"><div class="gallery-progressbar-fill"></div></div>
980        </div>
981
982         
983      </div>
984      <div class="gradient-right absolute right-0 top-0 bottom-[0] z-[10] w-[5.83vw] pointer-events-none"></div>
985     
986      
987      ` +
988          "</div>", // Popup HTML markup. `.mfp-img` div will be replaced with img tag, `.mfp-close` by close button
989
990        cursor: "mfp-zoom-out-cur", // Class that adds zoom cursor, will be added to body. Set to null to disable zoom out cursor.
991
992        titleSrc: "title", // Attribute of the target element that contains caption for the slide.
993        // Or the function that should return the title. For example:
994        // titleSrc: function(item) {
995        //   return item.el.attr('title') + '<small>by Marsel Van Oosten</small>';
996        // }
997
998        verticalFit: true, // Fits image in area vertically
999
1000        tError: '<a href="%url%">The image</a> could not be loaded.', // Error message
1001      },
1002
1003      gallery: {
1004        enabled: true,
1005      },
1006      callbacks: {
1007        open: function (e) {
1008          // console.log(this.currItem.el)
1009          const popup_content = $(this.currItem.el).parent().find(".popup-content");
1010          $("#popup-content-container").append(popup_content.clone());
1011
1012          $(".mfp-content")
1013            .find("#sub-title")
1014            .on("click", () => {
1015              $(".mfp-content").find(".popup-content").addClass("active");
1016            });
1017
1018          $(".mfp-content")
1019            .find(".close-popup-content")
1020            .on("click", () => {
1021              $(".mfp-content").find(".popup-content").removeClass("active");
1022            });
1023
1024          $(".mfp-content")
1025            .find(".loop-line-arrow-animation")
1026            .each((ix, ele) => {
1027              setTimeout(() => {
1028                $(ele).find("#line").addClass("active");
1029              }, 1000);
1030            });
1031
1032          if (this.currItem.type === "image") {
1033            $(".mfp-arrow-left").appendTo(".arrow-controller");
1034            $(".mfp-arrow-right").appendTo(".arrow-controller");
1035
1036            $(".mfp-arrow-left").addClass("arrow-left");
1037            $(".mfp-arrow-right").addClass("arrow-right");
1038          }
1039        },
1040        markupParse: function (template, values, item) {
1041          let ix1 = values.counter.split(" of ")[0];
1042          let ix2 = values.counter.split(" of ")[1];
1043          $(template)
1044            .find(".gallery-progressbar-fill")
1045            .css("width", (ix1 / ix2) * 100 + "%");
1046          $(template).find("#sub-title").html($(item.el).attr("sub-title"));
1047
1048          // On Change
1049          const popup_content = $(item.el).parent().find(".popup-content");
1050          $(template).find("#popup-content-container").html("");
1051          $(template).find("#popup-content-container").append(popup_content.clone());
1052
1053          $(template)
1054            .find("#sub-title")
1055            .on("click", () => {
1056              $(template).find(".popup-content").addClass("active");
1057            });
1058
1059          $(template)
1060            .find(".close-popup-content")
1061            .on("click", () => {
1062              $(template).find(".popup-content").removeClass("active");
1063            });
1064
1065          $(template)
1066            .find(".loop-line-arrow-animation")
1067            .each((ix, ele) => {
1068              setTimeout(() => {
1069                $(ele).find("#line").addClass("active");
1070              }, 1000);
1071            });
1072        },
1073      },
1074    });
1075  }
1076
1077  if ($(".hero-gallery").length > 0) {
1078    $(".hero-gallery").magnificPopup({
1079      delegate: "a",
1080      type: "image",
1081      closeOnContentClick: false,
1082      closeBtnInside: false,
1083      mainClass: "mfp-with-zoom mfp-img-mobile",
1084      image: {
1085        markup:
1086          '<div class="mfp-figure relative">' +
1087          `
1088        <div class="bg-white shadow-theme px-[8vw] md:px-[5.83vw] pt-[10vw] pb-[5vw] md:pb[5.42vw] md:pt-[3.71vw]">
1089        <div class="font-medium text-20 flex justify-between uppercase " >
1090        <a class=" close-popup cursor-pointer absolute right-[4vw] md:right-[4.38vw] top-[3.18vw]">
1091        <div class="mfp-close">
1092            <img class="w-[4vw] md:w-[0.53vw] aspect-square pointer-events-none" src="/public/frontend/img/x-icon.svg" />
1093            </div>
1094          </a>
1095        </div>
1096        <div class="relative">
1097        <div class="mfp-bottom-bar">
1098        <div class="mfp-title pb-[1.26vw]"></div>
1099        <div class="mfp-counters"></div>
1100        </div>
1101        <div class="mfp-img"></div>
1102        <div class="absolute bottom-0 left-[-2.5vw] md:left-[-1vw]">
1103          <a id="sub-title" class="text-rotated text-12 font-medium pr-[0.18vw] uppercase"></a>
1104        </div>
1105
1106         </div>
1107        <div class="arrow-controller"></div>
1108        <div class="flex justify-end mr-[-5.83vw]">
1109        <div class="w-[50%] gallery-progressbar"><div class="gallery-progressbar-fill"></div></div>
1110        </div>
1111
1112         
1113      </div>
1114      <div class="gradient-right absolute right-0 top-0 bottom-[0] z-[10] w-[5.83vw] pointer-events-none"></div>
1115     
1116      
1117      ` +
1118          "</div>", // Popup HTML markup. `.mfp-img` div will be replaced with img tag, `.mfp-close` by close button
1119
1120        cursor: "mfp-zoom-out-cur", // Class that adds zoom cursor, will be added to body. Set to null to disable zoom out cursor.
1121
1122        titleSrc: "title", // Attribute of the target element that contains caption for the slide.
1123        // Or the function that should return the title. For example:
1124        // titleSrc: function(item) {
1125        //   return item.el.attr('title') + '<small>by Marsel Van Oosten</small>';
1126        // }
1127
1128        verticalFit: true, // Fits image in area vertically
1129
1130        tError: '<a href="%url%">The image</a> could not be loaded.', // Error message
1131      },
1132
1133      gallery: {
1134        enabled: true,
1135      },
1136      callbacks: {
1137        open: function () {
1138          if (this.currItem.type === "image") {
1139            $(".mfp-arrow-left").appendTo(".arrow-controller");
1140            $(".mfp-arrow-right").appendTo(".arrow-controller");
1141
1142            $(".mfp-arrow-left").addClass("arrow-left");
1143            $(".mfp-arrow-right").addClass("arrow-right");
1144          }
1145        },
1146        markupParse: function (template, values, item) {
1147          let ix1 = values.counter.split(" of ")[0];
1148          let ix2 = values.counter.split(" of ")[1];
1149          $(template)
1150            .find(".gallery-progressbar-fill")
1151            .css("width", (ix1 / ix2) * 100 + "%");
1152          $(template).find("#sub-title").html($(item.el).attr("sub-title"));
1153        },
1154      },
1155    });
1156  }
1157
1158  if (window.location.hash) {
1159    setTimeout(() => {
1160      scrollToView(window.location.hash);
1161    }, 1000);
1162  }
1163
1164  let multiple = 1;
1165  let scale = 1;
1166
1167  $(".btn-cat").each((ix, ele) => {
1168    $(ele).on("click", (e) => {
1169      $(".btn-cat").removeClass("active");
1170      $(ele).addClass("active");
1171
1172      $("#right-content").html($(ele).find(".html-content").html());
1173
1174      $(".btn-sub-cat").removeClass("active");
1175      $(".btn-material").removeClass("active");
1176      $(".btn-variable").removeClass("active");
1177      $("#price").html("0€");
1178    });
1179  });
1180
1181  $(".btn-sub-cat").each((ix, ele) => {
1182    $(ele).on("click", (e) => {
1183      $(".btn-sub-cat").removeClass("active");
1184      $(ele).addClass("active");
1185
1186      $(".btn-material").removeClass("active");
1187      $(".btn-variable").removeClass("active");
1188      $("#price").html("0€");
1189    });
1190  });
1191
1192  $(".btn-material").each((ix, ele) => {
1193    $(ele).on("click", (e) => {
1194      $(".btn-material").removeClass("active");
1195      $(ele).addClass("active");
1196      $("#options").addClass("active");
1197      $(".btn-variable").removeClass("active");
1198      $("#right-content").html($(ele).find(".html-content").html());
1199
1200      scale = ix + 1;
1201
1202      $(".price").html("0€");
1203    });
1204  });
1205
1206  $(".btn-variable").each((ix, ele) => {
1207    $(ele).on("click", (e) => {
1208      $(".btn-variable").removeClass("active");
1209      $(ele).addClass("active");
1210      multiple = ix + 1;
1211
1212      $(".variable-text").text($(ele).text());
1213
1214      $(".price").html(multiple * 100 * scale + "€");
1215    });
1216  });
1217
1218  $("#btn-calculate").on("click", () => {
1219    $("#calculator-element").removeClass("active");
1220    $("#calculator-form").addClass("active");
1221    $("#calculator-content").removeClass("active");
1222    $("#form-content").addClass("active");
1223  });
1224  $(".toggle-left-btn").each((ix, ele) => {
1225    $(ele).on("click", () => {
1226      $(".toggle-left-content").removeClass("active");
1227      $(".toggle-left-content:eq(" + ix + ")").addClass("active");
1228    });
1229  });
1230
1231  $(".btn-show-popup-content").each((ix, ele) => {
1232    $(ele).on("click", () => {
1233      if ($(ele).parent().find(".popup-content").hasClass("active")) {
1234        $(ele).parent().find(".popup-content").removeClass("active");
1235      } else {
1236        $(ele).parent().find(".popup-content").addClass("active");
1237
1238        $(ele).parent().find(".close-popup-content").off("click");
1239        $(ele)
1240          .parent()
1241          .find(".close-popup-content")
1242          .on("click", () => {
1243            $(ele).parent().find(".popup-content").removeClass("active");
1244          });
1245      }
1246    });
1247  });
1248});
1249
1250// gsap.registerPlugin(TweenMax, DrawSVGPlugin);
1251
1252// setTimeout(() => {
1253//   $("body").addClass('animate');
1254// }, 8000);
1255
1256// TweenMax.fromTo('body.animate .squiggle-1', 2, {drawSVG:"0%"}, {drawSVG:"100%"});
1257// TweenMax.fromTo('body.animate .squiggle-2', 2, {drawSVG:"0%"}, {drawSVG:"100%"});
1258// TweenMax.fromTo('body.animate .squiggle', 2, {drawSVG:"0%"}, {drawSVG:"100%"});
1259// TweenMax.staggerFrom(".squiggle", 2, {drawSVG:0}, 0.1);
1260
1261$(function () {
1262  animateLine = function (canvas, hoverDivName, colorNumber, pathString, pathString2, pathString3) {
1263    var line = canvas.path(pathString).attr({
1264      stroke: colorNumber,
1265    });
1266    var length = line.getTotalLength();
1267
1268    var line2 = canvas.path(pathString2).attr({
1269      stroke: colorNumber,
1270    });
1271    var length2 = line2.getTotalLength();
1272
1273    var line3 = canvas.path(pathString3).attr({
1274      stroke: colorNumber,
1275    });
1276    var length3 = line3.getTotalLength();
1277
1278    $(canvas.canvas).attr("preserveAspectRatio", "xMidYMid slice");
1279    $(canvas.canvas).attr("viewBox", "0 0 1080 603.93");
1280    $(canvas.canvas).css("height", "100%");
1281    $(canvas.canvas).css("width", "100%");
1282
1283    if ($(window).width() < 768) $(canvas.canvas).css("opacity", "0");
1284
1285    $('path[fill*="none"]').animate(
1286      {
1287        to: 1,
1288      },
1289      {
1290        duration: 2000,
1291        step: function (pos, fx) {
1292          try {
1293            let offset = length * fx.pos;
1294            let subpath = line.getSubpath(0, offset);
1295            if (pos < 0.99) canvas.clear();
1296            // canvas.path(subpath).attr({
1297            //   // preserveAspectRatio: "xMidYMid slice",
1298            //   // viewBox: "0 0 1080 603.93",
1299            //   // "stroke-width": 1,
1300            //   // stroke: colorNumber,
1301            // });
1302
1303            let offset2 = length2 * fx.pos;
1304            let subpath2 = line2.getSubpath(0, offset2);
1305            // canvas.path(subpath2).attr({
1306            //   // preserveAspectRatio: "xMidYMid slice",
1307            //   // viewBox: "0 0 1080 603.93",
1308            //   // "stroke-width": 1,
1309            //   // stroke: colorNumber,
1310            // });
1311
1312            let offset3 = length3 * fx.pos;
1313            let subpath3 = line3.getSubpath(0, offset3);
1314            canvas.path(subpath + subpath2 + subpath3).attr({
1315              // preserveAspectRatio: "xMidYMid slice",
1316              // viewBox: "0 0 1080 603.93",
1317              // "stroke-width": 1,
1318              // stroke: colorNumber,
1319            });
1320          } catch (e) {}
1321        },
1322      }
1323    );
1324  };
1325
1326  if ($("#canvas").length > 0) {
1327    var canvas = Raphael("canvas", 500, 200);
1328
1329    var pathString1 = "M56.2 0.7c2.4 4.3 3.8 9.2 4.2 15c0 0.8 0.1 1.6 0.1 2.3c0 8.2-3.2 15.6-8.6 19.7C37.8 48.4 20.2 28.6 8.6 15.5L7 13.7c-1.7-1.9-3.2-3.6-4.6-4.9C1.6 7.9 0.7 6.9 0 6";
1330    var pathString2 = "M0 50.7c6.7 5.6 13.6 11.2 21.3 15.6C35 74.1 52 75.7 64.5 70.2c9.6-4.1 16-11.8 18.5-22.3c2-8.4 3.1-17 3.1-25.7c0-3.4-0.2-6.9-0.5-10.3C85.3 8.1 84.7 4.3 84 0.6";
1331    var pathString3 = "M0 90c15.8 12.2 29.8 19.2 44.5 22.4c12.9 2.7 44.6 7.2 60.8-10c7.4-7.9 11.1-18.6 11.1-32.8c0-13.9-3.6-28.9-6.5-40.9l-0.6-2.3c-0.3-1.1-0.5-2.2-0.8-3.3l-0.4-1.9c-1.6-6.7-3.2-13.6-5.1-20.6";
1332    var pathString4 = "M0 130.6c6 3.8 11.8 7.5 17.6 11.4C33.5 152.4 44 158.3 57 158.3c8.2 0 17.3-2.4 29.4-7.4c5.4-2.3 11.4-4.3 17.2-6.2l0.9-0.3c23.7-7.8 48.2-15.9 48.2-43c0-1.8-0.1-3.7-0.3-5.7c-3.9-33.6-13.7-65.6-23.8-95.1";
1333    var pathString5 = "M0 180c13.6 7.7 29.3 11.4 44.8 10.4c13-0.8 25.9-5 36.8-8.9c30.1-10.9 59-23.9 88.2-39.7c2.8-1.5 5.6-3.1 8-5.1c7.3-6.1 11-16.3 11-30.3c0-19.2-7-45.3-20.7-77.8c-4.3-10.1-9.1-20.1-13-28.1";
1334    var pathString6 = "M0 229v-0.5c8.8 2 17.8 1 28.7-3.2c33.5-12.6 67.5-26.6 100.9-41.4c5.3-2.3 11.1-4.5 18.1-7.1l0.1-0.1c24-9 51.3-19.1 59.3-43.1c3.1-9.3 3.5-19.2 3.5-26.7c0-1.2 0-2.3 0-3.4c-0.8-38.8-11.9-67.4-31-102.8";
1335    var pathString7 = "M0 267.5c10-2.6 19.6-7.1 29.1-11.5L160 195.1c19.5-9 36.3-16.7 48.7-28.5c13.5-12.8 20.3-29.5 21.5-52.3c0.2-3.3 0.2-6.6 0.2-10c0-32.3-7.7-65.8-21.2-91.9c-2-4-4.3-7.9-6.5-11.8";
1336    var pathString8 = "M0 310.8c2.1-2.2 4.4-4.5 6.7-6.8c30-29.6 66.9-50.2 119.5-66.8l5.7-1.8c33.9-10.6 68.8-21.6 93.1-47.4c15.6-16.7 23.2-40.3 23.2-72.4c0-9.4-0.7-19.6-2-30.4c-1.9-16.1-5.5-33.4-11.2-54.5c-0.5-1.9-1-3.7-1.6-5.6c-0.6-1.8-1.2-3.6-1.9-5.3c-0.6-1.7-1.3-3.5-2-5.2c-0.3-0.8-0.7-1.7-1-2.5c-0.3-0.8-0.7-1.7-1-2.5c-0.1-0.2-0.2-0.5-0.3-0.7c-0.4-0.9-0.7-1.7-1.1-2.6c-0.4-0.9-0.7-1.8-1.1-2.7c-0.4-1-0.8-1.9-1.1-2.9";
1337    var pathString9 = "M0 343.5c18.2-22.2 39.8-40.9 64.6-55.8c24-14.4 50.3-23.7 75.8-32.7l0.8-0.3c16.2-5.8 33-11.7 48.9-18.9c29.6-13.4 51.7-27.9 63.1-54.9c7.6-18.1 11.4-39.8 11.4-66.2c0-6.8-0.2-13.8-0.7-22.1c-0.6-9.9-1.6-20.1-2.6-30l-0.1-0.6c-1.5-15.5-3.2-31.6-3.2-47.5c0-4.8 0.1-9.3 0.4-13.6";
1338    var pathString10 = "M0 395c7.9-13.1 17.3-25.6 27.9-37c20.4-21.9 61.7-60.6 108.6-73.8c41-11.4 82.8-26.8 110.4-61.1c32.3-40.2 32.9-89.1 33.5-136.5v-0.2c0.4-28.5 0.7-58 8.1-85.8l0.5 0.1";
1339    var pathString11 = "M0 481.2c5.3-22.9 12.4-43.4 21.7-62c13.2-26.7 30.9-49.8 53.8-70.7c26.2-23.8 60.4-36.9 93.5-49.5l0.2-0.1C227 277 281.7 256.2 293.5 182.4c1.4-8.4 2-17.7 2-28.4c0-9.2-0.5-18.5-0.9-27.5v-1.1c-0.4-8.8-0.9-17.8-0.9-26.8c0-2.3 0-4.6 0.1-6.7c0.9-33.6 8.2-64.2 21.6-91.2";
1340    var pathString12 = "M807.6 0c6.7 27 13.4 53.8 19.1 76.5c1.5 6 3 12.1 4.6 18.1l0.2 0.6c1.9 7.4 3.7 14.8 5.6 22.2c3 12.1 4.3 25.9 5.7 40.5v0.3c2.8 31.1 5.8 63.1 25.6 83.4c6.2 6.3 14.2 11.3 21.9 16.1l1 0.6c6.4 4 13 8.2 18.5 13.1c10.7 9.7 22.2 25.6 22.2 41.5c0 4.5-0.9 8.8-2.7 12.7c-6.7 14.9-23.6 21.8-41 26.9l-7.4 2.2c-22.9 6.8-46.6 13.8-67 26.6c-28.3 17.7-48.8 45.3-68.7 72.1l-0.2 0.2c-20.5 27.5-41.6 56-71.2 73.5c-32.1 19-70.3 23.3-107.2 27.4h-0.3c-46.2 5-94 10.3-129.4 44.9c-1.4 1.4-2.8 2.8-4.3 4.4";
1341    var pathString13 = "M1080 376.5v0.7c-39-23-74.2-48.5-105.1-76.1c-23.1-20.7-47-42.1-66.8-67.6c-2.4-3.1-5-6.1-7.7-9.4l-1-1.3c-13.1-15.8-27.9-33.7-27.9-54.5c0-1.2 0-2.4 
13410.2-3.6c0.4-5.1 1.2-10.1 2.2-15.8v-0.3c1.1-7.1 2.3-14.3 2.3-21.6c0-3.6-0.3-6.8-0.9-10c-1.8-9.2-6.5-18-10.6-25.7c-0.4-0.7-0.8-1.5-1.2-2.2l-0.2-0.4c-0.5-0.9-0.9-1.8-1.4-2.7c-12-23.3-16.7-52.5-21.6-83.5c-0.1-0.7-0.2-1.3-0.3-1.9l0 0l-0.1-0.7";
1342    var pathString14 = "M1080 351.8c-24.2-15.9-47.4-33.5-69-53.1c-19.5-17.8-36-39.9-52-61.2c-5.9-7.9-12.3-16.4-18.7-24.6l-1-1.3c-8.4-10.6-17.1-21.6-17.1-35.6c0-0.4 0-0.8 0-1.3c0.3-7.4 3.4-14.5 6.2-20.7c2.5-5.7 5.3-12.2 6.1-18.9c0.1-1.3 0.2-2.6 0.2-4c0-13.9-7.1-27.1-14-39.9c-6.8-12.5-13.8-25.5-13.8-38.8c0-2.9 0.3-5.8 1-8.6c1.5-6.4 4.8-12.1 8-17.7c1.8-3.2 3.9-6.8 5.5-10.5c2-4.6 3.4-9.5 4.1-14.9c0-0.2 0.1-0.4 0.1-0.7";
1343    var pathString15 = "M1080 323.5c-15.1-13-27.2-27.7-34.6-44.9c-4.5-10.6-12.2-20.7-19.7-30.4c-12.2-16-24.8-32.6-24.8-52.1c0-4.6 0.7-9.3 2.1-14c2.2-7.4 6.4-14.2 10.5-20.7l0.2-0.3c6-9.6 11.6-18.7 11.6-29.8c0-2.3-0.2-4.6-0.7-6.9c-4-19.1-15.7-41.7-31.3-60.5c-0.8-1-1.6-1.9-2.4-2.8l-0.8-0.9c-3.4-4.1-7-8.3-9.4-13.1c-2.2-4.4-3.3-9.1-3.3-14.4c0-8 2.5-16.1 4.9-24V8.5c0.7-2.4 1.5-5.1 2.3-7.7c0.1-0.2 0.1-0.4 0.2-0.7";
1344    var pathString16 = "M1080,410.19999999999993L1080,410.19999999999993C1047,391.59999999999997 1014.6,375.09999999999997 976,368.99999999999994C950.3000000000001,364.99999999999994 934.7,372.69999999999993 912.1,385.99999999999994C897.7,394.49999999999994 881.6,400.49999999999994 859.8000000000001,405.49999999999994C845,408.9 835.1,417.29999999999995 823.6,427.09999999999997L821.5,428.9C795.5,450.9 774.1,477.4 749.9,510.5C714.3,559.3 670.1999999999999,585 611.4,591.5C599.9,592.7 587.9,593.4 576.4,594L575.1999999999999,594.1C550.6999999999999,595.3 525.5,596.6 501.9,603.9";
1345    var pathString17 = "M1080,433.9999999999999L1080,433.9999999999999C1045.6,412.6999999999999 1006.5999999999999,388.6999999999999 965.8,393.7999999999999C951.9,395.5999999999999 941.9,401.3999999999999 931.1999999999999,407.5999999999999L930.9,407.69999999999993C923.9999999999999,411.5999999999999 916.9,415.69999999999993 908.6999999999999,418.69999999999993C904.3,420.19999999999993 899.5999999999999,421.79999999999995 893.6999999999999,423.69999999999993C878.6999999999999,428.69999999999993 863.1999999999999,433.69999999999993 849.4,442.99999999999994C821.5999999999999,461.5999999999999 801.9,490.5999999999999 784.1999999999999,518.6999999999999C759.6,557.5 734.6999999999999,585.4 707.9,603.9";
1346    var pathString18 = "M1080.0000000000002,465.09999999999985L1080.0000000000002,465.09999999999985C1075.7,462.79999999999984 1071.4,460.49999999999983 1067.1000000000001,458.09999999999985C1035.1000000000001,441.49999999999983 986.6000000000001,416.39999999999986 951.1000000000001,440.09999999999985C939.0000000000001,448.29999999999984 928.3000000000001,458.79999999999984 918.0000000000001,468.89999999999986L917.8000000000001,469.09999999999985C902.6,483.9999999999999 886.9000000000001,499.39999999999986 866.8000000000001,507.1999999999999C841.2,517.0999999999999 827.5000000000001,530.0999999999999 809.8000000000001,551.8999999999999C805.8000000000001,556.7999999999998 801.8000000000001,562.1999999999998 797.8000000000001,567.3999999999999L797.7,567.5999999999999C788.2,580.3 778.3000000000001,593.3 766.7,603.8";
1347    var pathString19 = "M1080,485.80000000000007L1080,485.80000000000007C1045,469.9000000000001 1008.9999999999999,465.30000000000007 973.6999999999999,493.30000000000007C958.8999999999999,505.00000000000006 942.3999999999999,514.8000000000001 926.4999999999999,524.2L926.4999999999999,524.2C920.4999999999999,527.8000000000001 913.7999999999998,531.8000000000001 907.2999999999998,535.8000000000001C889.7999999999998,546.6 874.9999999999999,561.0000000000001 860.7999999999998,574.8000000000001L860.6999999999998,574.9000000000001C859.4999999999998,576.0000000000001 858.3999999999999,577.2 857.1999999999998,578.3000000000001L856.8999999999999,578.6C855.8,579.6 854.6999999999999,580.7 853.5999999999999,581.8000000000001C845.5999999999999,589.5 837.5999999999999,597 829.8,604.1";
1348    var pathString20 = "M1080,512.8000000000001C1058,502.6 1034.9,498.70000000000005 1016.1,516.6C1009.6,522.8 1005.6999999999999,528.7 1001.9,534.5L1001.8,534.6C996,543.4 990.9,551.1 977.8,557.4C954.5999999999999,568.6 931.8,583.4 906.3,604";
1349    var pathString21 = "M981.9 603.9c6.9-3.6 12.1-7.3 16.6-11.7c2.3-2.3 4.6-4.8 6.4-6.8c19.7-21.8 40.2-32.3 64.4-32.3c3.5 0 7.1 0.2 10.7 0.6l0 0";
1350
1351    animateLine(canvas, "canvas", "#231f20", "" + pathString1 + pathString2 + pathString3 + pathString4 + pathString5 + pathString6 + pathString7 + pathString8 + pathString9 + pathString10 + pathString11, "" + pathString15 + pathString14 
1351+ pathString13, pathString21 + pathString20 + pathString19 + pathString18 + pathString17 + pathString16 + pathString12);
1352  }
1353});

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.