class CountdownTimer extends HTMLElement{constructor(){super(),this.countdownInterval=null,this.announcementElement=null,this.lastAnnouncement=""}connectedCallback(){this.render(),this.initializeCountdown(),this.setupAccessibility()}disconnectedCallback(){this.countdownInterval&&clearInterval(this.countdownInterval)}render(){const countdownDate=this.getAttribute("data-countdown")}setupAccessibility(){this.addEventListener("keydown",e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),this.announceCurrentTime()),(e.key==="ArrowLeft"||e.key==="ArrowRight")&&(e.preventDefault(),this.announceCurrentTime())}),this.announcementElement=this.querySelector("[data-countdown-announcement]"),this.setAttribute("role","timer")}announceCurrentTime(){if(this.announcementElement){const days=this.querySelector("[data-days]")?.textContent||"00",hours=this.querySelector("[data-hours]")?.textContent||"00",minutes=this.querySelector("[data-minutes]")?.textContent||"00",seconds=this.querySelector("[data-seconds]")?.textContent||"00",flashTimerText=this.querySelector(".flash-timer-text")?.textContent||"00:00:00",location=this.getAttribute("data-location");let announcement="";if(location==="product-grid"){const[hoursStr,minutesStr,secondsStr]=flashTimerText.split(":");announcement=`Flash sale ends in ${hoursStr} hours, ${minutesStr} minutes, ${secondsStr} seconds`}else announcement=`Countdown: ${days} days, ${hours} hours, ${minutes} minutes, ${seconds} seconds remaining`;this.announcementElement.textContent=announcement,this.setAttribute("aria-label",announcement)}}showTimerEnded(){const timerWrapper=this.querySelector(".flash-sale-timer")?this.querySelector(".flash-sale-timer"):this,timerEndText=this.getAttribute("data-timer-end-text");if(timerWrapper){const countdownElements=timerWrapper.querySelectorAll(".time-text-wrapper, .hours-text-wrapper, .minutes-text-wrapper, .seconds-text-wrapper")}this.setAttribute("aria-label","Countdown timer - Sale has ended"),window.FlashSaleEmailCollector&&setTimeout(()=>{window.FlashSaleEmailCollector.showAllCollectors()},1e3)}initializeCountdown(){const startDate=this.getAttribute("data-start-date"),startTime=this.getAttribute("data-start-time"),endDate=this.getAttribute("data-end-date"),endTime=this.getAttribute("data-end-time"),location=this.getAttribute("data-location"),startDateTimeString=startDate&&startTime?`${startDate} ${startTime}`:null,endDateTimeString=endDate&&endTime?`${endDate} ${endTime}`:null,startDateTime=startDateTimeString?_theme.Helpers.parseESTDate(startDate,startTime).getTime():0,countDownDate=endDateTimeString?_theme.Helpers.parseESTDate(endDate,endTime).getTime():0,now=_theme.Helpers.getCurrentESTTime(),daysElement=this.querySelector("[data-days]"),hoursElement=this.querySelector("[data-hours]"),minutesElement=this.querySelector("[data-minutes]"),secondsElement=this.querySelector("[data-seconds]"),flashTimerText=this.querySelector(".flash-timer-text");if(isNaN(countDownDate)){this.innerHTML="",this.setAttribute("aria-label","Countdown timer - Invalid date");return}if(startDate&&now{const currentTime=_theme.Helpers.getCurrentESTTime();if(startDate&¤tTime=startDateTime&&(this.style.display="flex");const distance=countDownDate-currentTime;if(distance<0){this.countdownInterval&&(clearInterval(this.countdownInterval),this.countdownInterval=null);const buffer=6e4,endTime2=countDownDate,storageKey=`isCountdownTimerEnd_${countDownDate}`;if(currentTime>=endTime2&¤tTime<=endTime2+buffer&&!sessionStorage.getItem(storageKey)){sessionStorage.setItem(storageKey,"true"),window.location.reload();return}const timerType=this.getAttribute("data-location"),timerIsEndText=this.getAttribute("data-show-end-text");if(timerType=="collection"&&(timerIsEndText==="true"||timerIsEndText===!0))this.showTimerEnded();else{this.setAttribute("aria-label","Countdown timer - Time expired");const parentElement=this.closest("[data-remove-element]");parentElement&&parentElement.remove()}this.countdownInterval&&clearInterval(this.countdownInterval);return}const days=Math.floor(distance/(1e3*60*60*24)),hours=Math.floor(distance%(1e3*60*60*24)/(1e3*60*60)),minutes=Math.floor(distance%(1e3*60*60)/(1e3*60)),seconds=Math.floor(distance%(1e3*60)/1e3);if(location==="product-grid"&&flashTimerText){const daysText=days<10?"0"+days:days.toString(),hoursText=hours<10?"0"+hours:hours.toString(),minutesText=minutes<10?"0"+minutes:minutes.toString(),secondsText=seconds<10?"0"+seconds:seconds.toString();flashTimerText.textContent=`${daysText}:${hoursText}:${minutesText}:${secondsText}`,this.setAttribute("aria-label",`Flash sale countdown: ${daysText} ${hoursText} hours, ${minutesText} minutes, ${secondsText} seconds remaining`);return}if(daysElement){const daysText=days<10?"0"+days:days.toString();daysElement.textContent=daysText}if(hoursElement){const hoursText=hours<10?"0"+hours:hours.toString();hoursElement.textContent=hoursText}if(minutesElement){const minutesText=minutes<10?"0"+minutes:minutes.toString();minutesElement.textContent=minutesText}if(secondsElement){const secondsText=seconds<10?"0"+seconds:seconds.toString();secondsElement.textContent=secondsText}const currentAnnouncement=`${days} days, ${hours} hours, ${minutes} minutes, ${seconds} seconds`;(prefersReducedMotion?minutes!==this.lastAnnouncementMinutes:seconds%10===0&¤tAnnouncement!==this.lastAnnouncement)&&(this.announceCurrentTime(),this.lastAnnouncement=currentAnnouncement,this.lastAnnouncementMinutes=minutes),this.setAttribute("aria-label",`Countdown timer: ${currentAnnouncement} remaining`)};updateCountdown(),this.countdownInterval=setInterval(updateCountdown,updateInterval)}}customElements.define("countdown-timer",CountdownTimer);
//# sourceMappingURL=/cdn/shop/t/731/assets/countdown-timer.js.map?v=163116282287048886921763025192