(function (){
'use strict';
if(typeof window.dlmPublic==='undefined') return;
function ready(fn){
if(document.readyState!=='loading') fn();
else document.addEventListener('DOMContentLoaded', fn);
}
function getProductIdsOnPage(){
var ids=new Set();
document.querySelectorAll('[class*="post-"]').forEach(function (el){
var m=el.className&&el.className.match(/(^|\s)post-(\d+)(\s|$)/);
if(m) ids.add(parseInt(m[2], 10));
});
document.querySelectorAll('[data-product-id], [data-id]').forEach(function (el){
var v=el.getAttribute('data-product-id')||el.getAttribute('data-id');
var n=parseInt(v, 10);
if(!isNaN(n)&&n > 0) ids.add(n);
});
document.querySelectorAll('a.add_to_cart_button[data-product_id], button[data-product_id]').forEach(function (el){
var n=parseInt(el.getAttribute('data-product_id'), 10);
if(!isNaN(n)&&n > 0) ids.add(n);
});
return Array.from(ids);
}
function findCardForProduct(id){
var node=document.querySelector('.post-' + id + ', [data-product-id="' + id + '"], [data-id="' + id + '"]');
if(node){
var card=node.closest('li.product, article.product, .product, .elementor-product, .elementor-widget-woocommerce-products .product, .product-item');
return card||node;
}
var btn=document.querySelector('[data-product_id="' + id + '"]');
if(btn){
var c=btn.closest('li, article, .product, .elementor-widget-container, .e-loop-item, .elementor-post');
return c||btn.parentNode;
}
return null;
}
function findImageContainer(card){
if(!card) return null;
var img=card.querySelector('img');
if(!img) return null;
var wrap=img.closest('a.woocommerce-LoopProduct-link, a.woocommerce-loop-product__link, .woocommerce-loop-product__link, .elementor-widget-container, .elementor-element, figure, picture, a');
if(!wrap||!card.contains(wrap)) wrap=img.parentNode;
return wrap;
}
function injectBadge(card, badgeHtml){
if(!card||!badgeHtml) return;
if(card.querySelector('.dlm-discount-badge')) return;
var host=findImageContainer(card);
if(!host) return;
var cs=window.getComputedStyle(host);
if(cs.position==='static') host.style.position='relative';
host.classList.add('dlm-image-wrap');
var tpl=document.createElement('div');
tpl.innerHTML=badgeHtml.trim();
var badgeEl=tpl.firstChild;
if(badgeEl) host.appendChild(badgeEl);
}
function fetchAndInject(){
var ids=getProductIdsOnPage();
if(!ids.length) return;
ids=ids.filter(function (id){
var card=findCardForProduct(id);
return card&&!card.querySelector('.dlm-discount-badge');
});
if(!ids.length) return;
fetch(window.dlmPublic.restUrl, {
method: 'POST',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json',
'X-WP-Nonce': window.dlmPublic.nonce
},
body: JSON.stringify({ ids: ids })
})
.then(function (r){ return r.ok ? r.json():{};})
.then(function (badges){
if(!badges||typeof badges!=='object') return;
Object.keys(badges).forEach(function (id){
var card=findCardForProduct(parseInt(id, 10));
injectBadge(card, badges[id]);
});
})
.catch(function (){  });
}
ready(function (){
fetchAndInject();
document.addEventListener('elementor/render/end', fetchAndInject);
if(window.jQuery){
window.jQuery(document.body).on('updated_wc_div post-load wc_fragments_refreshed', fetchAndInject);
}
setTimeout(fetchAndInject, 1500);
setTimeout(fetchAndInject, 4000);
});
})();