1(()=>{var h=class extends HTMLElement{constructor(){super(),this.progressBarItems=[],this.events=[],this.progressBarWidth=0,this.remainingSeconds=0,this.has10MinuteCheckTriggered=!1,this.countdownDiscountApplied=!1,this.isApplyingCountdownDiscount=!1}connectedCallback(){this.init()}init(){requestAnimationFrame(()=>{this.findElements(),this.initProgressBar(),this.startCountdown(),this.initializeProgressBarItems(),this.initResizeListener(),this.updateProgressText(),this.updateContainerVisibility()})}initResizeListener(){if(!this.progressBar){setTimeout(()=>this.initResizeListener(),100);return}window.ResizeObserver&&(this.resizeObserver=new ResizeObserver(()=>{this.updateProgressBar()}),this.resizeObserver.observe(this.progressBar));let e;window.addEventListener("resize",()=>{clearTimeout(e),e=setTimeout(()=>this.updateProgressBar(),150)});let t=()=>{this.progressBar.offsetWidth>10?this.updateProgressBar():requestAnimationFrame(t)};setTimeout(()=>requestAnimationFrame(t),100)}initializeProgressBarItems(){let e=0,t;for(;t=this.querySelector(`.dl-cart-countdown-x-progress-bar-item${e}`);)this.progressBarItems.push(t),e++}findElements(){this.containerElement=this.querySelector(".dl-cart-countdown-x-container"),this.requiredProductsConfig=this.loadRequiredProductsConfig(),this.timeElement=this.querySelector(".dl-cart-countdown-x-time"),this.progressElement=this.querySelector(".dl-cart-countdown-x-progress"),this.countdownTextElements={desktop:this.querySelector(".dl-cart-countdown-x-time-text.dl-hidden-mobile"),mobile:this.querySelector(".dl-cart-countdown-x-time-text.dl-hidden-desktop")},this.progressBar=this.querySelector(".dl-cart-countdown-x-progress-bar"),this.progressFillLeft=this.querySelector(".dl-cart-countdown-x-progress-bar-item-leftline"),this.progressFillRight=this.querySelector(".dl-cart-countdown-x-progress-bar-item-rightline"),this.timeValue=this.timeElement?.getAttribute("data-time"),this.shippingAmount=parseInt(this.progressElement?.getAttribute("data-shipping-amount"))||0,this.shippingLabel=this.progressElement?.getAttribute("data-shipping-label")||"",this.eventLabel=this.getAttribute("data-event-label")||"",this.cartTotal=this.readRenderedCartTotal(),this.events=[];try{let e=document.getElementById("cart-events-data");if(e){let t=JSON.parse(e.textContent);Array.isArray(t)&&(this.events=t)}}catch{this.events=[]}this.originalText={desktop:this.countdownTextElements.desktop?.innerHTML||"",mobile:this.countdownTextElements.mobile?.innerHTML||""},this.progressTextElements={desktop:this.querySelector(".dl-cart-countdown-x-progress-right-text.dl-hidden-mobile"),mobile:this.querySelector(".dl-cart-countdown-x-progress-right-text.dl-hidden-desktop")},this.originalProgressText={desktop:this.progressTextElements.desktop?.innerHTML||"",mobile:this.progressTextElements.mobile?.innerHTML||""},this.progressFinalTextElements={desktop:this.querySelector(".dl-cart-countdown-x-progress-final-text.dl-hidden-mobile"),mobile:this.querySelector(".dl-cart-countdown-x-progress-final-text.dl-hidden-desktop")},this.originalFinalText={desktop:this.progressFinalTextElements.desktop?.innerHTML||"",mobile:this.progressFinalTextElements.mobile?.innerHTML||""}}loadRequiredProductsConfig(){try{let e=document.getElementById("cart-countdown-required-products");if(e)return JSON.parse(e.textContent)}catch{}return{isDay:!0,productIds:[]}}updateContainerVisibility(){if(!this.containerElement)return;let e=[],t=customElements.get("dl-cart-ll");if(t&&typeof t.getCartData=="function"&&(e=t.getCartData()),!e||e.length===0){this.containerElement.style.display="none";return}this.containerElement.style.display="";let s=this.timeElement?.getAttribute("data-time");if(!s||s.trim()===""){this.timeElement&&(this.timeElement.style.display="none");return}if(this.requiredProductsConfig?.isDay??!0)this.timeElement&&(this.remainingSeconds>0?this.timeElement.style.display="":this.timeElement.style.display="none");else{let n=this.remainingSeconds,r=typeof n=="number"?n>0&&n<=600:!1,a=this.requiredProductsConfig?.productIds||[];if(a.length===0){this.timeElement&&(this.timeElement.style.display=r?"":"none");return}let c=e.some(l=>a.includes(l.product_id));if(c?this.applyCountdownDiscountCode():this.countdownDiscountApplied,this.timeElement){let l=c&&r;this.timeElement.style.display=l?"":"none"}}}initProgressBar(){this.updateCartTotal(),typeof subscribe<"u"&&subscribe(PUB_SUB_EVENTS.cartUpdate,e=>{this.updateCartTotal()}),document.addEventListener("cart:updated",()=>{this.updateCartTotal()})}readRenderedCartTotal(){let e=this.progressElement?.getAttribute("data-cart-total"),t=this.getAttribute("data-cart-total"),o=parseInt(e??t,10);return Number.isNaN(o)?0:o}applyCartTotalAndRefresh(e){this.cartTotal=e,this.updateProgressBar(),this.updateContainerVisibility()}updateCartTotal(){if(this.progressElement?.hasAttribute("data-cart-total")||this.hasAttribute("data-cart-total")){this.applyCartTotalAndRefresh(this.readRenderedCartTotal());return}let t=document.querySelector("dl-cart-ll")?.cartData?.total_price;if(typeof t=="number"){this.applyCartTotalAndRefresh(t);return}fetch("/cart.js").then(s=>s.json()).then(s=>{this.applyCartTotalAndRefresh(s.total_price||0)}).catch(s=>{console.error("Failed to update cart total:",s)})}getProgressBarWidth(e=!1){if(this.progressBarWidth>0&&!e)return this.progressBarWidth;if(!this.progressBar)return 0;let t=this.progressBar.offsetWidth;if(t===0||t<10){let s=window.innerWidth,o=this.progressElement?.classList.contains("dl-background");s>1920?t=Math.round(o?384/1920*s:731/1920*s):s>989&&s<=1600?t=Math.round(o?384/1600*s:731/1600*s):s<990&&(t=Math.round(o?128/375*s:311/375*s))}return t>0&&(this.progressBarWidth=t),t}updateProgressBar(){if(!this.progressBar)return;requestAnimationFrame(()=>{let t=this.getProgressBarWidth(!0),s=this.progressBarItems.length;if(s===0)return;if(t===0){console.warn("[DlCartCountdownX] Unable to get progress bar width");return}if(this.progressBarWidth=t,s>=1){let l=t/s;
1this.progressBarItems.forEach((d,u)=>{let p=(u+1)*l;d.style.left=`${p}px`,d.style.transform="translateX(-50%)",d.style.right="auto"})}let o=t,n=[0,this.shippingAmount,...this.events.map(l=>parseInt(l.value)||0)],i=n.length-1,r=o/i,a=0;for(let l=0;l<i;l++){let d=n[l],u=n[l+1];if(!(u<=d))if(this.cartTotal>=u)a+=r;else if(this.cartTotal>d){let g=(this.cartTotal-d)/(u-d)*r;a+=g;break}else break}let c=this.querySelector(".dl-cart-countdown-x-progress-bar-item-line");c&&c.style.setProperty("--progress-width",`${a}px`),this.updateMilestoneStatus(),this.updateProgressText()})}updateMilestoneStatus(){let e=[{amount:this.shippingAmount,label:this.shippingLabel,type:"shipping"}];this.events&&this.events.length>0&&this.events.forEach(t=>{e.push({amount:parseInt(t.value),label:t.label,type:"event"})}),e.sort((t,s)=>t.amount-s.amount),this.progressBarItems.forEach((t,s)=>{let o=e[s];if(!o){t.classList.remove("dl-achieved"),t.classList.add("dl-not-achieved"),this.updateMilestoneIcon(t,!1,!1);return}let n=t.classList.contains("dl-achieved"),i=this.cartTotal>=o.amount;i?(t.classList.add("dl-achieved"),t.classList.remove("dl-not-achieved")):(t.classList.remove("dl-achieved"),t.classList.add("dl-not-achieved"),n&&!i&&this.autoRemoveDiscountCode(t));let r=!n&&i;this.updateMilestoneIcon(t,i,r)})}updateMilestoneIcon(e,t,s=!1){let o=e.querySelector(".dl-cart-countdown-x-progress-bar-item-img");if(!o)return;let n=o.querySelector("img:first-child"),i=o.querySelector("img:last-child");n&&i&&(t?(n.classList.remove("dl-show"),n.classList.add("dl-hidden"),i.classList.remove("dl-hidden"),i.classList.add("dl-show")):(n.classList.remove("dl-hidden"),n.classList.add("dl-show"),i.classList.remove("dl-show"),i.classList.add("dl-hidden"))),s&&this.autoApplyDiscountCodes()}autoRemoveDiscountCode(e){}updateProgressText(){if(isNaN(this.shippingAmount)||isNaN(this.cartTotal))return;let e=this.getCurrentTarget();if(!e)return;let t=this.cartTotal>=e.amount;["desktop","mobile"].forEach(s=>{let o=t?this.progressFinalTextElements[s]:this.progressTextElements[s];if(!o)return;let i=t?this.originalFinalText[s]||"":this.originalProgressText[s]||"";if(i.includes("{money}")){let r=Math.max(0,(e.amount||0)-(this.cartTotal||0)),a=typeof formatMoney=="function"?formatMoney(r):`$${(r/100).toFixed(2)}`;i=i.replace(/\{money\}/g,a)}i.includes("{event}")&&(i=i.replace(/\{event\}/g,e.label.toLowerCase())),o.innerHTML=i}),t?(this.progressTextElements.desktop?.classList.add("hidden"),this.progressTextElements.mobile?.classList.add("hidden"),this.progressFinalTextElements.desktop?.classList.remove("hidden"),this.progressFinalTextElements.mobile?.classList.remove("hidden")):(this.progressTextElements.desktop?.classList.remove("hidden"),this.progressTextElements.mobile?.classList.remove("hidden"),this.progressFinalTextElements.desktop?.classList.add("hidden"),this.progressFinalTextElements.mobile?.classList.add("hidden"))}getCurrentTarget(){let e=[{amount:this.shippingAmount,label:this.shippingLabel,type:"shipping"}];this.events&&this.events.length>0&&this.events.forEach(t=>{e.push({amount:parseInt(t.value),label:t.label,type:"event"})}),e.sort((t,s)=>t.amount-s.amount);for(let t of e)if(this.cartTotal<t.amount)return t;return e[e.length-1]}getTimeType(e){return e?e.match(/^\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}$/)?"date":e.match(/^\d{1,2}:\d{2}$/)||e.match(/^\d+$/)?"minutes":"unknown":"unknown"}startCountdown(){if(!this.timeValue){this.hideCountdown();return}let e=this.getTimeType(this.timeValue);if(!(this.requiredProductsConfig?.isDay??!0))e==="date"?this.startDateAsMinutesCountdown(this.timeValue):this.startMinutesCountdown(this.timeValue);else switch(e){case"date":this.startDateCountdown(this.timeValue);break;case"minutes":this.startMinutesCountdown(this.timeValue);break;default:this.hideCountdown()}}startDateAsMinutesCountdown(e){let t=new Date(e);if(isNaN(t.getTime())){this.hideCountdown(!1);return}let s=600;this.has10MinuteCheckTriggered=!1;let o=()=>{let i=t-new Date;if(i<=0){this.updateCountdownDisplay("00:00 minutes"),clearInterval(this.countdownInterval),this.remainingSeconds=0,this.hideCountdown(!1);return}let r=this.remainingSeconds??0,a=Math.floor(i/1e3);this.remainingSeconds=a;let c=Math.floor(a/60),l=a%60,d=`${c.toString().padStart(2,"0")}:${l.toString().padStart(2,"0")} minutes`;this.updateCountdownDisplay(d),!this.has10MinuteCheckTriggered&&r>s&&a<=s&&(this.has10MinuteCheckTriggered=!0,this.updateContainerVisibility())};o(),this.countdownInterval=setInterval(o,1e3)}startDateCountdown(e){let t=new Date(e);if(isNaN(t.getTime())){this.hideCountdown(!1);return}let s=()=>{let n=t-new Date;if(n<=0){this.updateCountdownDisplay("00:00:00:00"),clearInterval(this.countdownInterval),this.remainingSeconds=0,this.hideCountdown(!1);return}let i=Math.floor(n/(1e3*60*60*24)),r=Math.floor(n%(1e3*60*60*24)/(1e3*60*60)),a=Math.floor(n%(1e3*60*60)/(1e3*60)),c=Math.floor(n%(1e3*60)/1e3);this.remainingSeconds=Math.floor(n/1e3);let l=`${i.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}:${a.toString().padStart(2,"0")}:${c.toString().padStart(2,"0")}`;this.updateCountdownDisplay(l)};s(),this.countdownInterval=setInterval(s,1e3)}startMinutesCountdown(e){let t;if(e.includes(":")){let[n,i]=e.split(":").map(Number);t=n*60+i}else t=parseInt(e)*60;this.remainingSeconds=t,this.has10MinuteCheckTriggered=!1;let s=600,o=()=>
1{if(t<=0){this.updateCountdownDisplay("00:00 minutes"),clearInterval(this.countdownInterval),this.remainingSeconds=0,this.hideCountdown(!1);return}let n=Math.floor(t/60),i=t%60,r=`${n.toString().padStart(2,"0")}:${i.toString().padStart(2,"0")} minutes`;this.updateCountdownDisplay(r);let a=t;t--,this.remainingSeconds=t,!this.has10MinuteCheckTriggered&&a>s&&t<=s&&(this.has10MinuteCheckTriggered=!0,this.updateContainerVisibility())};o(),this.countdownInterval=setInterval(o,1e3)}updateCountdownDisplay(e){if(this.countdownTextElements.desktop&&this.originalText.desktop){let t=this.originalText.desktop.replace(/\{countdown\}/g,e);this.countdownTextElements.desktop.innerHTML=t}if(this.countdownTextElements.mobile&&this.originalText.mobile){let t=this.originalText.mobile.replace(/\{countdown\}/g,e);this.countdownTextElements.mobile.innerHTML=t}}hideCountdown(e=!1){this.timeElement&&(this.timeElement.style.display="none"),this.disconnectedCallback()}disconnectedCallback(){this.countdownInterval&&clearInterval(this.countdownInterval),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null)}getProgressDiscountCodes(){let e=[];return this.progressBarItems.forEach(t=>{if(t.classList.contains("dl-achieved")){let s=t.dataset.dlCode;s&&e.push(s)}}),e}getCountdownDiscountCodes(){let e=this.timeElement?.dataset.dlCode;return e||null}async autoApplyDiscountCodes(){let e=this.getProgressDiscountCodes();if(e.length!==0)try{let t=[],s=document.querySelector("dl-cart-checkout-ll"),o=s?.querySelectorAll(".dl-cart-checkout-discount-code-details-ll span");o&&o.length>0&&(t=Array.from(o).map(i=>i.textContent.trim()));let n=e.filter(i=>!t.includes(i));if(n.length===0||!s?.applyDiscountCode)return;for(let i of n)console.log("[DlCartCountdownX] Applying discount code:",i),await s.applyDiscountCode(i,!1)}catch(t){console.log("[DlCartCountdownX] Failed to apply discount codes:",t)}}async applyCountdownDiscountCode(){if(this.requiredProductsConfig?.isDay??!0){console.log("[DEBUG] isDay=true\uFF0C\u8DF3\u8FC7\u5012\u8BA1\u65F6\u6298\u6263\u7801");return}let t=this.timeElement?.getAttribute("data-dl-code");if(!t||t.trim()===""){console.log("[DEBUG] \u672A\u914D\u7F6E\u5012\u8BA1\u65F6\u6298\u6263\u7801");return}if(this.countdownDiscountApplied||this.isApplyingCountdownDiscount){console.log("[DEBUG] \u6298\u6263\u7801\u5DF2\u5E94\u7528\u6216\u6B63\u5728\u5904\u7406\u4E2D\uFF0C\u8DF3\u8FC7",{\u5DF2\u5E94\u7528:this.countdownDiscountApplied,\u6B63\u5728\u5904\u7406:this.isApplyingCountdownDiscount});return}this.isApplyingCountdownDiscount=!0;let s=this.requiredProductsConfig?.productIds||[];if(s.length===0){console.log("[DEBUG] \u672A\u914D\u7F6E\u5FC5\u9700\u4EA7\u54C1\u5217\u8868"),this.isApplyingCountdownDiscount=!1;return}let o=[],n=customElements.get("dl-cart-ll");n&&typeof n.getCartData=="function"&&(o=n.getCartData());let i=o.some(r=>s.includes(r.product_id));if(console.log("[DEBUG] \u7B2C\u4E00\u6B21\u4EA7\u54C1\u68C0\u67E5",{\u5FC5\u9700IDs:s,\u8D2D\u7269\u8F66IDs:o.map(r=>r.product_id),\u5339\u914D:i}),!i){console.log("[DEBUG] \u8D2D\u7269\u8F66\u65E0\u5BF9\u5E94\u4EA7\u54C1"),this.isApplyingCountdownDiscount=!1;return}try{let r=[],a=customElements.get("dl-cart-ll");if(a&&typeof a.getCartData=="function"&&(r=a.getCartData()),!r.some(d=>s.includes(d.product_id))){this.isApplyingCountdownDiscount=!1;return}let l=document.querySelector("dl-cart-checkout-ll");if(!l||!l.applyDiscountCode){this.isApplyingCountdownDiscount=!1;return}console.log("[DlCartCountdownX] \u5373\u5C06\u5C1D\u8BD5\u5E94\u7528\u5012\u8BA1\u65F6\u6298\u6263\u7801:",t),await l.applyDiscountCode(t,!1),this.countdownDiscountApplied=!0}catch(r){console.log("[DlCartCountdownX] \u5E94\u7528\u5012\u8BA1\u65F6\u6298\u6263\u7801\u5931\u8D25:",r)}finally{this.isApplyingCountdownDiscount=!1}}removeCountdownDiscountCode(){}};customElements.define("dl-cart-countdown-x",h);})();
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.