(function(){function R(){return window.location.search.includes("jdgm_debug=true")}const b=R();function a(...e){b&&console.log(...e)}window.jdgm=window.jdgm||{},window.jdgm.debugLog=a;async function _(){const e=window.jdgm?.CDN_HOST,t=window.jdgm?.API_HOST,n=window.Shopify?.shop;if(!e){a("[Judge.me Widget Loader] CDN_HOST not configured, skipping CDN test");return}if(!n){a("[Judge.me Widget Loader] Shopify shop not found, skipping CDN test");return}const s=`${e}installed.js`;a("[Judge.me Widget Loader] Testing CDN reachability:",s);function d(l){if(a("[Judge.me Widget Loader] ❌ CDN test failed, reporting to API"),!t){a("[Judge.me Widget Loader] API_HOST not configured, cannot report CDN failure");return}const r=`${t}api/widget/requests`;fetch(r,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({shop_domain:n,method:"HEAD",url:s,status:l,duration:0})}).then(()=>{a("[Judge.me Widget Loader] ✅ CDN failure reported to API")}).catch(i=>{a("[Judge.me Widget Loader] ⚠️ Failed to report CDN failure:",i.message)})}const o=new XMLHttpRequest;o.open("HEAD",s,!0),o.timeout=15e3,o.onload=()=>{o.status>=200&&o.status<400?a("[Judge.me Widget Loader] ✅ CDN test successful"):d(o.status)},o.onerror=()=>{d(-1)},o.ontimeout=()=>{d(0)},o.send()}_(),a("[Judge.me Widget Loader] Script loaded and executing...");const L=".jdgm-widget[data-entry-point]",w=document.querySelectorAll(L);if(w.length===0){a("[Judge.me Widget Loader] No containers found with selector:",L);return}a("[Judge.me Widget Loader] Found "+w.length+" container(s), processing each...");const h=new Set,c={REVIEW:"review",ALL_REVIEWS_V2025:"all-reviews-v2025",CAROUSEL:"carousel",TRUST_BADGE:"trust-badge"},D={review:c.REVIEW,"all-reviews-v2025":c.ALL_REVIEWS_V2025,"testimonials-carousel":c.CAROUSEL,"cards-carousel":c.CAROUSEL,"trust-badge":c.TRUST_BADGE};function C(e){const t=e.dataset.widget;return D[t]||null}function J(e){const t=e.querySelector(".jdgm-legacy-widget-content");return t?t.innerHTML.trim().length>20:!1}function A(e,t){if(t===c.ALL_REVIEWS_V2025){const d=window.jdgm?.data?.allReviewsWidgetV2025;return!!(d&&Object.keys(d).length>0)}const n=e.dataset.productId,s=window.jdgm?.data?.reviewWidget?.[n];return!!(s&&s.reviews!==void 0)}function v(e,t,n){const s=window.jdgmSettings?.[t],d=e.dataset.productId,o=J(e),l=A(e,n);let r=null,i="",g="",u=!1;return s?l?(u=!0,o?(r=1,i="Revamp enabled + both data sources available",g="Loading revamp widget (preferred)"):(r=3,i="Revamp enabled + only revamp data",g="Loading revamp widget (only option available)")):o?(r=2,i="Revamp enabled + only legacy data",g="Falling back to legacy widget (revamp data not available)",u=!1):(r="edge-revamp-no-data",i="Revamp enabled + no data sources",g="Loading revamp widget for empty state",u=!0):o?(u=!1,l?(r=4,i="Revamp disabled + both data sources available",g="Showing legacy widget (preferred)"):(r=6,i="Revamp disabled + only legacy data",g="Showing legacy widget (only option available)")):l?(r=5,i="Revamp disabled + only revamp data",g="Falling back to revamp widget (legacy not available)",u=!0):(r="edge-no-data",i="Revamp disabled + no data sources",g="No widget will be shown (no data available)",u=!1),{scenarioId:r,scenarioName:i,decision:g,shouldLoadRevamp:u,metadata:{productId:d,revampEnabled:s,hasLegacyData:o,hasRevampData:l}}}function E(e,t,n,s){a("[Judge.me Widget Loader] "+n+" - Scenario "+t.scenarioId+": "+t.scenarioName),a("[Judge.me Widget Loader] "+n+" - Decision:",t.decision),a("[Judge.me Widget Loader] "+n+" - Debug info:",{...t.metadata,willLoadRevamp:t.shouldLoadRevamp});let d;s===c.ALL_REVIEWS_V2025?d=window.jdgm?.data?.allReviewsWidgetV2025:d=window.jdgm?.data?.reviewWidget?.[t.metadata.productId];const o=!!d;t.metadata.hasRevampData!==o&&(console.warn("[Judge.me Widget Loader] ⚠️ Data mismatch detected!!"),console.warn("[Judge.me Widget Loader] Liquid says hasRevamp:",t.metadata.hasRevampData),console.warn("[Judge.me Widget Loader] JavaScript sees data:",o),console.warn("[Judge.me Widget Loader] Actual data:",d));const l=e.querySelector(".jdgm-legacy-widget-content");if(l){const r=l.innerHTML.trim().length;if(r>0&&r<=20){const i=l.innerHTML.trim().substring(0,50);a("[Judge.me Widget Loader] 📏 Legacy widget is small ("+r+' chars), treating as empty. Content: "'+i+'"')}}}function W(e){const t=e.querySelector(".jdgm-legacy-widget-content");t&&(t.style.display=""),a("[Judge.me Widget Loader] ✅ Legacy widget displayed")}function f(e){const t=e.dataset.entryPoint,n=e.dataset.entryKey;if(!t||!n){a("[Judge.me Widget Loader] ⚠️ Missing entryPoint or entryKey, skipping container");return}const s=window.jdgm.CDN_BASE_URL,d=s+t,o=e.querySelector(".jdgm-rev-widg");if(o&&(o.style.display="none",a("[Judge.me Widget Loader] 🙈 Hidden legacy widget element (.jdgm-rev-widg)")),a("[Judge.me Widget Loader] ⏳ Loading revamp widget:",t),h.has(d)||document.querySelector('script[src="'+d+'"]')){a("[Judge.me Widget Loader] ⏭️ Script already loaded, skipping:",t);return}h.add(d),I(s,n,t).finally(()=>{const l=document.createElement("script");l.type="module",l.src=d,l.onload=()=>{a("[Judge.me Widget Loader] ✅ Revamp widget script loaded successfully:",t)},l.onerror=()=>{console.error("[Judge.me Widget Loader] ❌ Failed to load revamp widget script:",t)},document.head.appendChild(l)})}async function I(e,t,n){if(!(e+n).includes("localhost"))try{let g=function(u){const m=r[u];m&&(m.css&&m.css.forEach(p=>{const S=e+p;if(!document.querySelector('link[href="'+S+'"]')){const y=document.createElement("link");y.rel="stylesheet",y.href=S,document.head.appendChild(y)}}),m.imports&&m.imports.forEach(g))};var d=g;const o=e+"manifest.json?v="+Date.now(),r=await(await fetch(o)).json(),i=r[t];i&&i.css&&i.css.forEach(u=>{const m=e+u;if(!document.querySelector('link[href="'+m+'"]')){const p=document.createElement("link");p.rel="stylesheet",p.href=m,document.head.appendChild(p)}}),i&&i.imports&&i.imports.forEach(g)}catch(o){console.warn("Could not load manifest or CSS files:",o)}}w.forEach((e,t)=>{const n=C(e),s=e.dataset.entryPoint;if(a("[Judge.me Widget Loader] Processing container "+(t+1)+"/"+w.length+" - Type: "+n+", Entry: "+s),!n){a("[Judge.me Widget Loader] ⏭️ Unknown widget type, skipping container");return}switch(n){case c.REVIEW:{const d=v(e,"review_widget_revamp_enabled",c.REVIEW);E(e,d,"Review Widget",c.REVIEW),d.shouldLoadRevamp?f(e):W(e);break}case c.ALL_REVIEWS_V2025:{const d=v(e,"all_reviews_widget_v2025_enabled",c.ALL_REVIEWS_V2025);E(e,d,"All Reviews V2025 Widget",c.ALL_REVIEWS_V2025),d.shouldLoadRevamp?f(e):W(e);break}case c.CAROUSEL:a("[Judge.me Widget Loader] Carousel widget - always loading revamp"),f(e);break;case c.TRUST_BADGE:{a("[Judge.me Widget Loader] Trust Badge widget"),f(e);break}}})})();