1import{S as z,Y as J,z as Q,k as G,C as q,M as S,c as g,B as Y,az as $}from"./CVbDcFq-.js";import{b as H}from"./BHDDaKc5.js";import{e as K}from"./_Nx02WK6.js";import{L as V}from"./BEhQlUsW.js";import{u as X}from"./DJRWFTBu.js";import{u as Z}from"./CXzBPJzX.js";import{a as ee}from"./Cz_87Jlk.js";const se=({key:a,ttl:l,storage:u})=>({getItem:()=>{const n=window[u].getItem(a);if(!n)return;const d=JSON.parse(n);if(d.expiresAt&&d.expiresAt<Date.now()){window[u].removeItem(a);return}return d.value},setItem:n=>{const d=l*1e3,m=Date.now()+d,I=JSON.stringify({value:n,expiresAt:m});window[u].setItem(a,I)},removeItem:()=>{window[u].removeItem(a)}}),te=()=>{const{$preferences:{guestWishlistTTL:a}}=z(),l=se({key:"guestWishlist",ttl:a*60,storage:"localStorage"}),u=()=>l.getItem(),n=()=>u()||{id:"guestWishlist",items:[]};return{getGuestWishlist:u,addToGuestWishlist:c=>{const r=n();return r.items=H([...c,...r.items],(f,h)=>f.pid===h.pid),l.setItem(r),r},removeFromGuestWishlist:c=>{const r=n();return r.items=r.items.filter(f=>!c.some(h=>h.pid===f.pid)),l.setItem(r),r},clearGuestWishlist:()=>{l.removeItem()}}},x=V.getLogger({scope:"agnostic",method:"useWishlist"}),ve=a=>{const{session:l,updateSession:u,userLoading:n,expireSession:d}=J(),m=Q(),{trackAddToWishlist:I}=X(),{getGuestWishlist:c,addToGuestWishlist:r,removeFromGuestWishlist:f,clearGuestWishlist:h}=te(),{getDataFromURL:k}=Z(),{getProductUrl:M}=ee(),i=G({addToWishlist:void 0,removeFromWishlist:void 0,updateWishlistProducts:void 0}),v=G(!1),A=G(!1);q(()=>{A.value=!0});const W=S("wishlistItemsToAdd",()=>[]),p=S("wishlistItemsToRemove",()=>[]),w=S("wishlistProducts",()=>({})),_=g(()=>{const s=l.value.isRegistered?l.value.wishlist:c();if(A.value&&s)return{...s,items:[...W.value,...s.items].filter(e=>!p.value.some(t=>t.pid===e.pid))}}),P=g(()=>{var s;return(((s=_.value)==null?void 0:s.items)??[]).map(e=>{const t=w.value[e.pid];return{...e,product:t,productUrl:t?$(M(t),K({searchParams:e==null?void 0:e.availability})):void 0}})}),O=g(()=>{var s;return((s=c())==null?void 0:s.items.filter(e=>!P.value.some(t=>t.pid===e.pid)))??[]}),b=s=>{s!=null&&s.errors.some(e=>e.status===400&&e.title.indexOf("Invalid webstoreId")>-1)&&d()},F=async(s,e)=>{var j;const t=(j=k())==null?void 0:j.searchParams,T=t?s.map(o=>({...o,availability:t})):s;W.value=[...W.value,...T],e&&(w.value={...w.value,...Object.fromEntries(e==null?void 0:e.map(o=>[o.id,o]))}),v.value=!0,i.value={...i.value,addToWishlist:void 0};try{const o=l.value.isRegistered?await m.addToWishlist(T):{ok:!0,payload:r(T),error:void 0};o.ok?(u({wishlist:o.payload}),e!=null&&e.length&&I(e[0])):(i.value={...i.value,addToWishlist:{__general__:"errors.global.default"}},b(o.error))}catch(o){i.value={...i.value,addToWishlist:{__general__:"errors.global.default"}},x.error("Error adding to wishlist",o)}finally{W.value=W.value.filter(o=>!T.some(N=>N.pid===o.pid))}v.value=!1},R=async s=>{v.value=!0,i.value={...i.value,removeFromWishlist:void 0},p.value=[...p.value,...s];try{const e=l.value.isRegistered?await m.removeFromWishlist(s):{ok:!0,payload:f(s),error:void 0};e.ok?u({wishlist:e.payload}):(i.value={...i.value,removeFromWishlist:{__general__:"errors.global.default"}},b(e.error))}catch(e){i.value={...i.value,removeFromWishlist:{__general__:"errors.global.default"}},x.error("Error removing from wishlist",e)}finally{p.value=p.value.filter(e=>!s.some(t=>t.pid===e.pid))}v.value=!1},L=s=>{var e;return!!((e=_.value)!=null&&e.items.some(t=>t.pid===s))},B=async(s,e)=>{const t=e?[e]:void 0;await(L(s.pid)?R([s]):F([s],t))},C=async()=>{const s=P.value.filter(e=>!e.product).map(e=>e.pid);if(s.length!==0){v.value=!0;try{const e=await m.getProducts({ids:s.join(",")});e.ok?w.value={...w.value,...Object.fromEntries(e.payload.map(t=>[t.id,t]))}:(i.value={...i.value,updateWishlistProducts:{__general__:"errors.global.default"}},b(e.error))}catch(e){i.value={...i.value,updateWishlistProducts:{__general__:"errors.global.default"}},x.error("Error updating wishlist products",e)}v.value=!1}};let U=()=>{};const y=G(!1),D=s=>{s&&F(O.value),h(),y.value=!1,U()},E=s=>{y.value=O.value.length>0,y.value?s&&(U=s):(h(),s&&s())};return a!=null&&a.loadWishlistProducts&&Y(()=>{var s;return(s=_.value)==null?void 0:s.items.map(e=>e.pid).join(",")},()=>C(),{immediate:!0}),{loading:g(()=>v.value||n.value),error:g(()=>i.value),wishlist:_,wishlistItems:P,wishlistPromptOpen:g(()=>y.value),addToWishlist:F,removeFromWishlist:R,toggleWishlistItem:B,inWishlist:L,mergeWishlistItems:D,processWishlistItems:E}};export{se as a,ve as u};
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.