window.loadSwiperOnce ||= function () { if (typeof window.Swiper !== "undefined") { return Promise.resolve(window.Swiper); } // If another component is already loading Swiper, // reuse the same Promise. if (window.__swiperLoadingPromise) { return window.__swiperLoadingPromise; } window.__swiperLoadingPromise = new Promise((resolve, reject) => { /* ========================= CSS ========================== */ const existingCSS = document.querySelector( 'link[href*="swiper-bundle.min.css"]' ); if (!existingCSS) { const link = document.createElement("link"); link.rel = "stylesheet"; link.href = "https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"; document.head.appendChild(link); } /* ========================= JS ========================== */ const existingScript = document.querySelector( 'script[src*="swiper-bundle.min.js"]' ); if (existingScript) { if (typeof window.Swiper !== "undefined") { resolve(window.Swiper); return; } existingScript.addEventListener( "load", () => resolve(window.Swiper), { once: true } ); existingScript.addEventListener( "error", reject, { once: true } ); return; } const script = document.createElement("script"); script.src = "https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"; script.onload = () => resolve(window.Swiper); script.onerror = (error) => { window.__swiperLoadingPromise = null; reject(error); }; document.body.appendChild(script); }); return window.__swiperLoadingPromise; };