PageSourceSearch

https://www.pentel.com/cdn/shop/t/101/assets/countdown-timer.js?v=143239708233669442911790707461

js pentel.com collected 2026-10-01 13:51:54 UTC 3,045 bytes, 2 lines download raw bytes

1customElements.get("countdown-timer")||customElements.define("countdown-timer",class extends HTMLElement{constructor(){super(),this.init()}init(){this.MS_IN_SEC=1e3,this.MS_IN_MIN=60*this.MS_IN_SEC,this.MS_IN_HRS=60*this.MS_IN_MIN,this.MS_IN_DAY=24*this.MS_IN_HRS,this.selectorMapping={day:"[data-timer-day]",hour:"[data-timer-hour]",minute:"[data-timer-minute]",second:"[data-timer-second]"},this.units=["day","hour","minute","second"],this.type=this.dataset.type,this.duration=this.dataset.duration,this.loop=!1,this.shouldAddLeadingZero=!0,this.initCountdown()}initCountdown(){if(this.type==="fixed_time"){const countdownData=this.dataset.dueDate;countdownData&&(this.targetTime=new Date(countdownData).getTime())}else this.targetTime=this.getEvergreenDueDate().getTime();this.targetTime&&(this.startTime=Date.now(),this.targetTime>this.startTime&&(this.fetchDomElements(),this.beginCountdown()))}fetchDomElements(){this.elements={},this.units.forEach(unit=>{this.elements[unit]=this.querySelector(this.selectorMapping[unit])})}beginCountdown(){this.intervalId=setInterval(()=>{const remainingTime=this.targetTime-Date.now();remainingTime<=0?this.terminateCountdown():this.updateDisplay(remainingTime)},1e3),this.classList.remove("hidden")}updateDisplay(remainingTime){const timeComponents=this.computeTimeComponents(remainingTime);this.units.forEach(unit=>{this.elements[unit]&&(this.elements[unit].textContent=this.formatTimeComponent(timeComponents[unit]))})}computeTimeComponents(ms){return{day:Math.floor(ms/this.MS_IN_DAY),hour:Math.floor(ms%this.MS_IN_DAY/this.MS_IN_HRS),minute:Math.floor(ms%this.MS_IN_HRS/this.MS_IN_MIN),second:Math.floor(ms%this.MS_IN_MIN/this.MS_IN_SEC)}}formatTimeComponent(value){return this.shouldAddLeadingZero&&value<10?`0${value}`:value.toString()}terminateCountdown(){clearInterval(this.intervalId),this.loop?this.beginCountdown():this.classList.add("hidden")}resetCountdown(){clearInterval(this.intervalId),this.units.forEach(unit=>{this.elements[unit]&&(this.elements[unit].textContent="00")})}getEvergreenDueDate(){let intervalHrs;const now=new Date,dueDate=new Date(now);switch(this.duration){case"every_month":return dueDate.setMonth(dueDate.getMonth()+1),dueDate.setDate(1),dueDate.setHours(0,0,0,0),dueDate;case"every_week":const daysUntilNextWeek=7-now.getDay();return dueDate.setDate(now.getDate()+daysUntilNextWeek),dueDate.setHours(0,0,0,0),dueDate;case"every_2_hrs":intervalHrs=2;break;case"every_6_hrs":intervalHrs=6;break;case"every_12_hrs":intervalHrs=12;break;case"every_24_hrs":intervalHrs=24;break}const currentHour=now.getHours(),startPoints=[];for(let i=0;i<24;i+=intervalHrs)startPoints.push(i);for(let i=0;i<startPoints.length;i++)if(currentHour<startPoints[i]||currentHour===startPoints[i]&&now.getMinutes()===0&&now.getSeconds()===0)return dueDate.setHours(startPoints[i],0,0,0),dueDate;return dueDate.setDate(dueDate.getDate()+1),dueDate.setHours(startPoints[0],0,0,0),dueDate}});
2//# sourceMappingURL=/cdn/shop/t/101/assets/countdown-timer.js.map?v=143239708233669442911790707461

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.