PageSourceSearch

https://www.revesoft.com/cdn/assets/js/custom-all.js?v=1.1.7

js revesoft.com collected 2026-10-01 16:28:22 UTC 28,294 bytes, 604 lines download raw bytes

1! function(e) {
2    e(document).ready(function() {
3        e(".toggle-item").slice(8).addClass("hidden1"), e(".show-less").hide(), e(".show-more").click(function() {
4                e(".toggle-item").slice(0, 8).addClass("hidden1"), e(".toggle-item").slice(6).removeClass("hidden1"), e(".show-more").hide(), e(".show-less").show()
5            }), e(".show-less").click(function() {
6                e(".toggle-item").slice(0, 8).removeClass("hidden1"), e(".toggle-item").slice(6).addClass("hidden1"), e(".show-less").hide(), e(".show-more").show()
7            }),
8            function() {
9                function t() {
10                    e(window).width() < 769 ? (e(".revesoft_revechat_first_tab .nav-link:first").find(".revesoft_revechat_sec_two_nav_mbl_imag").slideDown(), e(".revesoft_revechat_first_tab .tab-content").hide(), e(".revesoft_revechat_first_tab .nav-link").click(function() {
11                        var t = e(this).find(".revesoft_revechat_sec_two_nav_mbl_imag");
12                        e(".revesoft_revechat_first_tab .revesoft_revechat_sec_two_nav_mbl_imag").not(t).hide(), t.slideDown()
13                    })) : e(".revesoft_revechat_first_tab .revesoft_revechat_sec_two_nav_mbl_imag").hide()
14                }
15                e(".revesoft_revechat_first_tab .nav-link:first").find(".tab_button_hidden_text").slideDown(), e(".revesoft_revechat_first_tab .nav-link").click(function() {
16                    var t = e(this).find(".tab_button_hidden_text");
17                    e(".revesoft_revechat_first_tab .tab_button_hidden_text").not(t).hide(), t.slideDown()
18                }), e(".revesoft_revechat_first_tab .revesoft_revechat_sec_two_nav_mbl_imag").hide(), window.addEventListener("load", t), window.addEventListener("resize", t)
19            }(),
20            function() {
21                function t() {
22                    e(window).width() < 769 ? (e(".revesoft_revechat_sec_tab .nav-link:first").find(".revesoft_revechat_sec_two_nav_mbl_imag").slideDown(), e(".revesoft_revechat_sec_tab .tab-content").hide(), e(".revesoft_revechat_sec_tab .nav-link").click(function() {
23                        var t = e(this).find(".revesoft_revechat_sec_two_nav_mbl_imag");
24                        e(".revesoft_revechat_sec_tab .revesoft_revechat_sec_two_nav_mbl_imag").not(t).hide(), t.slideDown()
25                    })) : e(".revesoft_revechat_sec_tab .revesoft_revechat_sec_two_nav_mbl_imag").hide()
26                }
27                e(".revesoft_revechat_sec_tab .nav-link:first").find(".tab_button_hidden_text").slideDown(), e(".revesoft_revechat_sec_tab .nav-link").click(function() {
28                    var t = e(this).find(".tab_button_hidden_text");
29                    e(".revesoft_revechat_sec_tab .tab_button_hidden_text").not(t).hide(), t.slideDown()
30                }), e(".revesoft_revechat_sec_tab .revesoft_revechat_sec_two_nav_mbl_imag").hide(), window.addEventListener("load", t), window.addEventListener("resize", t)
31            }(), e(".hideshow").click(function() {
32                e(".reve_search_bar").toggle()
33            }), e(".hideshow2").click(function() {
34                e(".m_language").toggle()
35            }), e("#button_to_search_bar").click(function() {
36                e(".revesoft_main_header_right .form-control").css({
37                    border: "1px solid #4d4f55",
38                    "border-right": "none"
39                }), e("#button_to_search_bar").css({
40                    border: "1px solid #4d4f55",
41                    "border-radius": "0px 4px 4px 0px"
42                })
43            }), e(".revesoft_header_navlist ul > li.has_submenu").hover(function() {
44                e(".menu_overlay").length || e("body").append('<div class="menu_overlay"></div>'), e(".menu_overlay").addClass("visible")
45            }, function() {
46                e(".menu_overlay").removeClass("visible")
47            });
48        e(".expandable-list ul.has_child_submenu_inner").slice(-3).addClass("inline-block-submenu"), e(".expandable-list li.has_child_submenu > a").mouseenter(function(t) {
49            t.preventDefault(), e(".expandable-list ul.has_child_submenu_inner").css({
50                display: "none",
51                top: "100px",
52                transition: "opacity 0s ease, top 0s ease, visibility 0s ease"
53            });
54            const s = e(this).next("ul.has_child_submenu_inner");
55            s.hasClass("inline-block-submenu"), s.css({
56                display: "inline-flex",
57                top: "0px"
58            })
59        }), e(".expandable-list").each(function() {
60            const t = e(this);
61            t.find("li.has_child_submenu").mouseenter(function(s) {
62                t.find("li.has_child_submenu").removeClass("active"), e(this).addClass("active")
63            })
64        }), e(".revesoft_cutting_edge_solutions_inner_item .card").click(function(t) {
65            const s = e(".card");
66            for (let e = 0; e < s.length; e++) s[e].classList.remove("active");
67            this.classList.add("active")
68        }), e(document).click(function(t) {
69            e(t.target).closest(".revesoft_main_header_right, #button_to_
69search_bar").length || (e(".revesoft_main_header_right .form-control").css({
70                border: "",
71                "border-right": ""
72            }), e("#button_to_search_bar").css({
73                border: "",
74                "border-radius": ""
75            }))
76        }), document.getElementById("openbtn_for_revesoft_mobile_menu").addEventListener("click", function() {
77            document.getElementById("revesoft_mobile_sidebar_menu").style.width = "100%", document.getElementById("revesoft_mobile_sidebar_menu").style.height = "80vh", document.getElementById("revesoft_mobile_sidebar_menu").style.left = "0%", document.getElementById("openbtn_for_revesoft_mobile_menu").style.display = "none", document.getElementById("closebtn_for_revesoft_mobile_menu").style.display = "block"
78        }), document.getElementById("closebtn_for_revesoft_mobile_menu").addEventListener("click", function() {
79            document.getElementById("revesoft_mobile_sidebar_menu").style.width = "0%", document.getElementById("revesoft_mobile_sidebar_menu").style.left = "-100%", document.getElementById("openbtn_for_revesoft_mobile_menu").style.display = "block", document.getElementById("closebtn_for_revesoft_mobile_menu").style.display = "none"
80        });
81        const t = document.querySelectorAll(".toggle-link "),
82            s = document.querySelectorAll(".toggle-content");
83        s.forEach(e => {
84            e.style.display = "none"
85        }), t.forEach((e, t) => {
86            e.addEventListener("click", function(o) {
87                o.preventDefault(), s[t].style.display = "none" === s[t].style.display ? "block" : "none", e.classList.toggle("active")
88            })
89        }), e(".revesoft_events_popup_slider").hide(), e(".show_events_img").on("click", function(t) {
90            t.preventDefault(), e(".revesoft_events_popup_slider").show()
91        }), e(".show_events_img_close_btn").on("click", function() {
92            e(".revesoft_events_popup_slider").hide()
93        });
94        var o = new Swiper(".product_swiper_slider", {
95            slidesPerView: 4,
96            spaceBetween: 30,
97            centeredSlides: !1,
98            initialSlide: 0,
99            navigation: {
100                nextEl: ".swiper-button-next",
101                prevEl: ".swiper-button-prev"
102            },
103            breakpoints: {
104                276: {
105                    slidesPerView: 1
106                },
107                376: {
108                    slidesPerView: 1
109                },
110                476: {
111                    slidesPerView: 1
112                },
113                576: {
114                    slidesPerView: 1
115                },
116                768: {
117                    slidesPerView: 2
118                },
119                992: {
120                    slidesPerView: 3
121                },
122                1200: {
123                    slidesPerView: 4
124                },
125                1400: {
126                    slidesPerView: 5
127                }
128            }
129        });
130        new Swiper(".revesoft_hero_section_slider", {
131            autoplay: {
132                delay: 5e3,
133                disableOnInteraction: !1
134            },
135            pagination: {
136                el: ".revesoft_hero_section_slider .swiper-pagination",
137                dynamicBullets: !0,
138                clickable: !0
139            },
140            on: {
141                slideChange: function() {
142                    const e = document.getElementsByClassName("revesoft_hero_section_right_bg");
143                    if (2 === this.activeIndex || 3 === this.activeIndex)
144                        for (let t = 0; t < e.length; t++) e[t].style.display = "block";
145                    else
146                        for (let t = 0; t < e.length; t++) e[t].style.display = "block"
147                }
148            }
149        }), o = new Swiper(".revesoft_trusted_industries", {
150            slidesPerView: 4,
151            spaceBetween: 24,
152            slidesPerGroup: 1,
153            loop: !0,
154            navigation: {
155                nextEl: ".swiper-button-next",
156                prevEl: ".swiper-button-prev"
157            },
158            autoplay: {
159                delay: 5e3
160            },
161            breakpoints: {
162                356: {
163                    slidesPerView: 1,
164                    slidesPerGroup: 1
165                },
166                476: {
167                    slidesPerView: 1,
168                    slidesPerGroup: 1
169                },
170                576: {
171                    slidesPerView: 1,
172                    slidesPerGroup: 1
173                },
174                768: {
175                    slidesPerView: 2,
176                    slidesPerGroup: 1
177                },
178                992: {
179                    slidesPerView: 3,
180                    slidesPerGroup: 1
181                },
182                1200: {
183                    slidesPerView: 4,
184                    slidesPerGroup: 1
185                }
186            }
187        }), o = new Swiper(".revesoft_technoloagy_partnership_sl", {
188            slidesPerView: 4,
189            spaceBetween: 24,
190            centeredSlides: !1,
191            initialSlide: 0,
192            pagination: {
193                el: ".swiper-pagination",
194                clickable: !0
195            },
196            loop: !0,
197            navigation: {
198                nextEl: ".swiper-button-next",
199                prevEl: ".swiper-button-prev"
200            },
201            autoplay: {
202                delay: 5e3
203            },
204            breakpoints: {
205                276: {
206                    slidesPerView: 1
207                },
208                376: {
209                    slidesPerView: 1
210                },
211                476: {
212                    slidesPerView: 1
213                },
214                576: {
215                    slidesPerView: 1
216                },
217                768: {
218                    slidesPerView: 2
219                },
220                992: {
221                    slidesPerView: 3
222                },
223                1200: {
224                    slidesPerView: 4
225                }
226            },
227            on: {
228                slideChange: function() {
229                    document.querySelectorAll(".container-fluid").forEach(e => {
230                        e.style.paddingLeft = "0"
231                    })
232                }
233            }
234        });
235
236        function i(e, t, s) {
237            window.innerWidth > 1e3 && document.querySelectorAll(e).forEach(function(e) {
238                e.dataset.initialized || (e.dataset.initialOpacity = t, e.dataset.initialTranslateValue = s, e.dataset.initialized = !0);
239                var o = window.innerHeight;
240                e.getBoundingClientRect().top < o - 100 ? (e.style.position = "relative", e.style.opacity = "1", e.style.transition = "all 2s ease", e.style.transform = "translate(0px, 0px)", e.classList.add("active")) : (e.style.opacity = e.dataset.initialOpacity, e.style.transform = e.dataset.initialTranslateValue, e.classList.remove("active"))
241            })
242        }
243        e(".revesoft_all_products ul li span").on("click", function() {
244            const t = e("ul li span");
245            for (let e = 0; e < t.length; e++) t[e].classList.remove("active");
246            this.classList.add("active")
247        }), e("#dynamicForm .form-group").hide(), e(".reve_sms").show(), e("#formSelector").on("change", function() {
248            var t = e(this).val();
249            e("#dynamicForm .form-group").each(function() {
250                e(this).hasClass(t) ? e(this).removeClass("form_hidden").find(":input").each(function() {
251                    "true" === e(this).attr("data-original-required") && e(this).prop("required", !0)
252                }) : e(this).addClass("form_hidden").find(":input").each(function() {
253                    e(this).prop("required") && e(this).attr("data-original-required", "true"), e(this).prop("required", !1)
254                })
255            })
256        }), e(window).scroll(function() {
257            e(window).scrollTop() > 200 && window.innerWidth > 1e3 && (i(".reveal", "0", "translateY(100px)"), i(".reveal_left", "0", "translateY(80px)"), i(".reveal_right", "0", "translateY(120px)"))
258        }), e("#revesoft_menu_searchbar").click(function() {
259            // e(this).hide(),
260              e(".revesoft_main_header_right .input-group").show(), e("#revesoft_menu_searchbar_close").css({
261                display: "inline-block",
262                "vertical-align": "top"
263            })
264        }), e("#revesoft_menu_searchbar_close").click(function() {
265            e(this).hide(), e(".revesoft_main_header_right .input-group").hide(), e("#revesoft_menu_searchbar").show()
266        }), setTimeout(function() {
267            setInterval(() => {
268                const e = document.querySelector(".VIpgJd-ZVi9od-xl07Ob-lTBxed span");
269                e && "Select Language" === e.textContent && (e.textContent = "English (US)")
270            }, 500)
271        }, 1e3);
272        const n = document.querySelectorAll(".revesoft_common_demo_btn");
273
274        function r(e) {
275            const t = e.innerText.trim();
276            e.setAttribute("data-content", t)
277        }
278        console.log(n), n.forEach(function(e) {
279            e.setAttribute("data-content", "Get a Free Demo")
280        });
281
282        function a(e) {
283            const t = document.querySelectorAll(e),
284                s = {};
285            t.forEach(e => {
286                e.style.minHeight = "auto"
287            }), t.forEach(e => {
288                const t = Math.round(e.getBoundingClientRect().top);
289                s[t] || (s[t] = []), s[t].push(e)
290            }), Object.values(s).forEach(e => {
291                let t = 0;
292                e.forEach(e => {
293                    e.offsetHeight > t && (t = e.offsetHeight)
294                }), e.forEach(e => {
295                    e.style.minHeight = t + "px"
296                })
297            })
298        }
299
300        function l() {
301            a(".revesoft_everything_you_need_box"), a(".card"), a(".revesoft_subscriber_friendly_features_box"), a(".revesoft_yourapp_andyourbrand_box"), a(".revesoft_sbc_deployment_box"), a(".technical_specifications_box"), a(".revesoft_sales_team_inner")
302        }
303        document.querySelectorAll(".revesoft_common_demo_btn").forEach(function(e) {
304            let t = !1;
305            e.addEventListener("mouseover", function() {
306                t || setTimeout(function() {
307                    r(e), t = !0
308                }, 1e3)
309            });
310            new MutationObserver(function(t, s) {
311                for (const s of t) "childList" === s.type && r(e)
312            }).observe(e, {
313                childList: !0,
314                subtree: !0
315            })
316        }), "https://www.revesoft.com/products/reve-virtual-roaming-solutions" === window.location.href ? window.location.href = "https://www.revesoft.com/products/reve-virtual-roaming-solution" : "https://www.revesoft.com/products/reve-mobile-ott-solutions" === window.location.href ? window.location.href = "https://www.revesoft.com/products/voice-video-and-messaging-app" : "https://www.revesoft.com/products/sdk" === window.location.href ? window.location.href = "https://www.revesoft.com/products/voice-video-and-messaging-sdk" : "https://www.revesoft.com/products/cloud-telephony" === window.location.href ? window.location.href = "https://www.revesoft.com/products/contact-center-solution" : "https://www.revesoft.com/company/leadership-team" === window.location.href && (window.location.href = "https://www.revesoft.com/about-us"), window.onload = function() {
317            l()
318        }, window.addEventListener("resize", l), e("#quickContact button.loader").hide(), e(document).on("submit", ".revesoft_business_query_frm #quickContact", function(t) {
319            t.preventDefault();
320            const s = e(this).attr("action"),
321                o = e(this).serialize();
322            e.ajax({
323                type: "POST",
324                url: s,
325                data: o,
326                dataType: "json",
327                beforeSend: function() {
328                    e("#resultContainer").empty(), e("#quickContact button.loader").show(), e("#quickContact button.submit-btn").hide()
329                },
330                success: function(t) {
331                    if (!0 === t.status) e("#quickContact button.loader").hide(), e("#quickContact button.submit-btn").show(), e("#quickContact").trigger("reset"), e("#resultContainer").html(`<span class="success-text">${t.msg}</span>`).css({
332                        color: "green",
333                        "font-size": "22px"
334                    }), e("#resultContainer img").css({
335                        display: "block"
336                    }), e("html, body").animate({
337                        scrollTop: e("#resultContainer").offset().top
338                    }, 200);
339                    else {
340                        console.log("Validation Failed:", t);
341                        let s = `<span class="error-text" style="color: red;">${t.msg}</span>`;
342                        if ("string" == typeof t.errors) s += `<br><span class="error-text" style="color: red;">${t.errors}</span>`;
343                        else if ("object" == typeof t.errors)
344                            for (const e in t.errors) s += `<br><span class="error-text" style="color: red;">${t.errors[e]}</span>`;
345                        e("#resultContainer").html(s), e("#resultContainer img").css({
346                            display: "none"
347                        }), e("#quickContact button.loader").hide(), e("#quickContact button.submit-btn").show(), e("html, body").animate({
348                            scrollTop: e("#resultContainer").offset().top
349                        }, 200)
350                    }
351                },
352                error: function(t, s, o) {
353                    console.error("AJAX Error:", o), e("#resultContainer").html('<span class="error-text">Something went wrong. Please try again.</span>').css({
354                        color: "red"
355                    }), e(".form_validation_error").hide()
356                }
357            })
358        });
359        const c = document.querySelector(".autoplay-progress svg"),
360            d = (document.querySelector(".autoplay-progress span"), document.querySelector(".autoplay-progress"));
361        o = new Swiper(".OutTestimonialSwiper", {
362            spaceBetween: 39,
363            slidesPerView: 2,
364            loop: !0,
365            grabCursor: !0,
366            simulateTouch: !0,
367            autoplay: {
368                delay: 5e3,
369                disableOnInteraction: !1
370            },
371            pagination: {
372                el: ".swiper-pagination",
373                clickable: !0
374            },
375            on: {
376                autoplayTimeLeft(e, t, s) {
377                    const o = document.querySelector(".OutTestimonialSwiper .swiper-pagination-bullet-active");
378                    if (o) {
379                        const e = o.getBoundingClientRect(),
380                            t = o.parentElement.getBoundingClientRect();
381                        d.style.left = e.left - t.left + e.width / 2 - d.offsetWidth / 2 + "px", d.style.top = e.top - t.top + e.height / 2 - d.offsetHeight / 2 + "px"
382                    }
383                    c.style.strokeDashoffset = "" + 125.6 * s
384                }
385            },
386            breakpoints: {
387                0: {
388                    slidesPerView: 1,
389                    navigation: !1
390                },
391                768: {
392                    slidesPerView: 2,
393                    spaceBetween: 30
394                }
395            }
396        });
397        const _ = document.querySelector(".OutTestimonialSwiper");
398        _ && (_.addEventListener("mouseenter", () => {
399            o.autoplay.stop()
400        }), _.addEventListener("mouseleave", () => {
401            o.autoplay.start()
402        })), e("#revesystemsOutSrcFrm .loader").hide(), e(".m_revesoft_disc_abt_pjt_frm .alert").hide(), e(".m_revesoft_disc_abt_pjt_frm .success-message").hide(), e("#revesystemsOutSrcFrm").submit(function(t) {
403            t.preventDefault();
404            var s = e(this).serialize();
405            e.ajax({
406                url: "https://www.revesoft.com/contact/service_contact",
407                method: "post",
408                data: s + "&action=register",
409                beforeSend: function() {
410                    e("#revesystemsOutSrcFrm .loader").show(), e("#revesystemsOutSrcFrm .preloader").hide()
411                },
412                success: function(t) {
413                    1 == t.status ? (e("#revesystemsOutSrcFrm .preloader").show(), e("#revesystemsOutSrcFrm .loader").hide(), e("form#revesystemsOutSrcFrm").hide(), e(".m_revesoft_disc_abt_pjt_frm .success-message").html(t.msg).show(), e(".form_validation_error").hide()) : (e(".m_revesoft_disc_abt_pjt_frm .alert").html(t.msg).show(), e("#revesystemsOutSrcFrm .loader").hide(), e("#revesystemsOutSrcFrm .preloader").show(), e(".m_revesoft_disc_abt_pjt_frm .success-message").hide())
414                }
415            })
416        });
417
418        const isMobile = window.matchMedia("(max-width: 990px)");
419
420function handleScreenSize() {
421    if (isMobile.matches) {
422         const u = document.querySelector(".fixed_header");
423
424            function f() {
425                window.innerWidth > 1e3 && window.scrollY > 100 ? u.classList.add("shrink") : u.classList.remove("shrink")
426            }
427            window.addEventListener("load", () => {
428                const e = document.querySelector(".fixed_header");
429                e && requestAnimationFrame(() => {
430                    e.classList.add("ready")
431                })
432            }), "#m_revesoft_disc_abt_prj_contact" === window.location.hash && document.body.classList.add("only-section");
433            const h = document.querySelector(".fixed_header"),
434                m = document.querySelector(".event_fixed_top_bar");
435
436            function v() {
437                const e = m.offsetHeight + "px";
438                window.scrollY > 200 ? (m.classList.add("shrink2"), h.style.top = "0px") : (m.classList.remove("shrink2"), h.style.top = e)
439            }
440            h.style.transition = "top 0.5s ease, max-width 0.5s ease, transform 0.5s ease", window.addEventListener("scroll", v), v(), window.addEventListener("resize", v);
441        
442    }
443}
444
445handleScreenSize();
446isMobile.addEventListener("change", handleScreenSize);
447           
448        new Swiper(".eventSlider", {
449            loop: !0,
450            autoplay: {
451                delay: 2500,
452                disableOnInteraction: !1
453            },
454            breakpoints: {
455                0: {
456                    slidesPerView: 1,
457                    spaceBetween: 10
458                },
459                768: {
460                    slidesPerView: 2,
461                    spaceBetween: 20
462                },
463                1024: {
464                    slidesPerView: 3,
465                    spaceBetween: 30
466                }
467            }
468        });
469  const dots = document.querySelectorAll(".pagination-dot");
470const progressBars = document.querySelectorAll(".step-progress-bar");
471const icon = document.querySelector(".step-icon"); // moving icon
472
473function updateUI(s, index) {
474  const totalSlides = s.slides.length;
475
476  const progress = totalSlides > 1
477    ? (index / (totalSlides - 1)) * 100
478    : 100;
479
480  // LEFT DOTS
481  dots.forEach((dot, i) => {
482    dot.classList.toggle("active", i === index);
483    dot.style.setProperty("--progress", "0%");
484  });
485
486  // RIGHT PROGRESS BAR
487  progressBars.forEach((bar) => {
488    bar.style.width = `${progress}%`;
489  });
490
491  // ICON MOVE
492  if (icon) {
493    icon.style.left = `${progress}%`;
494  }
495}
496        const swiper = new Swiper(".mySwiper", {
497  loop: false,
498  autoplay: {
499    delay: 5000,
500    disableOnInteraction: false,
501  },
502  navigation: {
503    nextEl: ".swiper-button-next",
504    prevEl: ".swiper-button-prev",
505  },
506  on: {
507    init() {
508      updateUI(this, this.activeIndex);
509    },
510    slideChange() {
511      updateUI(this, this.activeIndex);
512    }
513  }
514});
515swiper.on('slideChange', function () {
516  const container = document.querySelector('.swiper-pagination-custom');
517  const activeDot = container.querySelectorAll('.pagination-dot')[swiper.activeIndex];
518
519  const scrollLeft =
520    activeDot.offsetLeft -
521    (container.offsetWidth / 2) +
522    (activeDot.offsetWidth / 2);
523
524  container.scrollTo({
525    left: scrollLeft,
526    behavior: 'smooth'
527  });
528});
529/* AUTOPLAY LEFT DOT PROGRESS */
530swiper.on("autoplayTimeLeft", (s, time, progress) => {
531  dots.forEach(dot => {
532    dot.style.setProperty("--progress", "0%");
533  });
534
535  const activeDot = dots[s.activeIndex];
536
537  if (activeDot) {
538    activeDot.style.setProperty(
539      "--progress",
540      `${(1 - progress) * 100}%`
541    );
542  }
543});
544
545/* DOT CLICK NAVIGATION */
546dots.forEach((dot, index) => {
547  dot.addEventListener("click", () => {
548    swiper.slideTo(index);
549  });
550});
551
552/* FIRST INIT (safe fallback) */
553updateUI(swiper, swiper.activeIndex);
554
555 const fixedHeader = document.querySelector('.fixed_header');
556    function updateHeaderMenuColor() {
557        if (fixedHeader) {
558            fixedHeader.classList.toggle('menu-scrolled', window.scrollY > 200);
559        }
560    }
561    window.addEventListener('scroll', updateHeaderMenuColor, { passive: true });
562    window.addEventListener('pageshow', updateHeaderMenuColor);
563    updateHeaderMenuColor();
564
565
566 // Fade + slide-up reveal for any .reveal-up element as it scrolls into
567    // view. Shared across the whole site via this file. Call
568    // window.initRevealUp() again after adding new .reveal-up content on a
569    // page (a modal, an AJAX-loaded section, a swiper that adds slides
570    // later) — already-bound elements are skipped, so it's safe to call
571    // repeatedly. Pass a container to scan only within it instead of the
572    // whole document.
573    window.initRevealUp = function (root) {
574      root = root || document;
575      var elements = root.querySelectorAll('.reveal-up:not(.reveal-up--bound)');
576      if (!elements.length) return;
577
578      if (!('IntersectionObserver' in window)) {
579        elements.forEach(function (el) {
580          el.classList.add('reveal-up--bound', 'is-visible');
581        });
582        return;
583      }
584
585      var revealObserver = new IntersectionObserver(function (entries) {
586        entries.forEach(function (entry) {
587          if (entry.isIntersecting) {
588            entry.target.classList.add('is-visible');
589            revealObserver.unobserve(entry.target);
590          }
591        });
592      }, { threshold: 0.2 });
593
594      elements.forEach(function (el) {
595        el.classList.add('reveal-up--bound');
596        revealObserver.observe(el);
597      });
598    };
599
600    window.initRevealUp();
601
602
603    })
604}(jQuery);

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.