(function () { function initHomeReviewSlider() { var section = document.querySelector("#ae-main-review"); if (!section) { return; } if (section.getAttribute("data-ae-review-ready") === "1") { return; } var track = section.querySelector(".ae-review-track"); var viewport = section.querySelector(".ae-review-viewport"); var cards = Array.prototype.slice.call(section.querySelectorAll(".ae-review-card")); var prevBtn = section.querySelector(".ae-review-prev"); var nextBtn = section.querySelector(".ae-review-next"); var dotsWrap = section.querySelector(".ae-review-dots"); if (!track || !viewport || !cards.length || !prevBtn || !nextBtn || !dotsWrap) { return; } section.setAttribute("data-ae-review-ready", "1"); var currentIndex = 0; var cardsPerView = getCardsPerView(); var resizeTimer = null; function getCardsPerView() { var width = window.innerWidth || document.documentElement.clientWidth; if (width <= 768) { return 1; } if (width <= 1024) { return 2; } return 3; } function getGap() { var style = window.getComputedStyle(track); var gap = parseFloat(style.gap || style.columnGap || "0"); if (isNaN(gap)) { return 0; } return gap; } function getMaxIndex() { return Math.max(0, cards.length - getCardsPerView()); } function createDots() { var maxIndex = getMaxIndex(); var dotCount = maxIndex + 1; dotsWrap.innerHTML = ""; for (var i = 0; i < dotCount; i++) { var dot = document.createElement("button"); dot.type = "button"; dot.className = "ae-review-dot"; dot.setAttribute("aria-label", (i + 1) + "번째 후기 보기"); (function (index) { dot.addEventListener("click", function () { currentIndex = index; updateSlider(); }); })(i); dotsWrap.appendChild(dot); } } function updateSlider() { cardsPerView = getCardsPerView(); var maxIndex = getMaxIndex(); if (currentIndex < 0) { currentIndex = 0; } if (currentIndex > maxIndex) { currentIndex = maxIndex; } var cardWidth = cards[0].getBoundingClientRect().width; var gap = getGap(); var moveX = currentIndex * (cardWidth + gap); track.style.transform = "translate3d(-" + moveX + "px, 0, 0)"; prevBtn.disabled = currentIndex === 0; nextBtn.disabled = currentIndex === maxIndex; var dots = Array.prototype.slice.call(section.querySelectorAll(".ae-review-dot")); dots.forEach(function (dot, index) { if (index === currentIndex) { dot.classList.add("is-active"); } else { dot.classList.remove("is-active"); } }); } prevBtn.addEventListener("click", function (event) { event.preventDefault(); currentIndex = currentIndex - 1; updateSlider(); }); nextBtn.addEventListener("click", function (event) { event.preventDefault(); currentIndex = currentIndex + 1; updateSlider(); }); window.addEventListener("resize", function () { clearTimeout(resizeTimer); resizeTimer = setTimeout(function () { var oldCardsPerView = cardsPerView; cardsPerView = getCardsPerView(); if (oldCardsPerView !== cardsPerView) { createDots(); } updateSlider(); }, 150); }); window.addEventListener("load", function () { updateSlider(); }); createDots(); setTimeout(function () { updateSlider(); }, 50); } window.AEHomeReviewInit = initHomeReviewSlider; if (document.readyState === "loading") { document.addEventListener("DOMContentLoaded", initHomeReviewSlider); } else { initHomeReviewSlider(); } })();