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.