const onDesktop = (fn) => gsap.matchMedia().add("(min-width: 992px)", fn); // const onTablet = (fn) => // gsap.matchMedia().add("(min-width: 768px) and (max-width: 991px)", fn); const onMobile = (fn) => gsap.matchMedia().add("(max-width: 991px)", fn); const mainEase = "power3.out"; const mainDuration = 1; const shorterDuration = 0.8; var preloaderShown = sessionStorage.getItem("preloaderShown"); if (!preloaderShown) { var preloaderDelay = 4; } else { var preloaderDelay = 1; } gsap.config({ nullTargetWarn: false, }); $("img").attr("loading", "auto"); // +++++++++ LENIS OPEN ++++++++++ const lenis = new Lenis(); lenis.on("scroll", ScrollTrigger.update); gsap.ticker.add((time) => { lenis.raf(time * 1000); }); //LENIS CLOSE function parallax() { console.log("parallax"); $("[data-parallax]").each(function () { let parallaxImgWrap = $(this); const imgScrollTimeline = gsap.timeline({ scrollTrigger: { trigger: $(this), start: "clamp(top bottom)", end: "clamp(bottom top)", scrub: true, }, }); imgScrollTimeline.fromTo( parallaxImgWrap, { yPercent: -10 }, { yPercent: 0 } ); }); } function globalScript() { console.log("globalScript"); //|| // onDesktop(() => {}); // onTablet(() => {}); // onMobile(() => {}); const onDesktop = (fn) => gsap.matchMedia().add("(min-width: 992px)", fn); // const onTablet = (fn) => // gsap.matchMedia().add("(min-width: 768px) and (max-width: 991px)", fn); const onMobile = (fn) => gsap.matchMedia().add("(max-width: 991px)", fn); const mainEase = "power3.out"; const mainDuration = 1; const shorterDuration = 0.8; var preloaderShown = sessionStorage.getItem("preloaderShown"); if (!preloaderShown) { var preloaderDelay = 4; } else { var preloaderDelay = 1; } gsap.config({ nullTargetWarn: false, }); $("img").attr("loading", "auto"); ////////////// GLOBAL ATTRIBUTES ////////////// //nav test console.log("navScript"); let lastScroll = window.scrollY; let direction = "none"; gsap.ticker.add(() => { const currentScroll = window.scrollY; if (currentScroll > lastScroll && direction !== "down") { direction = "down"; gsap.to(".g_new-nav_component", { yPercent: -100, duration: 0.4, ease: "power2.out", }); } else if (currentScroll < lastScroll && direction !== "up") { direction = "up"; gsap.to(".g_new-nav_component", { yPercent: 0, duration: 0.4, ease: "power2.out", }); } lastScroll = currentScroll; }); ScrollTrigger.create({ trigger: ".g_nav-trigger", start: "top 10%", // end: "center 70%", onEnter: () => $(".g_new-nav_component").addClass("open"), onLeaveBack: () => $(".g_new-nav_component").removeClass("open"), }); // const mobileNavLogo = $("[data-nav-logo]"); // const mobileNavMenuButton = $("[data-nav-menu-button]"); // const mobileNavMenuButtonInner = mobileNavMenuButton.find( // "[data-nav-menu-button]" // ); // const mobileOpen = mobileNavMenuButtonInner.hasClass("w--open"); // $("[data-nav]").each(function () { // const moveNav = gsap // .from("[data-nav]", { // yPercent: -100, // paused: true, // duration: 0.4, // }) // .progress(1); // ScrollTrigger.create({ // start: "top top", // end: "max", // onUpdate: (self) => { // self.direction === -1 ? moveNav.play() : moveNav.reverse(); // }, // }); // // Change the Nav colours after scrolling past a certain point // $("[data-nav-trigger]").each(function () { // let trigger = $(this); // let banner = $("[data-nav-banner]"); // let navMain = $("[data-nav-inner]"); // let mobileNavMain = $("[data-mobile-nav-inner]"); // let mobileNavMenu = $("[data-mobile-nav-menu]"); // let changeTl = gsap.timeline({ // scrollTrigger: { // trigger: trigger, // start: "top top", // end: "bottom top", // toggleActions: "none play reverse reverse", // }, // }); // changeTl.to("[data-nav]", { // backgroundColor: "white", // color: "#002A4C", // duration: 0.4, // }); // changeTl.to( // banner, // { // yPercent: 100, // duration: 0.4, // }, // "<" // ); // changeTl.to( // navMain, // { // y: 0, // duration: 0.4, // }, // "<" // ); // changeTl.to( // mobileNavMain, // { // y: "2rem", // duration: 0.4, // }, // "<" // ); // }); // const toWhiteTl = gsap.timeline({ // paused: true, // }); // toWhiteTl.to(mobileNavMenuButton, { // pointerEvents: "none", // duration: 0, // }); // toWhiteTl.to(mobileNavLogo, { // opacity: 0, // duration: 0.125, // }); // toWhiteTl.to(mobileNavLogo, { // color: "white", // duration: 0, // }); // toWhiteTl.to(mobileNavLogo, { // opacity: 1, // duration: 0.25, // }); // toWhiteTl.to(mobileNavMenuButton, { // pointerEvents: "auto", // duration: 0, // }); // const toInheritTl = gsap.timeline({ // paused: true, // }); // toInheritTl.to(mobileNavMenuButton, { // pointerEvents: "none", // duration: 0, // }); // toInheritTl.to(mobileNavLogo, { // opacity: 0, // duration: 0.5, // }); // toInheritTl.to(mobileNavLogo, { // color: "inherit", // duration: 0, // }); // toInheritTl.to(mobileNavLogo, { // opacity: 1, // duration: 0.5, // }); // toInheritTl.to(mobileNavMenuButton, { // pointerEvents: "auto", // duration: 0, // }); // mobileNavMenuButton.on("click", () => { // const innerThis = $(this).find("[data-nav-menu-button]"); // if (innerThis.hasClass("w--open")) { // toInheritTl.restart(); // moveNav.pause(); // } else { // toWhiteTl.restart(); // moveNav.play(); // } // }); // }); // //----------------------------------------------// // $(".page_main").each(function () { // let section = $(this); // let awardCard = section.find(".card_award_wrap"); // let listTl = gsap.timeline({ // scrollTrigger: { // trigger: awardCard[0], // start: "top bottom", // end: "bottom top", // toggleActions: "play none none none", // }, // }); // listTl.from(awardCard, { // rotation: 2.5, // scale: 0.8, // yPercent: 25, // stagger: { // amount: 0.75, // }, // duration: 1, // }); // }); // [data-parallax] // // $("[data-parallax]").each(function () { // let el = $(this); // let percent = $(this).attr("data-parallax"); // let tl = gsap.timeline({ // scrollTrigger: { // trigger: el, // start: "top bottom", // end: "bottom top", // scrub: true, // clamp: true, // }, // }); // tl.to(el, { // yPercent: percent, // }); // }); // ++++++++++ MAGNET BUTTONS ++++++++++++ $(document).ready(function () { const magnetElement = $("[data-magnet]"); const magnetStrength = 0.5; const magnetDistance = 50; function initMagnetEffect() { magnetElement.each(function () { const btn = $(this); const btnElement = this; $(document).on("mousemove", function (e) { const rect = btnElement.getBoundingClientRect(); const btnCenterX = rect.left + rect.width / 2; const btnCenterY = rect.top + rect.height / 2; const mouseX = e.clientX; const mouseY = e.clientY; const distanceX = mouseX - btnCenterX; const distanceY = mouseY - btnCenterY; const distance = Math.sqrt( distanceX * distanceX + distanceY * distanceY ); if (distance < magnetDistance) { const pullStrength = (magnetDistance - distance) / magnetDistance; const pullX = distanceX * pullStrength * magnetStrength; const pullY = distanceY * pullStrength * magnetStrength; gsap.to(btnElement, { x: pullX, y: pullY, duration: 0.3, ease: "power2.out", }); } else { gsap.to(btnElement, { x: 0, y: 0, duration: 0.5, ease: "elastic.out(1, 0.3)", }); } }); $(document).on("mouseleave", function () { gsap.to(btnElement, { x: 0, y: 0, duration: 0.5, ease: "elastic.out(1, 0.3)", }); }); }); } onDesktop(() => { initMagnetEffect(); }); }); // +++++++++++ HERO ALT EXPANDING ON DESKTOP ++++++++++ onDesktop(() => { $(".hero_alt_layout").each(function () { let wrap = $(this); let insetTl = gsap.timeline({ scrollTrigger: { trigger: wrap, start: "top 50%", end: "bottom bottom", scrub: true, }, }); insetTl.fromTo( wrap, { width: "95%", }, { width: "100%", } ); }); }); onDesktop(() => { $("[data-hero-expand]").each(function () { let wrap = $(this); let insetTl = gsap.timeline({ scrollTrigger: { trigger: wrap, start: "top center", end: "top -50%", scrub: true, }, }); insetTl.fromTo( wrap, { width: "90%", }, { width: "100%", } ); insetTl.fromTo( "[data-expand-with]", { width: "95%", }, { width: "100%", } // "<" ); }); $("[data-past-winners-expand]").each(function () { let wrap = $(this); let insetTl = gsap.timeline({ scrollTrigger: { trigger: wrap, end: "bottom bottom", scrub: true, }, }); insetTl.fromTo( wrap, { width: "90%", }, { width: "100%", } ); insetTl.fromTo( "[data-expand-with]", { width: "95%", }, { width: "100%", } ); }); }); // ++++++++ TESTIMONIAL SWIPER +++++++++++ $("[data-home-testimonial]").each(function () { console.log("testimonialSlider"); const leftSwiper = new Swiper($(this).find(".swiper.is-testimonials")[0], { slidesPerView: 1, parallax: true, loop: true, speed: 1000, autoplay: { delay: 12000, }, navigation: { nextEl: $(this).find(".swiper-next")[0], prevEl: $(this).find(".swiper-prev")[0], }, }); const rightSwiper = new Swiper( $(this).find(".swiper.is-testimonials-text")[0], { autoHeight: true, slidesPerView: 1, loop: true, effect: "fade", fadeEffect: { crossFade: true, }, } ); leftSwiper.controller.control = [rightSwiper]; rightSwiper.controller.control = [leftSwiper]; leftSwiper.on("realIndexChange", function () { const testimonialTickerSvg = $("[data-testimonial-path]"); gsap.fromTo( testimonialTickerSvg, { drawSVG: "0%", }, { drawSVG: "100%", duration: 12, } ); }); }); menuScript(); // //mobile menu // console.log("mobileMenu"); // gsap.set(".mobile_menu", { // clipPath: "polygon(0% 0%, 100% 0%, 100% 0%, 0% 0%)", // }); // let menuTl = gsap.timeline({ paused: true }); // menuTl.fromTo( // $(".page_main").children().not(".g_new-nav_component, .mobile_menu"), // { y: "0" }, // { y: "100vh", ease: "expo.out", duration: 1 } // ); // menuTl.fromTo(".mobile_menu", { display: "none" }, { display: "flex" }, "<"); // menuTl.fromTo( // ".mobile_menu", // { clipPath: "polygon(0% 0%, 100% 0%, 100% 0%, 0% 0%)" }, // { // clipPath: "polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%)", // duration: 1, // ease: "expo.out", // }, // "<" // ); // menuTl.fromTo( // $(".menu_link_list .u-text-style-h3"), // { clipPath: "polygon(0% 0%, 100% 0%, 100% 0%, 0% 0%)", yPercent: 100 }, // { // clipPath: "polygon(0% 0%, 130% 0%, 130% 130%, 0% 130%)", // yPercent: 0, // duration: 1.8, // ease: "expo.out", // }, // "<50%" // ); // let isMenuOpen = false; // $(".g_new-nav_btn_wrap").on("click", function () { // if (!isMenuOpen) { // menuTl.timeScale(1).play(); // isMenuOpen = true; // } else { // menuTl.timeScale(1.5).reverse(); // isMenuOpen = false; // } // }); // menuTl.eventCallback("onComplete", () => { // isMenuOpen = true; // }); // menuTl.eventCallback("onReverseComplete", () => { // isMenuOpen = false; // }); // +++++++++ CURSOR +++++++++++ onDesktop(() => { $("[data-cursor]").each(function () { // if (isDesktop) { gsap.set("[data-cursor]", { xPercent: -50, yPercent: -50 }); let xTo = gsap.quickTo("[data-cursor]", "x", { duration: 0.6, ease: "power3", }); let yTo = gsap.quickTo("[data-cursor]", "y", { duration: 0.6, ease: "power3", }); window.addEventListener("mousemove", (e) => { xTo(e.clientX - 8); yTo(e.clientY - 8); }); window.addEventListener("mousedown", (event) => { $("[data-cursor]").addClass("is-pressed"); }); window.addEventListener("mouseup", (event) => { $("[data-cursor]").removeClass("is-pressed"); }); // } else { // gsap.set("[data-cursor]", { display: "none" }); // } }); }); // }); // }); //----------------------------------------------// //----------------------------------------------// // [data-preloader-wrap] // // Shows/Hides the preloader based on sessionStorage, sets sessionStorage, animates the preloader, scrolls window to top. // document.addEventListener("DOMContentLoaded", (event) => { // document.fonts.ready.then(() => { // let mm = gsap.matchMedia(); // }); // }); gsap.utils.toArray(".faq_card_wrap").forEach((el) => { gsap.fromTo( el, { yPercent: 110 }, { yPercent: 0, duration: 0.5, ease: "power1.inOut", scrollTrigger: { trigger: el, start: "top 110%", end: "bottom top", toggleActions: "play none none reverse", }, } ); }); // gsap.utils.toArray(".heading-section_main_icon_wrap").forEach((el) => { // gsap.fromTo( // el, // { scale: 2 }, // { // scale: 1, // ease: "power1.inOut", // scrollTrigger: { // trigger: el, // start: "top bottom", // end: "bottom bottom", // scrub: true, // }, // } // ); // }); // lottieRivePreload(); $("[data-modal=sponsor]").each(function () { let modal = $(this); let bg = $(this).find(".sponsor_overlay"); let form = $(this).find(".sponsor_form"); let close = $(this).find("[data-modal-close=sponsor]"); let trigger = $("[data-modal-trigger=sponsor]"); let tl = gsap.timeline({ paused: true }); tl.to(modal, { opacity: 0, duration: 0, }); tl.to(modal, { display: "flex", duration: 0 }); tl.to(modal, { opacity: 1, duration: mainDuration, ease: mainEase, }); tl.fromTo( form, { yPercent: 50, opacity: 0, }, { yPercent: 0, opacity: 1, duration: mainDuration, ease: mainEase, }, "<" ); trigger.on("click", function () { console.log("sponsor modal open"); lenis.stop(); tl.play(); }); close.on("click", function () { console.log("close"); tl.reverse(); lenis.start(); }); bg.on("click", function () { console.log("close"); tl.reverse(); lenis.start(); }); }); $("#newsletter-form").each(function () { document .querySelector("#newsletter-form") .addEventListener("submit", async function (e) { e.preventDefault(); const email = document.querySelector("#email").value; // const firstName = document.querySelector("#first_name").value; const firstName = document.querySelector("#name").value; // const lastName = document.querySelector("#last_name").value; // const gender = document.querySelector("#gender").value; // const country = document.querySelector("#country").value; // const interests = Array.from( // document.querySelectorAll('input[name="interest"]:checked') // ) // .map((checkbox) => checkbox.value) // .join(","); const payload = { networkId: "1102", email, firstName, // lastName, // gender, // country, // custom: [ // { // key: "custom:MultiChoice:My Interests", // value: interests, // }, // ], marketingLists: [ { id: "3366", status: "subscribed", }, ], }; const username = "8cBwNBvH2brPKwvg"; const password = "zl2AiQDzIXWGJ2J1nYhldcLk"; const auth = btoa(`${username}:${password}`); try { const response = await fetch( "https://api-ie.beonic.io/v4/api/user?upsert=true", { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Basic ${auth}`, }, body: JSON.stringify(payload), } ); const result = await response.json(); console.log("Beonic API response:", result); // Show success message to user here } catch (error) { console.error("Error submitting to Beonic:", error); // Show error message to user here } }); }); $("[year-dummy]").on("click", function () { $("[year-clear]").trigger("click"); }); $("[category-dummy]").on("click", function () { $("[category-clear]").trigger("click"); }); $("[award-dummy]").on("click", function () { $("[award-clear]").trigger("click"); }); } globalScript(); function menuScript() { console.log("mobileMenu"); gsap.set(".mobile_menu", { clipPath: "polygon(0% 0%, 100% 0%, 100% 0%, 0% 0%)", }); let menuTl = gsap.timeline({ paused: true }); menuTl.fromTo( $(".page_main").children().not(".g_new-nav_component, .mobile_menu"), { y: "0", }, { y: "100vh", ease: "power2.out", duration: 2.4, } ); menuTl.fromTo( "[data-nav]", { backgroundColor: "auto" }, { backgroundColor: "transparent" }, "<" ); menuTl.fromTo( ".g_new-nav_mobile_contain", { color: "auto" }, { color: "#FFF" }, "<" ); menuTl.fromTo(".mobile_menu", { display: "none" }, { display: "flex" }, "<"); menuTl.fromTo( ".mobile_menu", { clipPath: "polygon(0% 0%, 100% 0%, 100% 0%, 0% 0%)", height: "0vh", }, { clipPath: "polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%)", height: "100vh", duration: 0.7, ease: "power2.out", }, "<" ); menuTl.fromTo( $(".menu_link_list .u-text-style-h3"), { clipPath: "polygon(0% 0%, 100% 0%, 100% 0%, 0% 0%)", yPercent: 100 }, { clipPath: "polygon(0% 0%, 130% 0%, 130% 130%, 0% 130%)", yPercent: 0, duration: 1.8, ease: "expo.out", }, "<50%" ); let isMenuOpen = false; $(".g_new-nav_btn_wrap").on("click", function () { if (!isMenuOpen) { menuTl.timeScale(1).play(); $(".g_new-nav_component").removeClass("open"), $(".g_new-nav_btn_wrap").addClass("open"), menuTl.call(() => lenis.stop(), null, 0.01); isMenuOpen = true; } else { menuTl.timeScale(1.5).reverse(); $(".g_new-nav_btn_wrap").removeClass("open"), (isMenuOpen = false); } }); menuTl.eventCallback("onComplete", () => { isMenuOpen = true; }); menuTl.eventCallback("onReverseComplete", () => { isMenuOpen = false; $(".g_new-nav_component").addClass("open"); lenis.start(); }); } function filterScript() { console.log("filterScript"); $(document).ready(function () { function filterWinnerItems() { const checkedFilters = { year: [], category: [], award: [], }; $(".winner_section .dropdown_checkbox:checked").each(function () { const field = $(this).attr("fs-list-field"); const value = $(this).attr("fs-list-value"); if (field && value && checkedFilters[field]) { checkedFilters[field].push(value); } }); const searchVal = $(".search_field").val(); const searchTerm = searchVal ? searchVal.toLowerCase().trim() : ""; $(".winner_item, .news_item, .judges_item").each(function () { const $item = $(this); let shouldShow = true; ["year", "category", "award"].forEach(function (field) { if (checkedFilters[field].length > 0) { const $fieldElements = $item.find(`[fs-list-field="${field}"]`); let fieldMatches = false; $fieldElements.each(function () { const itemValue = $(this).text().trim(); if (checkedFilters[field].includes(itemValue)) { fieldMatches = true; return false; } }); if (!fieldMatches) { shouldShow = false; } } }); if (searchTerm && shouldShow) { const itemText = $item.text().toLowerCase(); if (!itemText.includes(searchTerm)) { shouldShow = false; } } $item.css("display", shouldShow ? "block" : "none"); }); } function updateActiveClasses() { $(".winner_section .dropdown_checkbox").each(function () { const $checkbox = $(this); const $container = $checkbox.closest(".dropdown_checkbox_holder"); if ( $checkbox.is(":checked") && $checkbox.attr("fs-list-activeclass") === "is-list-active" ) { $container.addClass("is-list-active"); } else { $container.removeClass("is-list-active"); } }); } $(".winner_section .dropdown_checkbox").on("change", function () { updateActiveClasses(); filterWinnerItems(); }); $(".clear_all").on("click", function () { let $dropdownList = $(this).closest(".dropdown_list"); if ($dropdownList.length === 0) { $dropdownList = $(this).siblings(".dropdown_list"); } if ($dropdownList.length === 0) { $dropdownList = $(this).parent().find(".dropdown_list"); } if ($dropdownList.length === 0) { $dropdownList = $(this) .closest(".dropdown_container") .find(".dropdown_list"); } let $checkboxes = $dropdownList.find(".dropdown_checkbox"); if ($checkboxes.length === 0) { $checkboxes = $dropdownList.find('input[type="checkbox"]'); } if ($checkboxes.length === 0) { $checkboxes = $dropdownList.find("input"); } $checkboxes.prop("checked", false).trigger("change"); updateActiveClasses(); filterWinnerItems(); }); $(".main_clear_all").on("click", function () { $(".winner_section .dropdown_checkbox").prop("checked", false); $(".search_field").val(""); updateActiveClasses(); filterWinnerItems(); }); $(".search_field").on("input", function () { filterWinnerItems(); $(".blue_result").text($(this).val()); }); $(".search_field") .on("focus", function () { $(".search_results").css("display", "flex"); }) .on("blur", function () { $(".search_results").css("display", "none"); }); $(".winner_dropdown").on("click", function (e) { e.stopPropagation(); ScrollTrigger.refresh(); $(".winner_dropdown").removeClass("active"); $(".dropdown_container").removeClass("open"); $(".winner_dropdown").css("z-index", ""); $(this).addClass("active"); $(this).css("z-index", "2"); $(this).find(".dropdown_container").addClass("open"); $(this).find(".winner_dropdown_arrow").css("transform", "rotate(180deg)"); }); $(document).on("click", function () { ScrollTrigger.refresh(); $(".dropdown_container").removeClass("open"); $(".winner_dropdown").css("z-index", ""); $(".winner_dropdown_arrow").css("transform", "rotate(0deg)"); $(".winner_dropdown").removeClass("active"); }); $(".winner_dropdown .w-checkbox, .search_field").click(function () { $(".winner_mid").css("display", "flex"); }); $(".main_clear_all").click(function () { $(".winner_mid").css("display", "none"); gsap.delayedCall(0.1, function () { $(".winner_mid").css("display", "none"); $(".dropdown_container").removeClass("open"); $(".winner_dropdown").removeClass("active"); }); }); // Initial run updateActiveClasses(); filterWinnerItems(); }); } function homeScript() { console.log("homeScript"); // attribute value checker function attr(defaultVal, attrVal) { const defaultValType = typeof defaultVal; if (typeof attrVal !== "string" || attrVal.trim() === "") return defaultVal; if (attrVal === "true" && defaultValType === "boolean") return true; if (attrVal === "false" && defaultValType === "boolean") return false; if (isNaN(attrVal) && defaultValType === "string") return attrVal; if (!isNaN(attrVal) && defaultValType === "number") return +attrVal; return defaultVal; } // marquee component $("[tr-marquee-element='component']").each(function (index) { let componentEl = $(this), panelEl = componentEl.find("[tr-marquee-element='panel']"), triggerHoverEl = componentEl.find("[tr-marquee-element='triggerhover']"), triggerClickEl = componentEl.find("[tr-marquee-element='triggerclick']"); let speedSetting = attr(100, componentEl.attr("tr-marquee-speed")), verticalSetting = attr(false, componentEl.attr("tr-marquee-vertical")), reverseSetting = attr(false, componentEl.attr("tr-marquee-reverse")), scrollDirectionSetting = attr( false, componentEl.attr("tr-marquee-scrolldirection") ), scrollScrubSetting = attr( false, componentEl.attr("tr-marquee-scrollscrub") ), moveDistanceSetting = -100, timeScaleSetting = 1, pausedStateSetting = false; if (reverseSetting) moveDistanceSetting = 100; let marqueeTimeline = gsap.timeline({ repeat: -1, onReverseComplete: () => marqueeTimeline.progress(1), }); if (verticalSetting) { speedSetting = panelEl.first().height() / speedSetting; marqueeTimeline.fromTo( panelEl, { yPercent: 0 }, { yPercent: moveDistanceSetting, ease: "none", duration: speedSetting } ); } else { speedSetting = panelEl.first().width() / speedSetting; marqueeTimeline.fromTo( panelEl, { xPercent: 0 }, { xPercent: moveDistanceSetting, ease: "none", duration: speedSetting } ); } let scrubObject = { value: 1 }; ScrollTrigger.create({ trigger: "body", start: "top top", end: "bottom bottom", onUpdate: (self) => { if (!pausedStateSetting) { if (scrollDirectionSetting && timeScaleSetting !== self.direction) { timeScaleSetting = self.direction; marqueeTimeline.timeScale(self.direction); } if (scrollScrubSetting) { let v = self.getVelocity() * 0.006; v = gsap.utils.clamp(-60, 60, v); let scrubTimeline = gsap.timeline({ onUpdate: () => marqueeTimeline.timeScale(scrubObject.value), }); scrubTimeline.fromTo( scrubObject, { value: v }, { value: timeScaleSetting, duration: 0.5 } ); } } }, }); function pauseMarquee(isPausing) { pausedStateSetting = isPausing; let pauseObject = { value: 1 }; let pauseTimeline = gsap.timeline({ onUpdate: () => marqueeTimeline.timeScale(pauseObject.value), }); if (isPausing) { pauseTimeline.fromTo( pauseObject, { value: timeScaleSetting }, { value: 0, duration: 0.5 } ); triggerClickEl.addClass("is-paused"); } else { pauseTimeline.fromTo( pauseObject, { value: 0 }, { value: timeScaleSetting, duration: 0.5 } ); triggerClickEl.removeClass("is-paused"); } } if (window.matchMedia("(pointer: fine)").matches) { triggerHoverEl.on("mouseenter", () => pauseMarquee(true)); triggerHoverEl.on("mouseleave", () => pauseMarquee(false)); } triggerClickEl.on("click", function () { !$(this).hasClass("is-paused") ? pauseMarquee(true) : pauseMarquee(false); }); }); $("[data-home-reveal]").each(function () { let trigger = $(this); let el = $(this).find($("[data-mask-object]")); let tl = gsap.timeline({ scrollTrigger: { trigger: trigger, start: "top top", end: "bottom bottom", scrub: 0.5, }, }); onDesktop(() => { tl.to(el, { maskSize: "165vw", }); }); onMobile(() => { tl.to(el, { maskSize: "400vw", }); }); }); $(".modal_trigger_btn_wrap").on("click", function () { document.querySelector("[f-data-video='play-button']")?.click(); }); $(".full_vid_close").on("click", function () { document.querySelector("[f-data-video='pause-button']")?.click(); gsap.fromTo( ".full_vid_holder", { clipPath: "polygon(0% 100%, 100% 100%, 100% 0%, 0% 0%)", pointerEvents: "auto", }, { clipPath: "polygon(0% 100%, 100% 100%, 100% 100%, 0% 100%)", pointerEvents: "none", duration: 0.5, ease: "power2.out", } ); gsap.fromTo( ".full_vid_close", { pointerEvents: "auto", }, { pointerEvents: "none", } ); }); onDesktop(() => { $(".text-block-section_main_wrap").each(function () { let wrap = $(this); let insetTl = gsap.timeline({ scrollTrigger: { trigger: wrap, start: "top bottom", end: "top 50%", scrub: 0.2, }, }); insetTl.to(wrap, { width: "100%", }); }); }); $(".reveal-section_main_contain").each(function () { const section = $(this); const playBtn = $(this).find(".modal_trigger_btn_wrap"); const playBtnTrigger = $(this).find(".reveal-section_main_trigger"); let tl = gsap.timeline({ scrollTrigger: { trigger: playBtnTrigger, start: "bottom -50%", end: "bottom -50%", toggleActions: "play none reverse none", // scrub: 1, // markers: true, }, }); tl.fromTo( playBtn, { clipPath: "circle(0% at 50% 50%)", // scale: "0%", }, { clipPath: "circle(50% at 50% 50%)", // scale: "100%", // duration: 2, // ease: "bounce.out", } ); }); onDesktop(() => { let prevScroll = window.scrollY; let topEl = $("[data-lagger-top]"); let bottomEl = $("[data-lagger-bottom]"); let setTopY = gsap.quickTo(topEl, "yPercent", { duration: 0.5, ease: "power2.out", }); let setBottomY = gsap.quickTo(bottomEl, "yPercent", { duration: 0.5, ease: "power2.out", }); gsap.ticker.add(() => { let currentScroll = window.scrollY; let velocity = currentScroll - prevScroll; prevScroll = currentScroll; let topLag = gsap.utils.clamp(-50, 50, -velocity * 0.5); let bottomLag = gsap.utils.clamp(-30, 30, -velocity * 0.3); setTopY(-topLag); setBottomY(-bottomLag); if (Math.abs(velocity) < 1) { setTopY(0); setBottomY(0); } }); }); // document.addEventListener("DOMContentLoaded", (event) => { // document.fonts.ready.then(() => { // let mm = gsap.matchMedia(); $("[data-home-trophies]").each(function () { const trigger = $(this); const topEl = $("[data-trophies-top-shapes]"); const bottomEl = $("[data-trophies-bottom-shapes]"); let tl = gsap.timeline({ scrollTrigger: { trigger: trigger, start: "top 75%", end: "bottom top", scrub: true, }, }); tl.to(topEl, { xPercent: 33, }); tl.to( bottomEl, { xPercent: -33, }, "<" ); }); // gsap.set("[intro-text]", { opacity: 1 }); const headlineSplit = SplitText.create("[intro-text]", { type: "words", wordsClass: "word++", ignore: ".text-block-section_main_icon", }); const tl = gsap.timeline({ scrollTrigger: { trigger: "[intro-text]", start: "top 80%", end: "bottom top", toggleActions: "play none none none", }, }); tl.fromTo( "[intro-text] > *", { yPercent: 100, clipPath: "polygon(0% 0%, 100% 0%, 100% 0%, 0% 0%)", }, { yPercent: 0, clipPath: "polygon(0% 0%, 120% 0%, 120% 120%, 0% 120%)", stagger: { each: 0.01, }, duration: 0.8, ease: "expo.out", } ); } function homeHeroSwiper() { console.log("homeHeroSlider"); const swiper = new Swiper(".swiper.home-hero", { grabCursor: true, loop: true, effect: "creative", speed: 1000, creativeEffect: { prev: { shadow: true, translate: [0, 0, -400], }, next: { translate: ["100%", 0, 0], }, }, autoplay: { delay: 3000, disableOnInteraction: false, pauseOnMouseEnter: true, waitForTransition: false, reverseDirection: false, }, simulateTouch: true, allowTouchMove: true, grabCursor: true, mousewheel: { enabled: true, sensitivity: 1, }, keyboard: { enabled: true, onlyInViewport: true, }, // navigation: { // nextEl: $(this).find(".swiper-next")[0], // prevEl: $(this).find(".swiper-prev")[0], // }, }); } homeHeroSwiper(); function homeEnterAnimation() { console.log("homeEnterAnimation"); $("[data-home-hero]").each(function () { // console.log(homeHero); let bg = $("[data-hero-bg]"); let btn = $("[data-hero-btn]"); let slider = $("[data-hero-slider]"); let navBanner = $("[data-nav-banner]"); let navInner = $("[data-nav-inner]"); introTl.from( bg, { yPercent: preloaderShown ? 0 : 25, opacity: preloaderShown ? 0 : 1, scale: 1.25, duration: preloaderShown ? 2 : 1.75, ease: "power3.inOut", }, "<" ); document.querySelectorAll("[data-hero-heading]").forEach((text) => { SplitText.create(text, { type: "lines", autoSplit: true, mask: "lines", linesClass: "line", onSplit(self) { return gsap .timeline({ scrollTrigger: { trigger: text, start: "top bottom", end: "top bottom", toggleActions: "play none none reset", onComplete: () => self.revert(), }, }) .from(self.lines, { yPercent: 130, duration: preloaderShown ? 1.5 : mainDuration, delay: preloaderShown ? preloaderDelay + 0.5 : preloaderDelay + 0.75, stagger: { amount: 0.25 }, ease: "power3.out", }); }, }); gsap.set(text, { opacity: 1 }); }); introTl.from( btn, { yPercent: 110, duration: preloaderShown ? 1 : 0.75, ease: "power3.out", }, "<1.25" ); introTl.from( slider, { opacity: 0, rotation: -2.5, // rotateZ: 5, // rotateX: 5, // rotateY: 10, scale: 0.8, yPercent: 25, duration: preloaderShown ? 1.5 : 1, ease: "power3.out", }, "<-.25" ); introTl.fromTo( navInner, { y: "-150%", }, { y: "-2rem", duration: preloaderShown ? 1.5 : 1, ease: "power3.out", }, "<" ); // introTl.from( // navBanner, // { // yPercent: -100, // duration: preloaderShown ? 1.5 : 1, // ease: "power3.out", // }, // "<" // ); introTl.play(); // $("[data-hero-bg]").each(function () { // let trigger = $("[data-home-hero]"); // let el = $(this); // let tl = gsap.timeline({ // scrollTrigger: { // trigger: trigger, // start: "top top", // end: "bottom top", // scrub: true, // }, // }); // tl.to(el, { // yPercent: 5, // }); // }); //-------- NEWS SWIPER --------// // $(".hero_main_slider_wrap").each(function (index) { // if (isDesktop) { // const imgSwiper = new Swiper( // $(this).find(".swiper.is-hero-images")[0], // { // effect: "fade", // fadeEffect: { // crossFade: true, // }, // speed: 500, // autoplay: { // delay: 2500, // }, // navigation: { // nextEl: $(this).find(".swiper-next")[0], // prevEl: $(this).find(".swiper-prev")[0], // }, // } // ); // const bgSwiper = new Swiper( // $(this).find(".swiper.is-hero-bg")[0], // { // slidesPerView: 1, // effect: "fade", // } // ); // const textSwiper = new Swiper( // $(this).find(".swiper.is-hero-text")[0], // { // slidesPerView: 1, // } // ); // imgSwiper.controller.control = [bgSwiper, textSwiper]; // textSwiper.controller.control = [bgSwiper, imgSwiper]; // } else { // const textSwiper = new Swiper( // $(this).find(".swiper.is-hero-text")[0], // { // speed: 500, // autoplay: { // delay: 2500, // }, // navigation: { // nextEl: $(this).find(".swiper-next")[0], // prevEl: $(this).find(".swiper-prev")[0], // }, // } // ); // const bgSwiper = new Swiper( // $(this).find(".swiper.is-hero-bg")[0], // { // slidesPerView: 1, // effect: "fade", // } // ); // textSwiper.controller.control = [bgSwiper]; // } // var elements = document.getElementsByClassName( // "hero_main_slider_title" // ); // var limiteCaracteres = 70; // for (var i = 0; i < elements.length; i++) { // var currentElement = elements[i]; // if (currentElement.textContent.length > limiteCaracteres) { // currentElement.textContent = // currentElement.textContent.slice(0, limiteCaracteres) + // "..."; // } // } // }); }); } function categoryScript() { console.log("categoryScript"); $(".anchor_wrap.top").on("click", function () { $(".anchor_link_wrap").toggleClass("show"); }); $(".anchor_link_holder .anchor_wrap").on("click", function () { $(".anchor_link_wrap").removeClass("show"); }); } function judgesScript() { console.log("judgesScript"); document.querySelectorAll(".judges_item").forEach((holder) => { const logoContainer = holder.querySelector(".judge_lottie"); const path = logoContainer.getAttribute("judges-lottie"); const animation = lottie.loadAnimation({ container: logoContainer, renderer: "svg", loop: false, autoplay: false, path: path, }); holder.addEventListener("mouseenter", () => { animation.setDirection(1); animation.play(); }); holder.addEventListener("mouseleave", () => { animation.setDirection(-1); animation.play(); }); }); // FLIP Modal Animation document.querySelectorAll("[item-main]").forEach((main) => { const move = main.querySelector("[item-move]"); const final = document.querySelector("[item-final]"); const modalWrapper = document.querySelector(".modal_wrapper"); const modalOverlay = document.querySelector(".modal_overlay"); const close = document.querySelector("[modal-close]"); const btnClose = document.querySelectorAll( ".modal_close.partners, .judge_social" ); const allFinalSlugs = document.querySelectorAll("[final-slug]"); const rightContent = document.querySelector(".judges_modal_wrapper"); const contentHolder = document.querySelector(".modal_bg"); const thumbContent = document.querySelector(".judges_select_bot"); const modalBg = document.querySelector(".modal_bg"); const modalRight = document.querySelector(".partners_modal_right"); const btnLineColor = document.querySelector(".close_icon path"); const judgeSocial = document.querySelector(".judge_social"); let state; main.addEventListener("click", () => { const originalParent = move.parentElement; document.querySelectorAll(".judges_item").forEach((item) => { item.style.zIndex = "1"; }); lenis.stop(); main.closest(".judges_item").style.zIndex = "17"; main.closest(".judges_item").style.pointerEvents = "none"; const partnersModalRight = document.querySelector( ".partners_modal_right.u-vflex-center-center" ); const mainValue = main.getAttribute("item-main"); const btnColor = main.getAttribute("btn-color"); const btnArrow = main.getAttribute("btn-arrow-color"); const modalColor = main.getAttribute("modal-color"); const textColor = main.getAttribute("item-text"); if (btnColor) { btnClose.forEach((btn) => btn.setAttribute("bg-color", btnColor)); } if (btnArrow) { btnLineColor.setAttribute("bg-color", btnArrow); } if (modalColor) { modalBg.setAttribute("bg-color", modalColor); } if (textColor) { modalRight.setAttribute("text-color", textColor); } allFinalSlugs.forEach((slug) => { slug.style.display = slug.getAttribute("final-slug") === mainValue ? "block" : "none"; }); state = Flip.getState(move); final.appendChild(move); gsap.timeline().add( Flip.from(state, { duration: 1, delay: 0, ease: "expo.inOut", absolute: true, }) ); let modalOpen = gsap.timeline(); modalOpen.set(btnClose, { pointerEvents: "auto" }); modalOpen.set(modalWrapper, { opacity: 1 }); modalOpen.set(contentHolder, { clipPath: "polygon(100% 0%, 100% 0%, 100% 100%, 100% 100%)", }); modalOpen.set(rightContent, { clipPath: "polygon(0% 0%, 0% 0%, 0% 100%, 0% 100%)", }); modalOpen.set(close, { pointerEvents: "auto" }); modalOpen.set(partnersModalRight, { opacity: 1, clearProps: "all" }); modalOpen.fromTo( modalOverlay, { opacity: 0 }, { opacity: 1, duration: 1, ease: "power1.out" } ); onDesktop(() => { modalOpen.fromTo( contentHolder, { clipPath: "polygon(100% 0%, 100% 0%, 100% 100%, 100% 100%)" }, { clipPath: "polygon(100% 0%, 0% 0%, 0% 100%, 100% 100%)", duration: 1, ease: "expo.out", }, "<+0.5" ); }); onMobile(() => { modalOpen.fromTo( contentHolder, { clipPath: "polygon(0% 0%, 100% 0%, 100% 0%, 0% 0%)" }, { clipPath: "polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%)", duration: 1.5, ease: "expo.out", }, "<+0.5" ); }); modalOpen.fromTo( thumbContent, { opacity: 0 }, { opacity: 1, duration: 0.1, ease: "power1.out", } ); modalOpen.fromTo( partnersModalRight, { opacity: 0, pointerEvents: "none" }, { opacity: 1, pointerEvents: "auto", duration: 0.5, ease: "power1.out", }, "<-0.5" ); modalOpen.fromTo( rightContent, { clipPath: "polygon(0% 0%, 0% 0%, 0% 100%, 0% 100%)" }, { clipPath: "polygon(100% 0%, 0% 0%, 0% 100%, 100% 100%)", duration: 1, ease: "expo.out", }, "<+0.6" ); modalOpen.fromTo( btnClose, { opacity: 0 }, { opacity: 1, duration: 0.4, ease: "expo.out" }, "<-0.5" ); // FIXED: Handle close button event listeners properly const closeHandler = () => { const partnersModalRight = document.querySelector( ".partners_modal_right.u-vflex-center-center" ); lenis.start(); gsap.to(modalOverlay, { opacity: 0, duration: 0.5, }); gsap.to(partnersModalRight, { opacity: 0, duration: 0.1 }, "<"); gsap.to(btnClose, { opacity: 0, duration: 0.4 }, "<-0.5"); onDesktop(() => { gsap.to(contentHolder, { clipPath: "polygon(100% 0%, 100% 0%, 100% 100%, 100% 100%)", duration: 0.9, ease: "expo.out", onComplete: () => { gsap.set(modalWrapper, { opacity: 0, pointerEvents: "none" }); gsap.set(close, { pointerEvents: "none" }); gsap.set(modalOverlay, { pointerEvents: "none" }); gsap.to(modalOverlay, { opacity: 0, duration: 1 }); gsap.set(partnersModalRight, { pointerEvents: "none" }); }, }); }); onMobile(() => { gsap.to(contentHolder, { clipPath: "polygon(0% 0%, 100% 0%, 100% 0%, 0% 0%)", duration: 0.3, ease: "expo.out", onComplete: () => { gsap.set(modalWrapper, { opacity: 0, pointerEvents: "none" }); gsap.set(close, { pointerEvents: "none" }); gsap.set(modalOverlay, { pointerEvents: "none" }); gsap.to(modalOverlay, { opacity: 0, duration: 1 }); gsap.set(partnersModalRight, { pointerEvents: "none" }); }, }); }); const returnState = Flip.getState(move); setTimeout(() => { originalParent.appendChild(move); gsap.timeline().add( Flip.from(returnState, { duration: 0.8, ease: "expo.out", }) ); }, 200); setTimeout(() => { main.closest(".judges_item").style.zIndex = "1"; main.closest(".judges_item").style.pointerEvents = "auto"; }, 2000); }; // Add event listener to the single close button close.addEventListener("click", closeHandler, { once: true }); // Add event listeners to each button in the btnClose NodeList btnClose.forEach((btn) => { btn.addEventListener("click", closeHandler, { once: true }); }); }); }); } function winnersDetailScript() { console.log("winnersDetailScript"); $(".detail_swiper").each(function () { const $this = $(this); const swiperEl = $this.find(".swiper.detail")[0]; const detailSwiper = new Swiper(swiperEl, { slidesPerView: 1.5, spaceBetween: 16, parallax: true, loop: true, speed: 1000, autoplay: { delay: 3000, }, navigation: { nextEl: $this.find(".swiper-next")[0], prevEl: $this.find(".swiper-prev")[0], }, pagination: { el: $this.find(".swiper-pagination-progressbar")[0], type: "progressbar", }, }); }); $("[copied]").on("click", function () { navigator.clipboard.writeText(window.location.href).then(() => { const holder = $(this).find(".copied_holder"); holder.addClass("active"); setTimeout(() => { holder.removeClass("active"); }, 2000); }); }); } function contactScript() { console.log("contactScript"); // let mm = gsap.matchMedia(); $("[data-page=contact]").each(function () { let page = $(this); let navBanner = $("[data-nav-banner]"); let navInner = $("[data-nav-inner]"); let introTl = gsap.timeline({ paused: true, delay: preloaderDelay, onComplete: () => { scrollTrigger.refresh(); }, }); introTl.to(page, { opacity: 1, duration: preloaderShown ? 2 : 1.75, ease: mainEase, }); introTl.from( navInner, { yPercent: -150, duration: preloaderShown ? 1.5 : 1, ease: mainEase, }, "<" ); introTl.from( navBanner, { yPercent: -100, duration: preloaderShown ? 1.5 : 1, ease: mainEase, }, "<" ); $(".placeholder_holder").on("click", function () { $(this).find(".placeholder").css("display", "none"); }); $("[data-contact-form]").each(function () { let contactBlocks = $("[data-contact-block]"); introTl.from( contactBlocks, { yPercent: 110, opacity: 0, duration: preloaderShown ? 1.5 : 1, ease: "power3.out", stagger: { amount: 0.25, }, }, "<" ); introTl.play(); document.querySelectorAll("[data-contact-heading]").forEach((text) => { SplitText.create(text, { type: "lines", autoSplit: true, mask: "lines", linesClass: "line", onSplit(self) { return gsap .timeline({ onComplete: () => self.revert(), }) .from(self.lines, { yPercent: 130, duration: preloaderShown ? 1.5 : mainDuration, delay: preloaderDelay + 0.25, stagger: { amount: 0.25 }, ease: "power3.out", }); }, }); gsap.set(text, { opacity: 1 }); }); }); $("[data-modal=sponsor]").each(function () { let modal = $(this); let bg = $(this).find(".sponsor_overlay"); let form = $(this).find(".sponsor_form"); let close = $(this).find("[data-modal-close=sponsor]"); let trigger = $("[data-modal-trigger=sponsor]"); let tl = gsap.timeline({ paused: true }); tl.to(modal, { opacity: 0, duration: 0 }); tl.to(modal, { display: "flex", duration: 0 }); tl.to(modal, { opacity: 1, duration: mainDuration, ease: mainEase, }); tl.fromTo( form, { yPercent: 50, opacity: 0, }, { yPercent: 0, opacity: 1, duration: mainDuration, ease: mainEase, }, "<" ); trigger.on("click", function () { tl.play(); }); close.on("click", function () { console.log("close"); tl.reverse(); }); bg.on("click", function () { console.log("close"); tl.reverse(); }); }); }); } function pageFailScript() { console.log("pageFail"); document.addEventListener("DOMContentLoaded", (event) => { document.fonts.ready.then(() => { breakpoint.add( { isMobile: "(max-width: 991px)", isDesktop: "(min-width: 992px)", }, (context) => { let { isDesktop, isMobile } = context.conditions; $("[data-page=404]").each(function () { let page = $(this); let navBanner = $("[data-nav-banner]"); let navInner = $("[data-nav-inner]"); let introTl = gsap.timeline({ paused: true, delay: preloaderDelay, onComplete: () => { scrollTrigger.refresh(); }, }); introTl.to(page, { opacity: 1, duration: preloaderShown ? 2 : 1.75, ease: mainEase, }); introTl.from( navInner, { yPercent: -150, duration: preloaderShown ? 1.5 : 1, ease: "power3.out", }, "<" ); introTl.from( navBanner, { yPercent: -100, duration: preloaderShown ? 1.5 : 1, ease: "power3.out", }, "<" ); introTl.play(); document.querySelectorAll("[data-404-heading]").forEach((text) => { SplitText.create(text, { type: "lines", autoSplit: true, mask: "lines", linesClass: "line", onSplit(self) { return gsap .timeline({ onComplete: () => self.revert(), }) .from(self.lines, { yPercent: 130, duration: preloaderShown ? 1.5 : mainDuration, delay: preloaderDelay + 0.25, stagger: { amount: 0.25 }, ease: "power3.out", }); }, }); gsap.set(text, { opacity: 1 }); }); }); } ); }); }); } function lottieRivePreload() { console.log("lottieRivePreload"); //----------------------------------------------// // .lottie_hover // document.querySelectorAll(".lottie-hover").forEach((holder) => { const logoContainer = holder.querySelector(".lottie_icon_wrap"); const path = logoContainer.getAttribute("data-lottie-hover"); const animation = lottie.loadAnimation({ container: logoContainer, renderer: "svg", loop: false, autoplay: false, path: path, }); holder.addEventListener("mouseenter", () => { animation.setDirection(1); animation.play(); }); holder.addEventListener("mouseleave", () => { animation.setDirection(-1); animation.play(); }); }); //----------------------------------------------// // .lottie-hover-canvas $(".lottie-hover-canvas").each(function () { const holder = this; const logoContainer = holder.querySelector(".lottie_icon_wrap"); if (!logoContainer) return; // <-- Prevent error const path = logoContainer.getAttribute("data-lottie-hover"); const animation = lottie.loadAnimation({ container: logoContainer, renderer: "canvas", loop: false, autoplay: false, path: path, }); holder.addEventListener("mouseenter", () => { animation.setDirection(1); animation.play(); }); holder.addEventListener("mouseleave", () => { animation.setDirection(-1); animation.play(); }); }); // [data-lottie-path] document.querySelectorAll("[data-lottie-path]").forEach(function (holder) { const path = holder.getAttribute("data-lottie-path"); const lottieLoop = lottie.loadAnimation({ container: holder, renderer: "svg", loop: true, autoplay: false, path: path, }); lottieLoop.play(); }); // [data-lottie-path-swiper] document.querySelectorAll("[data-lottie-path-swiper]").forEach((holder) => { const path = holder.getAttribute("data-lottie-path-swiper"); const lottieSwiper = lottie.loadAnimation({ container: holder, renderer: "svg", loop: true, autoplay: false, path: path, }); lottieSwiper.play(); }); // [data-rive-path] document.querySelectorAll("[data-rive-path]").forEach((holder) => { console.log("importRive"); const path = holder.getAttribute("data-rive-path"); const canvas = document.createElement("canvas"); const riveInstance = new rive.Rive({ src: path, canvas: canvas, autoplay: true, stateMachines: ["State Machine 1"], layout: new rive.Layout({ fit: rive.Fit.Fill, alignment: rive.Alignment.Center, }), onLoad: () => { holder.appendChild(canvas); const inputs = riveInstance.stateMachineInputs("State Machine 1"); const hoverInput = inputs.find((input) => input.name === "hover"); if (hoverInput) { holder.addEventListener( "mouseenter", () => (hoverInput.value = true) ); holder.addEventListener( "mouseleave", () => (hoverInput.value = false) ); } }, }); }); } // lottieRivePreload(); function pageIntroAnimation() { console.log("pageIntroAnimations"); let introTl = gsap.timeline({}); if (document.querySelector(".page_main")) { introTl.fromTo( ".hero_alt_layout, .hero_cms_layout, .detail_intro, .news_holder, .form-section_main_content, .hero_legal_wrap", { yPercent: 60, }, { yPercent: 0, delay: 0.9, duration: 1.75, ease: "expo.out", onComplete: () => { ScrollTrigger.refresh(); }, } ); introTl.from( "[data-hero-bg]", { // yPercent: visited ? 0 : 25, // opacity: visited ? 1 : 0, scale: 1.25, // duration: visited ? 1.75 : 2, duration: 2.5, ease: "expo.out", // delay: visited ? 0 : 4, }, "<" ); introTl.fromTo( "[data-nav]", { yPercent: -100, }, { yPercent: 0, duration: 1.75, ease: "expo.out", }, "<+0.5" ); } // $("[data-barba-namespace=home]").each(function () { // $("[data-home-hero]").each(function () { // let heading = $("[data-top-heading-line-reveal]"); // }); // document // .querySelectorAll("[data-top-heading-line-reveal]") // .forEach((text) => { // SplitText.create("[data-top-heading-line-reveal]", { // type: "lines", // autoSplit: true, // mask: "lines", // linesClass: "line", // onSplit(self) { // return gsap // .timeline({ // scrollTrigger: { // trigger: "[data-top-heading-line-reveal]", // start: "top bottom", // end: "top bottom", // toggleActions: "play none none reset", // onComplete: () => self.revert(), // }, // }) // .from(self.lines, { // yPercent: 130, // duration: visited ? 1 : 1.5, // delay: visited ? 0 : 4.5, // stagger: { amount: 0.25 }, // ease: "power3.out", // }); // }, // }); // gsap.set("[data-top-heading-line-reveal]", { opacity: 1 }); // }); // }); } function pageOutroAnimation() { // $("body").removeClass("show-loader"); console.log("pageOutroAnimations"); let outroTl = gsap.timeline({}); if (document.querySelector(".page_main")) { outroTl.to("[data-nav]", { yPercent: -100, duration: 1.2, ease: "expo.out", onComplete: () => { $(".g_new-nav_component").remove(); }, }); } } var visited = false; function checkPreloader() { console.log("check preloader"); if (sessionStorage.getItem("visited") !== null) { $("body").removeClass("show-loader"); visited = true; // $("body").addClass("hide-loader"); } else { // runSplit(); visited = false; preloaderFunction(); } sessionStorage.setItem("visited", "true"); } function preloaderFunction() { console.log("preloader"); let wrap = $("[data-preloader-wrap]"); let progressBar = $("[data-preloader-progress-bar]"); let text = $("[data-preloader-text]"); let counter = $("[data-preloader-counter]"); let preloaderDuration = 3; let preloaderTl = gsap.timeline({ defaults: { ease: "expo.Out", }, onStart: () => { pageIntroAnimation(); }, }); preloaderTl.to(text, { opacity: 1, duration: 0.5, }); preloaderTl.to( progressBar, { scaleX: "30%", duration: 2.5, }, "<" ); preloaderTl.to( counter, { innerText: "30", duration: 2.5, snap: { innerText: 1, }, }, "<" ); preloaderTl.to(progressBar, { scaleX: "70%", duration: 0.5, }); preloaderTl.to( counter, { innerText: "70", duration: 0.5, snap: { innerText: 1, }, }, "<" ); preloaderTl.to(progressBar, { scaleX: "100%", duration: 1, }); preloaderTl.to( counter, { innerText: "100", duration: 1, snap: { innerText: 1, }, }, "<" ); preloaderTl.fromTo( progressBar, { clipPath: "polygon(100% 0%, 0% 0%, 0% 100%, 100% 100%)", }, { clipPath: "polygon(100% 0%, 100% 0%, 100% 100%, 100% 100%)", duration: 1.5, ease: "expo.out", }, "<90%" ); preloaderTl.to( wrap, { yPercent: -100, duration: 1.5, ease: "expo.inOut", onComplete: () => { gsap.set(".page_main", { maxHeight: "none", }); }, }, "<20%" ); preloaderTl.set(".preloader_main_wrap", { display: "none", }); } // PAGE TRANSITIONS x 4 const enterAnimationLR = (container) => { console.log("pageEnterLR"); $(container).addClass("fixed"); let pageEnterLR = gsap.timeline({ onStart: () => { pageIntroAnimation(); }, onComplete: () => { $(container).removeClass("fixed"); $(".transition_wrap").css("display", "none"); }, }); pageEnterLR.set($(".transition_wrap"), { display: "block", }); pageEnterLR.set($(".page_overlay"), { opacity: 0, }); pageEnterLR.set($(".transition.l-r"), { display: "flex", }); pageEnterLR.set($(".transition_slide.l-r"), { xPercent: 0, }); pageEnterLR.fromTo( $(".page_overlay"), { opacity: 1, }, { opacity: 0, duration: 0.4, ease: "power1.in", } ); pageEnterLR.fromTo( $(".transition_slide.l-r"), { xPercent: 0, }, { xPercent: 100, duration: 1.2, ease: "expo.in", stagger: { amount: 0.3, from: "end", }, }, "<" ); pageEnterLR.fromTo( $(".g_cursor"), { scale: 0, }, { scale: 3, duration: 1, ease: "power2.in", }, "<60%" ); pageEnterLR.to( $(".g_cursor"), { scale: 1, duration: 0.8, ease: "power2.out", }, "<95%" ); return pageEnterLR; }; const leaveAnimationLR = (container) => { console.log("pageLeaveLR"); let pageLeaveLR = gsap.timeline({ onStart: () => { pageOutroAnimation(); }, }); pageLeaveLR.fromTo( $(".transition_wrap"), { display: "none", }, { display: "block", } ); pageLeaveLR.to( $(".page_main"), { pointerEvents: "none", }, "<" ); pageLeaveLR.to( $(".g_cursor"), { scale: 0, duration: 0.2, ease: "power2.in", }, "<" ); pageLeaveLR.fromTo( $(".page_overlay"), { opacity: 0, }, { opacity: 1, duration: 0.4, ease: "power1.in", } ); pageLeaveLR.fromTo( $(".transition.l-r"), { display: "none", }, { display: "flex", }, "<" ); pageLeaveLR.fromTo( $(".transition_slide.l-r"), { xPercent: -100, }, { xPercent: 0, duration: 1, ease: "expo.out", stagger: { amount: 0.2, }, }, "<" ); return pageLeaveLR; }; //// const enterAnimationBT = (container) => { console.log("pageEnterBT"); $(container).addClass("fixed"); let pageEnterBT = gsap.timeline({ onStart: () => { pageIntroAnimation(); }, onComplete: () => { $(container).removeClass("fixed"); $(".transition_wrap").css("display", "none"); }, }); pageEnterBT.set($(".transition_wrap"), { display: "block", }); pageEnterBT.set($(".page_overlay"), { opacity: 0, }); pageEnterBT.set($(".transition.b-t"), { display: "flex", }); pageEnterBT.set($(".transition_slide.b-t"), { yPercent: 0, }); pageEnterBT.fromTo( $(".page_overlay"), { opacity: 1, }, { opacity: 0, duration: 0.4, ease: "power1.in", }, "<" ); pageEnterBT.fromTo( $(".transition_slide.b-t"), { yPercent: 0, }, { yPercent: -100, duration: 1.2, ease: "expo.in", stagger: { amount: 0.3, from: "start", }, }, "<" ); pageEnterBT.fromTo( $(".g_cursor"), { scale: 0, }, { scale: 3, duration: 1, ease: "power2.in", }, "<60%" ); pageEnterBT.to( $(".g_cursor"), { scale: 1, duration: 0.8, ease: "power2.out", }, "<95%" ); return pageEnterBT; }; const leaveAnimationBT = (container) => { console.log("pageLeaveBT"); let pageLeaveBT = gsap.timeline({ onStart: () => { pageOutroAnimation(); }, }); pageLeaveBT.to($(".page_main"), { pointerEvents: "none", }); pageLeaveBT.fromTo( $(".transition_wrap"), { display: "none", }, { display: "block", }, "<" ); pageLeaveBT.to( $(".g_cursor"), { scale: 0, duration: 0.2, ease: "power2.in", }, "<" ); pageLeaveBT.fromTo( $(".page_overlay"), { opacity: 0, }, { opacity: 1, duration: 0.4, ease: "power1.in", } ); pageLeaveBT.fromTo( $(".transition.b-t"), { display: "none", }, { display: "flex", }, "<" ); pageLeaveBT.fromTo( $(".transition_slide.b-t"), { yPercent: 100, }, { yPercent: 0, duration: 1, ease: "expo.out", stagger: { amount: 0.2, }, }, "<" ); return pageLeaveBT; }; const enterAnimationTB = (container) => { console.log("pageEnterTB"); $(container).addClass("fixed"); let pageEnterTB = gsap.timeline({ onStart: () => { pageIntroAnimation(); }, onComplete: () => { $(container).removeClass("fixed"); $(".transition_wrap").css("display", "none"); }, }); pageEnterTB.set($(".transition_wrap"), { display: "block", }); pageEnterTB.set($(".page_overlay"), { opacity: 0, }); pageEnterTB.set($(".transition.t-b"), { display: "flex", }); pageEnterTB.set($(".transition_slide.t-b"), { yPercent: 0, }); pageEnterTB.fromTo( $(".transition_slide.t-b"), { yPercent: 0, }, { yPercent: 100, duration: 1, ease: "expo.in", stagger: { amount: 0.2, from: "end", }, }, "<" ); pageEnterTB.fromTo( $(".g_cursor"), { scale: 0, }, { scale: 3, duration: 1, ease: "power2.in", }, "<60%" ); pageEnterTB.to( $(".g_cursor"), { scale: 1, duration: 0.8, ease: "power2.out", }, "<95%" ); return pageEnterTB; }; const leaveAnimationTB = (container) => { console.log("pageLeaveTB"); let pageLeaveTB = gsap.timeline({ onStart: () => { pageOutroAnimation(); }, }); pageLeaveTB.to( $(".page_main"), { pointerEvents: "none", }, "<" ); pageLeaveTB.to( $(".g_cursor"), { scale: 0, duration: 0.2, ease: "power2.in", }, "<" ); pageLeaveTB.fromTo( $(".transition_wrap"), { display: "none", }, { display: "block", }, "<" ); pageLeaveTB.fromTo( $(".transition.t-b"), { display: "none", }, { display: "flex", }, "<" ); pageLeaveTB.fromTo( $(".page_overlay"), { opacity: 0, }, { opacity: 1, duration: 0.4, ease: "power1.in", }, "<" ); pageLeaveTB.fromTo( $(".transition_slide.t-b"), { yPercent: -101, }, { yPercent: 0, duration: 1.2, ease: "expo.out", stagger: { amount: 0.3, from: "start", }, }, "<" ); return pageLeaveTB; }; const enterAnimationRL = (container) => { console.log("pageEnterRL"); $(container).addClass("fixed"); let pageEnterRL = gsap.timeline({ onStart: () => { pageIntroAnimation(); }, onComplete: () => { $(container).removeClass("fixed"); $(".transition_wrap").css("display", "none"); }, }); pageEnterRL.set($(".transition_wrap"), { display: "block", }); pageEnterRL.set($(".page_overlay"), { opacity: 0, }); pageEnterRL.set($(".transition.r-l"), { display: "flex", }); pageEnterRL.set($(".transition_slide.r-l"), { xPercent: 0, }); pageEnterRL.fromTo( $(".page_overlay"), { opacity: 1, }, { opacity: 0, duration: 0.4, ease: "power1.in", } ); pageEnterRL.fromTo( $(".transition_slide.r-l"), { xPercent: 0, }, { xPercent: -101, duration: 1, ease: "expo.in", stagger: { amount: 0.3, from: "end", }, }, "<" ); pageEnterRL.fromTo( $(".g_cursor"), { scale: 0, }, { scale: 3, duration: 1, ease: "power2.in", }, "<60%" ); pageEnterRL.to( $(".g_cursor"), { scale: 1, duration: 0.8, ease: "power2.out", }, "<95%" ); return pageEnterRL; }; const leaveAnimationRL = (container) => { console.log("pageLeaveRL"); let pageLeaveRL = gsap.timeline({ onStart: () => { pageOutroAnimation(); }, }); pageLeaveRL.to($(".page_main"), { pointerEvents: "none", }); pageLeaveRL.to( $(".g_cursor"), { scale: 0, duration: 0.2, ease: "power2.in", }, "<" ); pageLeaveRL.fromTo( $(".transition_wrap"), { display: "none", }, { display: "block", }, "<" ); pageLeaveRL.fromTo( $(".page_overlay"), { opacity: 0, }, { opacity: 1, duration: 0.4, ease: "power1.in", }, "<" ); pageLeaveRL.fromTo( $(".transition.r-l"), { display: "none", }, { display: "flex", }, "<" ); pageLeaveRL.fromTo( $(".transition_slide.r-l"), { xPercent: 101, }, { xPercent: 0, duration: 1.2, ease: "expo.out", stagger: { amount: 0.3, }, }, "<" ); return pageLeaveRL; }; /////////////// //////////// //////////// //Barba stuff function resetWebflow(data) { let parser = new DOMParser(); let dom = parser.parseFromString(data.next.html, "text/html"); let webflowPageId = $(dom).find("html").attr("data-wf-page"); $("html").attr("data-wf-page", webflowPageId); window.Webflow && window.Webflow.destroy(); window.Webflow && window.Webflow.ready(); window.Webflow && window.Webflow.require("ix2").init(); } barba.hooks.afterLeave(() => { let triggers = ScrollTrigger.getAll(); triggers.forEach(function (trigger) { trigger.kill(); }); }); barba.hooks.after((data) => { $(data.next.container).removeClass("fixed"); $(window).scrollTop(0); lenis.start(); lenis.resize(); ScrollTrigger.refresh(); resetWebflow(data); globalScript(); // lenis.scrollTo(0, { // immediate: true, // }); }); barba.hooks.beforeLeave(() => { lenis.stop(); }); barba.hooks.beforeEnter(() => { checkPreloader(); parallax(); $(".mobile_menu").css("display", "none"); $(".g_new-nav_component").addClass("open"); lenis.start(); $(".g_new-nav_component").removeClass("open"); requestAnimationFrame(() => { lottieRivePreload(); }); }); barba.init({ preventRunning: true, views: [ { namespace: "home", beforeEnter() { runSplit(); }, afterEnter(data) { homeScript(); homeEnterAnimation(); }, }, { namespace: "contact", beforeEnter() { runSplit(); }, afterEnter() { contactScript(); }, }, { namespace: "categories", beforeEnter() { runSplit(); }, afterEnter() { categoryScript(); }, }, { namespace: "winners", beforeEnter() { runSplit(); }, beforeLeave() {}, afterEnter() { filterScript(); }, }, { namespace: "winners-detail", beforeEnter() { runSplit(); }, afterEnter() { winnersDetailScript(); }, }, { namespace: "news", beforeEnter() { $(".g_new-nav_component a").css("color", "#002A4C"); runSplit(); }, afterEnter() { filterScript(); $(".g_new-nav_btn_wrap").on("click", function () { const logoLink = $("a.g_new-nav_logo_wrap.w-inline-block"); const currentColor = logoLink.css("color"); if (currentColor === "rgb(0, 42, 76)") { // #002A4C → white logoLink.attr("style", "color: #FFF !important;"); } else { // anything else → #002A4C logoLink.attr("style", "color: #002A4C !important;"); } }); }, }, { namespace: "guides", beforeEnter() { runSplit(); }, afterEnter() {}, }, { namespace: "guides-detail", beforeEnter() { runSplit(); }, beforeLeave() {}, afterEnter() {}, }, { namespace: "news-detail", beforeEnter() { runSplit(); }, afterEnter() {}, }, { namespace: "award-detail", beforeEnter() { runSplit(); }, afterEnter() {}, }, { namespace: "judges", beforeEnter() { runSplit(); }, afterEnter() { judgesScript(); filterScript(); }, }, { namespace: "pagefail", beforeEnter() { runSplit(); }, afterEnter() { pageFailScript(); }, }, ], transitions: [ { name: "page-reload", once: (data) => { if (document.querySelector("[data-barba-namespace='home']")) { // homeEnterAnimation(data.next.container); homeEnterAnimation(); $("body").removeClass("show-loader"); globalScript(); } if (document.querySelector("[data-barba-namespace='judges']")) { pageIntroAnimation(); } if (document.querySelector("[data-barba-namespace='categories']")) { pageIntroAnimation(); } if (document.querySelector("[data-barba-namespace='winners']")) { pageIntroAnimation(); } if (document.querySelector("[data-barba-namespace='guides']")) { pageIntroAnimation(); } }, }, { name: "default-transition", sync: false, leave: (data) => { const directions = ["LR", "RL", "BT", "TB"]; transitionDirection = directions[Math.floor(Math.random() * directions.length)]; switch (transitionDirection) { case "LR": return leaveAnimationLR(data.current.container); case "RL": return leaveAnimationRL(data.current.container); case "BT": return leaveAnimationBT(data.current.container); case "TB": return leaveAnimationTB(data.current.container); } }, enter: (data) => { switch (transitionDirection) { case "LR": return enterAnimationLR(data.next.container); case "RL": return enterAnimationRL(data.next.container); case "BT": return enterAnimationBT(data.next.container); case "TB": return enterAnimationTB(data.next.container); } }, }, ], });