1// var script_loaded=!1;function loadAsync(){script_loaded||(script_loaded=!0,"undefined"!=typeof observers&&observers.disconnect&&observers.disconnect(),document.dispatchEvent(new CustomEvent("startasyncloading")),document.dispatchEvent(new CustomEvent("StartAsyncLoading")))}var Eventsactivity=["mousedown","mousemove","keydown","scroll","touchstart","click","keypress","touchmove","pointerdown","wheel"];Eventsactivity.forEach((function(n){window.addEventListener(n,loadAsync,{once:!0,passive:!0})})),window.addEventListener?window.addEventListener("load",(function(){setTimeout((function(){script_loaded||loadAsync()}),9e3)}),!1):window.attachEvent?window.attachEvent("onload",(function(){setTimeout((function(){script_loaded||loadAsync()}),9e3)})):window.onload=function(){setTimeout((function(){script_loaded||loadAsync()}),9e3)}; 2 3 4document.dispatchEvent(new CustomEvent("startasyncloading")); 5window.addEventListener("load", function () { 6 document.dispatchEvent(new CustomEvent("StartAsyncLoading")); 7}); 8 9// --- ZEA cart fix (2026-06-26): auto-open cart drawer on ?viewcart=true --- 10// When a customer reaches /cart they are redirected to /?viewcart=true, but nothing 11// was telling the cart drawer to open â so they landed on the homepage unable to see 12// their basket ("the site won't let me retrieve my cart"). This waits for the Vue 13// `cart` instance to be ready, then opens the drawer. Purely additive. 14// TO REVERT: delete this whole block (from this comment to the closing "})();"). 15(function () { 16 if (window.location.search.indexOf('viewcart=true') === -1) return; 17 var tries = 0; 18 var timer = setInterval(function () { 19 if (typeof cart !== 'undefined' && cart.$data) { 20 cart.$data.open = true; 21 clearInterval(timer); 22 } 23 if (++tries > 200) clearInterval(timer); // stop trying after ~20s 24 }, 100); 25})(); 26 27// --- ZEA collection grid + sort fix (2026-07-13): make non-Manual collections behave --- 28// TO REVERT: delete this whole block (from this comment to the closing "})();"). 29(function () { 30 var tries = 0; 31 var timer = setInterval(function () { 32 var c = window.collection; 33 if (c && c.sortedProducts && Object.keys(c.sortedProducts).length > 0) { 34 var sp = c.sortedProducts; 35 var norm = function (s) { return (s || '').toLowerCase().replace(/[^a-zA-Z0-9]+(.)/g, function (m, ch) { return ch.toUpperCase(); }); }; 36 var currentKey = norm(c.sort); 37 var baseKey = sp[currentKey] ? currentKey : Object.keys(sp)[0]; 38 if (!sp['manual']) { 39 sp['manual'] = (sp[baseKey] || c.all_products.map(function (p) { return p.id; })).slice(); 40 } 41 var empty = !c.sortResult || typeof c.sortResult.length === 'undefined' || c.sortResult.length === 0; 42 if (empty) { 43 var ids = sp[baseKey] || sp['manual']; 44 c.sortResult = ids.map(function (id) { 45 var m = c.all_products.filter(function (p) { return p.id === id; })[0]; 46 return m ? Object.assign({}, m) : null; 47 }).filter(Boolean); 48 } 49 clearInterval(timer); 50 } 51 if (++tries > 200) clearInterval(timer); 52 }, 200); 53})();
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.