1(()=>{if(window.__armadaWishlistStateBound)return;window.__armadaWishlistStateBound=!0;const NAV_SELECTOR="[data-wishlist-nav]",TOGGLE_SELECTOR="[data-wishlist-toggle][data-product-handle]",COUNT_KEY="__armadaWishlistCountHint";let lastLocalChangeAt=0;const HANDLES_KEY="__armadaWishlistHandlesHint",isOn=el=>el.classList.contains("is-wishlisted")||el.getAttribute("aria-pressed")==="true",readCount=()=>{try{const raw=localStorage.getItem(COUNT_KEY),n=raw==null?0:parseInt(raw,10);return Number.isFinite(n)&&n>=0?n:0}catch{return 0}},writeCount=n=>{try{localStorage.setItem(COUNT_KEY,String(Math.max(0,n)))}catch{}},readHandles=()=>{try{const raw=localStorage.getItem(HANDLES_KEY);if(!raw)return[];const arr=JSON.parse(raw);return Array.isArray(arr)?arr.filter(entry=>entry&&entry.handle):[]}catch{return[]}},writeHandles=handles=>{try{localStorage.setItem(HANDLES_KEY,JSON.stringify(handles.slice(0,100)))}catch{}},addHandle=btn=>{const handle=btn.dataset.productHandle;if(!handle)return;const variantId=btn.dataset.variantId||"",handles=readHandles(),existing=handles.find(entry=>entry.handle===handle);if(existing){if(existing.variantId===variantId)return;existing.variantId=variantId}else handles.push({handle,variantId});writeHandles(handles)},removeHandle=btn=>{const handle=btn.dataset.productHandle;handle&&writeHandles(readHandles().filter(entry=>entry.handle!==handle))},syncVariant=(scope,variantId,handle)=>{if(!variantId)return;const root=scope||document;(root.matches?.(TOGGLE_SELECTOR)?[root]:Array.from(root.querySelectorAll?.(TOGGLE_SELECTOR)??[])).forEach(btn=>{handle&&btn.dataset.productHandle!==handle||btn.dataset.variantId!==String(variantId)&&(btn.dataset.variantId=String(variantId),btn.dispatchEvent(new CustomEvent("armada:wishlist-variant-change",{bubbles:!0,detail:{productHandle:btn.dataset.productHandle,variantId:String(variantId)}})))})};window.armadaSyncWishlistVariant=syncVariant;const applyNav=count=>{const filled=count>0;document.documentElement.classList.toggle("wishlist-has-items",filled),document.querySelectorAll(NAV_SELECTOR).forEach(el=>{el.classList.toggle("is-wishlisted",filled),el.dataset.wishlistCount=String(count)})},applyToggleHint=(btn,nowOn,wasOn)=>{if(nowOn===wasOn||btn.__armadaWishlistHintState===nowOn)return;lastLocalChangeAt=Date.now();const next=nowOn?readCount()+1:Math.max(0,readCount()-1);writeCount(next),applyNav(next),nowOn?addHandle(btn):removeHandle(btn),btn.__armadaWishlistHintState=nowOn},ZERO_SETTLE_MS=1500,LOCAL_CHANGE_GRACE_MS=3e3;let zeroTimer=null;const observeAppCount=()=>{const navs=document.querySelectorAll(NAV_SELECTOR);if(!navs.length)return;const readNav=el=>{const raw=el.getAttribute("data-wishlist-count"),n=raw==null?null:parseInt(raw,10);return Number.isFinite(n)&&n>=0?n:null},onValue=el=>{const count=readNav(el);if(count==null||count===readCount())return;if(clearTimeout(zeroTimer),zeroTimer=null,count>0){writeCount(count),applyNav(count);return}const wait=Math.max(ZERO_SETTLE_MS,LOCAL_CHANGE_GRACE_MS-(Date.now()-lastLocalChangeAt));zeroTimer=setTimeout(()=>{readNav(el)===0&&(writeCount(0),applyNav(0))},wait)};navs.forEach(el=>{new MutationObserver(()=>onValue(el)).observe(el,{attributes:!0,attributeFilter:["data-wishlist-count"]}),onValue(el)})},syncFromVisibleToggles=()=>{const onCount=document.querySelectorAll('[data-wishlist-toggle].is-wishlisted, [data-wishlist-toggle][aria-pressed="true"]').length;onCount>readCount()&&(writeCount(onCount),applyNav(onCount))};applyNav(readCount());const initialSync=()=>{observeAppCount(),syncFromVisibleToggles(),setTimeout(syncFromVisibleToggles,600),setTimeout(syncFromVisibleToggles,1500)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",initialSync):initialSync(),document.addEventListener("click",event=>{const btn=event.target&&event.target.closest?event.target.closest(TOGGLE_SELECTOR):null;if(!btn)return;const wasOn=isOn(btn);btn.__armadaWishlistHintState=wasOn;let attempts=0;const poll=setInterval(()=>{attempts+=1;const nowOn=isOn(btn);nowOn!==wasOn?(clearInterval(poll),applyToggleHint(btn,nowOn,wasOn)):attempts>30&&clearInterval(poll)},60)},!0),document.addEventListener("armada:wishlist-state-change",event=>{if(!event.detail||event.detail.optimistic!==!0)return;const btn=event.target&&event.target.closest?event.target.closest(TOGGLE_SELECTOR):null;if(!btn)return;const nowOn=event.detail.inWishlist===!0,wasOn=typeof btn.__armadaWishlistHintState=="boolean"?btn.__armadaWishlistHintState:!nowOn;applyToggleHint(btn,nowOn,wasOn)}),window.addEventListener("storage",event=>{event.key===COUNT_KEY&&applyNav(readCount())})})(); 2//# sourceMappingURL=/cdn/shop/t/41/assets/wishlist-state.js.map?v=157141844262251180751790355519
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.