(() => { // webpackBootstrap const { EventManager, actions } = ShopbySkin; const bannerId = document.currentScript.getAttribute('shopby-banner-id'); if (bannerId) { actions?.getBannerById?.({ bannerId }); } EventManager.on('QUERY_BANNER_BY_ID', () => { let tryCnt = 1; const interval = setInterval(() => { if (100 <= tryCnt) { clearInterval(interval); return; } const swiperEl = document.querySelector('.main_visual .swiper'); if ( 'function' !== typeof Swiper || !swiperEl || undefined === swiperEl.querySelectorAll ) { tryCnt++; return; } // 이미 초기화된 경우 중복 초기화 방지 if (swiperEl.swiper) { clearInterval(interval); return; } const slide = new Swiper(swiperEl, { slidesPerView: 1.476, spaceBetween: 0, centeredSlides: true, loop: true, speed: 800, autoplay: { delay: 3000, disableOnInteraction: false, }, pagination: { el: '.main_visual .swiper-pagination', type: 'custom', renderCustom: function (swiper) { const current = swiper.realIndex + 1; const total = swiper.slides .map(function (slide) { return Number(slide.dataset.swiperSlideIndex); }) .filter(function (index, i, arr) { return !isNaN(index) && arr.indexOf(index) === i; }) .length; return '' + String(current).padStart(2) + ' / ' + '' + String(total).padStart(2) + ''; } }, navigation: { nextEl: '.main_visual .swiper-button-next', prevEl: '.main_visual .swiper-button-prev', } }); const allBtn = document.querySelector('.swiper_ban_all'); const layer = document.getElementById('bannerLayer'); if (!allBtn || !layer) { clearInterval(interval); return; } const imageWrap = layer.querySelector('.banner-layer__images'); const closeBtn = layer.querySelector('.banner-layer__close'); const dim = layer.querySelector('.banner-layer__dim'); // 전체보기 allBtn.addEventListener('click', function () { imageWrap.innerHTML = ''; const slides = Array.from( swiperEl.querySelectorAll('.swiper-slide') ) .filter(function (slide) { return slide.dataset.swiperSlideIndex !== undefined; }) .sort(function (a, b) { return Number(a.dataset.swiperSlideIndex) - Number(b.dataset.swiperSlideIndex); }); slides.forEach(function (slide) { const img = slide.querySelector('img'); if (img) { const newImg = document.createElement('img'); newImg.src = img.src; newImg.alt = img.alt || ''; imageWrap.appendChild(newImg); } }); layer.classList.add('is-open'); document.body.style.overflow = 'hidden'; }); // 레이어 닫기 function closeLayer() { layer.classList.remove('is-open'); document.body.style.overflow = ''; } if (closeBtn) { closeBtn.addEventListener('click', closeLayer); } if (dim) { dim.addEventListener('click', closeLayer); } clearInterval(interval); }, 10); }); })();