@dropins/storefront-cart 1.5.1-beta1 → 1.5.1-beta2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{jsx as r,jsxs as S,Fragment as z}from"@dropins/tools/preact-jsx-runtime.js";import*as X from"@dropins/tools/preact-compat.js";import{forwardRef as ne,useState as B,useEffect as D,useCallback as Et,useImperativeHandle as re}from"@dropins/tools/preact-compat.js";import{classes as O,VComponent as J,Slot as m}from"@dropins/tools/lib.js";import{E as ie}from"./EmptyCart2.js";/* empty css */import{Divider as Bt,Skeleton as ae,SkeletonRow as ce,InLineAlert as $t,CartList as K,Icon as Y,Button as Z,Accordion as oe,AccordionSection as se,CartItem as ue,Price as q,Incrementer as de,Image as le}from"@dropins/tools/components.js";import"@dropins/tools/preact-hooks.js";import{g as Xt}from"./persisted-data.js";import{events as Gt}from"@dropins/tools/event-bus.js";import{s as me}from"./resetCart.js";import{a as ge}from"./createGuestCart.js";import{u as Rt}from"./updateProductsFromCart.js";import{S as Tt,a as fe,b as he}from"./Trash.js";import{S as ve}from"./ChevronDown.js";import{useText as ye}from"@dropins/tools/i18n.js";const pe=N=>X.createElement("svg",{id:"Icon_Chevron_right_Base","data-name":"Icon \\u2013 Chevron right \\u2013 Base",xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",...N},X.createElement("g",{id:"Large"},X.createElement("rect",{id:"Placement_area","data-name":"Placement area",width:24,height:24,fill:"#fff",opacity:0}),X.createElement("g",{id:"Chevron_right_icon","data-name":"Chevron right icon"},X.createElement("path",{vectorEffect:"non-scaling-stroke",id:"chevron",d:"M199.75,367.5l4.255,-4.255-4.255,-4.255",transform:"translate(-189.25 -351.0)",fill:"none",stroke:"currentColor"})))),Ut=({className:N,children:tt,heading:P,footer:_,emptyCart:$,products:h,outOfStockMessage:y,variant:G="primary",loading:g=!0,...i})=>r("div",{...i,className:O(["cart-cart-summary-list",N,`cart-cart-summary-list__background--${G}`]),children:g?r(Ce,{}):S(z,{children:[(P||y)&&S("div",{"data-testid":"cart-summary-list-heading-wrapper",className:O(["cart-cart-summary-list__heading",["cart-cart-summary-list__heading--full-width",!h]]),children:[P&&S(z,{children:[r(J,{node:P,className:"cart-cart-summary-list__heading-text"}),r(Bt,{variant:"primary",className:O(["cart-cart-summary-list__heading-divider"])})]}),y&&r(J,{node:y,className:"cart-cart-summary-list__out-of-stock-message"})]}),r("div",{className:O(["cart-cart-summary-list__content",["cart-cart-summary-list__content--empty",!h]]),children:h||r(J,{node:$,className:"cart-cart-summary-list__empty-cart"})}),_&&S(z,{children:[r(Bt,{variant:"primary",className:O(["cart-cart-summary-list__footer-divider"])}),r(J,{node:_,className:"cart-cart-summary-list__footer-text"})]})]})}),Ce=()=>r(ae,{"data-testid":"cart-summary-list-skeleton",className:"cart-cart-summary-list__skeleton",rowGap:"medium",children:r(ce,{variant:"row",size:"xlarge",fullWidth:!0,lines:3,multilineGap:"small"})}),Ie=ne(({initialData:N=null,hideHeading:tt,hideFooter:P,routeProduct:_,routeEmptyCartCTA:$,routeCart:h,onItemUpdate:y,onItemRemove:G,maxItems:g,slots:i,attributesToHide:d=[],enableRemoveItem:L,enableUpdateItemQuantity:R,onItemsErrorsChange:M,accordion:qt=!1,variant:H="primary",isLoading:zt,showMaxItems:et,showDiscount:nt,showSavings:rt,quantityType:it,dropdownOptions:at,undo:Q=!1,__testRecentlyRemovedItems:ct,...ot},Ft)=>{var Lt;const[T,Wt]=B(!N),[a,jt]=B(N),[f,Vt]=B(new Set),[F,st]=B(new Map),[w,A]=B(ct||[]);D(()=>{},[ct,w]);const l=(Lt=me.config)==null?void 0:Lt.shoppingCartDisplaySetting,[b,Dt]=B(et?!0:!g&&!et),c=ye({file:"Cart.CartItem.file",files:"Cart.CartItem.files",heading:"Cart.Cart.heading",message:"Cart.CartItem.message",recipient:"Cart.CartItem.recipient",regularPrice:"Cart.CartItem.regularPrice",discountedPrice:"Cart.CartItem.discountedPrice",sender:"Cart.CartItem.sender",lowInventory:"Cart.CartItem.lowInventory",insufficientQuantity:"Cart.CartItem.insufficientQuantity",insufficientQuantityGeneral:"Cart.CartItem.insufficientQuantityGeneral",outOfStockHeading:"Cart.OutOfStockMessage.heading",outOfStockDescription:"Cart.OutOfStockMessage.message",outOfStockAlert:"Cart.OutOfStockMessage.alert",removeAction:"Cart.OutOfStockMessage.action",notAvailableMessage:"Cart.CartItem.notAvailableMessage",viewMore:"Cart.Cart.viewMore",viewAll:"Cart.Cart.viewAll",discountPercent:"Cart.CartItem.discountPercentage",savingsAmount:"Cart.CartItem.savingsAmount",itemBeingRemoved:"Cart.CartItem.itemBeingRemoved",itemRemoved:"Cart.CartItem.itemRemoved",itemRemovedDescription:"Cart.CartItem.itemRemovedDescription",undoAction:"Cart.CartItem.undoAction",dismissAction:"Cart.CartItem.dismissAction",remove:"Dropin.CartItem.remove.label",removeDefault:"Dropin.CartItem.removeDefault.label"}),E=(t,e)=>{Vt(n=>(e?n.add(t):n.delete(t),new Set(n)))},W=(t,e)=>{st(n=>(e?n.set(t,e):n.delete(t),new Map(n)))};function Jt(t){const e=Xt(),n=e==null?void 0:e.items.find(o=>o.uid===t);n&&A(o=>{const s=e.items.findIndex(u=>u.uid===t);return s!==-1&&!o.some(u=>u.item.uid===t)?(Gt.emit("cart/product/removed",{item:n,index:s}),[...o,{item:n,index:s,error:void 0,beingRemoved:!0}]):o})}const x=(t,e)=>{E(t.uid,!0),st(new Map),L&&e===0?(Jt(t.uid),Rt([{uid:t.uid,quantity:e}]).then(()=>{G==null||G({item:t})}).finally(()=>{E(t.uid,!1),A(n=>n.map(o=>o.item.uid===t.uid?{...o,beingRemoved:!1}:o))}).catch(n=>{console.warn(n)})):R&&Rt([{uid:t.uid,quantity:e}]).then(()=>{y==null||y({item:t})}).finally(()=>{E(t.uid,!1)}).catch(n=>{W(t.uid,n.message)})},ut=t=>{A(e=>e.filter(n=>n.item.uid!==t))},Kt=Et(()=>{Dt(t=>!t)},[]);D(()=>{const t=Gt.on("cart/data",e=>{jt(e),Wt(!!zt)},{eager:!0});return()=>{t==null||t.off()}},[]),D(()=>{Q||A([])},[Q]),D(()=>{M&&M(F)},[F,M]);const dt=(t,e)=>{if(d.includes("image"))return;const n={loading:e<4?"eager":"lazy",src:t.image.src,alt:t.image.alt,width:"300",height:"300",params:{width:300}},o=r(le,{"data-testid":"cart-list-item-image",...n});return r(m,{name:"Thumbnail",slot:i==null?void 0:i.Thumbnail,context:{item:t,defaultImageProps:n},children:_?r("a",{href:_(t),children:o}):o})},lt=t=>{if(!d.includes("name"))return r("span",{"data-testid":"cart-list-item-title",children:_?r("a",{href:_(t),children:t.name}):t.name})},mt=t=>{if(d.includes("configurations"))return;const e={...t.bundleOptions,...t.selectedOptions,...t.customizableOptions,...t.recipient?{[c.recipient]:t.recipient}:null,...t.recipientEmail&&t.recipient?{[c.recipient]:`${t.recipient} (${t.recipientEmail})`}:null,...t.sender?{[c.sender]:t.sender}:null,...t.senderEmail&&t.sender?{[c.sender]:`${t.sender} (${t.senderEmail})`}:{},...t.message?{[c.message]:t.message}:null,...t.links&&t.links.count?t.links.count>1?{[c.files.replace("{count}",t.links.count.toString())]:t.links.result}:{[c.file.replace("{count}",t.links.count.toString())]:t.links.result}:null};if(Object.keys(e).length!==0)return e},gt=t=>{var e,n,o,s;return(l==null?void 0:l.price)==="INCLUDING_TAX"?t.discounted?{amount:t.regularPrice.value,currency:t.regularPrice.currency,style:{font:"inherit"},"data-testid":"including-tax-item-price"}:{amount:(e=t.taxedPrice)==null?void 0:e.value,currency:(n=t.taxedPrice)==null?void 0:n.currency,style:{font:"inherit"},"data-testid":"including-tax-item-price"}:{amount:(o=t.regularPrice)==null?void 0:o.value,currency:(s=t.regularPrice)==null?void 0:s.currency,style:{font:"inherit"},"data-testid":"regular-item-price"}},ft=t=>{var e,n;return{amount:(e=t.savingsAmount)==null?void 0:e.value,currency:(n=t.savingsAmount)==null?void 0:n.currency,style:{font:"inherit"},"data-testid":"item-savings-amount"}},ht=t=>(l==null?void 0:l.price)==="INCLUDING_EXCLUDING_TAX"?r(q,{amount:t.rowTotal.value,currency:t.rowTotal.currency,"data-testid":"excluding-tax-total","aria-label":c.regularPrice}):void 0,vt=t=>{var o,s,u,v,C,I,k,U,Qt,bt;const e={"aria-label":c.regularPrice},n=t.discounted?{}:null;return["INCLUDING_TAX","INCLUDING_EXCLUDING_TAX"].includes(l==null?void 0:l.price)?(e.amount=(o=t.rowTotalIncludingTax)==null?void 0:o.value,e.currency=(s=t.rowTotalIncludingTax)==null?void 0:s.currency,e.variant=t.discounted?"strikethrough":"default",e["data-testid"]="including-tax-item-total",n&&(e.amount=(u=t.total)==null?void 0:u.value,e.currency=(v=t.total)==null?void 0:v.currency,n.amount=(C=t.rowTotalIncludingTax)==null?void 0:C.value,n.currency=(I=t.rowTotalIncludingTax)==null?void 0:I.currency,n.sale=!0,n["aria-label"]=c.discountedPrice,n["data-testid"]="discount-total")):(e.amount=(k=t.total)==null?void 0:k.value,e.currency=(U=t.total)==null?void 0:U.currency,e.variant=t.discounted?"strikethrough":"default",e["data-testid"]="regular-item-total",n&&(n.amount=(Qt=t.discountedTotal)==null?void 0:Qt.value,n.currency=(bt=t.discountedTotal)==null?void 0:bt.currency,n.sale=!0,n["aria-label"]=c.regularPrice,n["data-testid"]="discount-total")),{totalProps:e,discountProps:n}},yt=t=>{var C,I,k;if(d.includes("warning"))return;const e=F.get(t.uid),n=(C=F.get(t.uid))==null?void 0:C.includes("The requested qty is not available"),o=f.has(t.uid),s=t.insufficientQuantity&&t.stockLevel?t.stockLevel==="noNumber"?c.insufficientQuantityGeneral:c.insufficientQuantity.replace("{inventory}",(I=t.stockLevel)==null?void 0:I.toString()).replace("{count}",t.quantity.toString()):"",u=t.lowInventory&&t.onlyXLeftInStock&&c.lowInventory.replace("{count}",(k=t.onlyXLeftInStock)==null?void 0:k.toString()),v=!t.outOfStock&&e&&n?c.notAvailableMessage:e;return!o&&(e||t.insufficientQuantity||t.lowInventory)?S("span",{"data-testid":"item-warning",children:[r(Y,{source:fe,size:"16"}),v||s||u]}):void 0},pt=t=>d!=null&&d.includes("alert")?void 0:!f.has(t.uid)&&t.outOfStock?S("span",{"data-testid":"item-alert",children:[r(Y,{source:Tt,size:"16"}),c.outOfStockAlert]}):void 0,Ct=t=>r(m,{name:"ProductAttributes",slot:i==null?void 0:i.ProductAttributes,context:{item:t}}),It=t=>{if(!d.includes("sku"))return r("span",{"data-testid":"cart-list-item-sku",children:t.sku})},kt=t=>r(m,{name:"Footer",slot:i==null?void 0:i.Footer,context:{item:t,handleItemsLoading:E,handleItemsError:W,onItemUpdate:y}}),Yt=t=>{var e;if(L)return r(m,{name:"ItemRemoveAction",slot:i==null?void 0:i.ItemRemoveAction,context:{item:t,enableRemoveItem:L,handleItemQuantityUpdate:x,handleItemsError:W,handleItemsLoading:E,onItemUpdate:y,itemsLoading:f},children:r(Z,{"data-testid":"cart-item-remove-button",className:O(["dropin-cart-item__remove"]),variant:"tertiary",onClick:()=>x(t,0),disabled:f.has(t.uid),icon:r(Y,{"data-testid":"cart-item-remove-icon",source:he,size:"24",stroke:"2",viewBox:"0 0 24 24","aria-label":((e=c.remove)==null?void 0:e.replace("{product}",t.name))||c.removeDefault})})})},Zt=t=>{if(!d.includes("quantity")&&R)return r(m,{name:"ItemQuantity",slot:i==null?void 0:i.ItemQuantity,context:{item:t,enableUpdateItemQuantity:R,handleItemQuantityUpdate:x,itemsLoading:f,handleItemsError:W,handleItemsLoading:E,onItemUpdate:y},children:r(de,{value:t.quantity,min:1,onValue:e=>x(t,Number(e)),name:"quantity",disabled:f.has(t.uid)})})},St=t=>a!=null&&a.totalQuantity?a.items.filter(t).map((e,n)=>{var v;const{totalProps:o,discountProps:s}=vt(e),u=r(ue,{updating:f==null?void 0:f.has(e.uid),loading:T,"data-testid":`cart-list-item-entry-${e.uid}`,image:dt(e,n),title:r(m,{name:"ItemTitle",slot:i==null?void 0:i.ItemTitle,context:{item:e},children:lt(e)}),sku:d.includes("sku")?void 0:r(m,{name:"ItemSku",slot:i==null?void 0:i.ItemSku,context:{item:e},children:It(e)}),price:d.includes("price")?void 0:r(m,{name:"ItemPrice",slot:i==null?void 0:i.ItemPrice,context:{item:e},slotTag:"span",children:r(q,{...gt(e)})}),quantity:d.includes("quantity")?void 0:e.quantity,quantityContent:Zt(e),total:S(z,{children:[d.includes("total")?void 0:r(m,{name:"ItemTotal",slot:i==null?void 0:i.ItemTotal,context:{item:e},children:r(q,{...o})}),d.includes("totalDiscount")?void 0:s&&r(m,{name:"ItemTotal",slot:i==null?void 0:i.ItemTotal,context:{item:e},children:r(q,{...s})})]}),attributes:Ct(e),configurations:mt(e),totalExcludingTax:d.includes("totalExcludingTax")?void 0:ht(e),taxIncluded:(l==null?void 0:l.price)==="INCLUDING_TAX",taxExcluded:!d.includes("totalExcludingTax")&&(l==null?void 0:l.price)==="INCLUDING_EXCLUDING_TAX",warning:yt(e),alert:pt(e),quantityType:it,dropdownOptions:at,onQuantity:R&&!f.has(e.uid)?C=>{x(e,C)}:void 0,onRemove:L&&!f.has(e.uid)?()=>x(e,0):void 0,discount:nt&&e.discounted&&e.discountPercentage?r("div",{"data-testid":"item-discount-percent",children:c.discountPercent.replace("{discount}",((v=e.discountPercentage)==null?void 0:v.toString())??"")}):void 0,savings:rt&&e.discounted&&e.savingsAmount?S("div",{children:[r("span",{children:r(q,{...ft(e)})})," ",c.savingsAmount]}):void 0,footer:kt(e),removeContent:Yt(e)},e.uid);return r(m,{name:"CartItem",slot:i==null?void 0:i.CartItem,context:{item:e,index:n,enableUpdateItemQuantity:R,enableRemoveItem:L,itemsLoading:f,loading:T,attributesToHide:d,cartTaxesConfig:l,quantityType:it,dropdownOptions:at,showDiscount:nt,showSavings:rt,dictionary:c,getImage:dt,getTitle:lt,getSku:It,getPriceProps:gt,getTotalPriceProps:vt,getProductAttributes:Ct,getConfiguration:mt,getTotalExcludingTax:ht,getWarning:yt,getAlert:pt,getFooter:kt,getSavingsAmount:ft},children:u},e.uid)}):null,_t=r(m,{name:"Heading",slot:i==null?void 0:i.Heading,context:{count:a==null?void 0:a.totalQuantity},children:r("div",{"data-testid":"default-cart-heading",children:c.heading.replace("({count})",a!=null&&a.totalQuantity?`(${a==null?void 0:a.totalQuantity.toString()})`:"")})}),Mt=_t.props.children.props.children,Ht=()=>{const t=a==null?void 0:a.items.filter(e=>e.outOfStock);t==null||t.forEach(e=>{x(e,0)})},te=St(t=>t.outOfStock||t.insufficientQuantity||!1),wt=a!=null&&a.hasOutOfStockItems?r($t,{"data-testid":"cart-out-of-stock-message",icon:r(Y,{source:Tt,size:"16"}),itemList:r(K,{"data-testid":"out-of-stock-cart-items",children:te}),type:"warning",heading:c.outOfStockHeading,description:c.outOfStockDescription,variant:"primary",actionButtonPosition:"bottom",additionalActions:a!=null&&a.hasFullyOutOfStockItems&&L?[{label:c.removeAction,onClick:Ht}]:void 0}):void 0,p=St(t=>!t.outOfStock&&!t.insufficientQuantity),At=b?Math.max(g||5,5):Math.min((a==null?void 0:a.totalQuantity)||5,5),xt=(a==null?void 0:a.totalQuantity)>At,ee=xt&&!b&&At!=g,j=a!=null&&a.totalQuantity&&p?r(m,{name:"Footer",slot:i==null?void 0:i.CartSummaryFooter,context:{displayMaxItems:b,routeCart:h},"data-testid":"cart-cart-summary-footer-slot",className:"cart-cart-summary-footer",children:xt?ee?r(Z,{className:"cart-cart-summary-list-footer__action",onClick:Kt,"data-testid":"view-more-items-button",variant:"tertiary",children:c.viewMore}):h&&r(Z,{className:"cart-cart-summary-list-footer__action",href:h(),variant:"tertiary","data-testid":"view-cart-or-less-items-button",children:c.viewAll}):h&&r(Z,{className:"cart-cart-summary-list-footer__action",href:h(),variant:"tertiary","data-testid":"view-cart-button",children:c.viewAll})}):null,Ot=()=>{if(!(a!=null&&a.items))return null;const t=[],e=a.items,n=i==null?void 0:i.UndoBanner,o=b?Math.max(g||(a==null?void 0:a.totalQuantity),5):Math.min(g??5,5);for(let s=0;s<=o;s++)Q&&w.filter(u=>u.index===s).forEach(({item:u,error:v,beingRemoved:C})=>{var k,U;const I=r($t,{type:v?"error":"info",heading:C?(k=c.itemBeingRemoved)==null?void 0:k.replace("{product}",u.name):(U=c.itemRemoved)==null?void 0:U.replace("{product}",u.name),description:v||c.itemRemovedDescription,variant:"primary",actionButtonPosition:"bottom",additionalActions:C?[]:[{label:c.undoAction,onClick:()=>V(u.uid),"aria-label":`${c.undoAction} remove ${u.name}`},{label:c.dismissAction,onClick:()=>ut(u.uid),"aria-label":`${c.dismissAction} undo for ${u.name}`}]},`undo-banner-${u.uid}`);t.push(n?r(m,{name:"UndoBanner",slot:n,context:{item:u,loading:T,error:v,onUndo:()=>V(u.uid),onDismiss:()=>ut(u.uid)},children:I},`undo-banner-${u.uid}`):I)}),s<o&&s<e.length&&t.push((p==null?void 0:p[s])||null);return r(K,{"data-testid":"cart-list",children:t})},V=Et(async t=>{A(n=>n.map(o=>o.item.uid===t?{...o,loading:!0,error:void 0}:o));const e=w.find(n=>n.item.uid===t);if(e)try{await ge([{sku:e.item.sku,parentSku:e.item.topLevelSku,quantity:e.item.quantity,optionsUIDs:e.item.bundleOptionsUIDs||(e.item.selectedOptionsUIDs?Object.values(e.item.selectedOptionsUIDs):void 0),enteredOptions:e.item.customizableOptions?Object.entries(e.item.customizableOptions).map(([n,o])=>({uid:n,value:o})):void 0}]),A(n=>n.filter(o=>o.item.uid!==t))}catch(n){A(o=>o.map(s=>s.item.uid===t?{...s,error:(n==null?void 0:n.message)||"Failed to restore item."}:s))}},[w]);re(Ft,()=>({handleUndo:V}),[V]);const Nt=r(z,{children:Q&&w.length>0?Ot():r(m,{name:"EmptyCart",slot:i==null?void 0:i.EmptyCart,context:{},children:r(ie,{"data-testid":"empty-cart",ctaLinkURL:$==null?void 0:$()})})}),Pt=a!=null&&a.totalQuantity||Q&&w.length>0?Q?w.length>0?Ot():r(K,{"data-testid":"cart-list",children:p==null?void 0:p.slice(0,b?Math.max(g||(a==null?void 0:a.totalQuantity),5):Math.min(g??5,5))}):r(K,{"data-testid":"cart-list",children:p==null?void 0:p.slice(0,b?Math.max(g||(a==null?void 0:a.totalQuantity),5):Math.min(g??5,5))}):null;return qt?r(oe,{"data-testid":"cart-summary-list-accordion",className:O(["cart-cart-summary-list-accordion",`cart-cart-summary-list__background--${H}`]),iconOpen:pe,iconClose:ve,children:r(se,{title:Mt,"data-testid":"cart-summary-list-accordion__section",open:!0,renderContentWhenClosed:!0,children:r(Ut,{...ot,"aria-expanded":!0,"aria-label":"TEST",className:"cart-cart-summary-list-accordion__list",loading:T,footer:P?void 0:j||(h?j:void 0),emptyCart:Nt,products:Pt,outOfStockMessage:wt,variant:H})})}):r(Ut,{...ot,heading:tt?void 0:_t,footer:P?void 0:j||(h?j:void 0),loading:T,emptyCart:Nt,products:Pt,outOfStockMessage:wt,variant:H})});Ie.getInitialData=async function(){return Xt()};export{Ie as C};
3
+ import{jsx as r,jsxs as S,Fragment as z}from"@dropins/tools/preact-jsx-runtime.js";import*as U from"@dropins/tools/preact-compat.js";import{forwardRef as ne,useState as B,useEffect as D,useCallback as Et,useImperativeHandle as re}from"@dropins/tools/preact-compat.js";import{classes as O,VComponent as J,Slot as m}from"@dropins/tools/lib.js";import{E as ie}from"./EmptyCart2.js";/* empty css */import{Divider as Bt,Skeleton as ae,SkeletonRow as ce,InLineAlert as $t,CartList as K,Icon as Y,Button as Z,Accordion as oe,AccordionSection as se,CartItem as ue,Price as X,Incrementer as le,Image as de}from"@dropins/tools/components.js";import"@dropins/tools/preact-hooks.js";import{g as Ut}from"./persisted-data.js";import{events as Gt}from"@dropins/tools/event-bus.js";import{s as me}from"./resetCart.js";import{a as ge}from"./createGuestCart.js";import{u as Rt}from"./updateProductsFromCart.js";import{S as qt,a as fe,b as he}from"./Trash.js";import{S as ve}from"./ChevronDown.js";import{useText as ye}from"@dropins/tools/i18n.js";const pe=N=>U.createElement("svg",{id:"Icon_Chevron_right_Base","data-name":"Icon \\u2013 Chevron right \\u2013 Base",xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",...N},U.createElement("g",{id:"Large"},U.createElement("rect",{id:"Placement_area","data-name":"Placement area",width:24,height:24,fill:"#fff",opacity:0}),U.createElement("g",{id:"Chevron_right_icon","data-name":"Chevron right icon"},U.createElement("path",{vectorEffect:"non-scaling-stroke",id:"chevron",d:"M199.75,367.5l4.255,-4.255-4.255,-4.255",transform:"translate(-189.25 -351.0)",fill:"none",stroke:"currentColor"})))),Tt=({className:N,children:tt,heading:P,footer:_,emptyCart:$,products:h,outOfStockMessage:y,variant:G="primary",loading:g=!0,...i})=>r("div",{...i,className:O(["cart-cart-summary-list",N,`cart-cart-summary-list__background--${G}`]),children:g?r(Ce,{}):S(z,{children:[(P||y)&&S("div",{"data-testid":"cart-summary-list-heading-wrapper",className:O(["cart-cart-summary-list__heading",["cart-cart-summary-list__heading--full-width",!h]]),children:[P&&S(z,{children:[r(J,{node:P,className:"cart-cart-summary-list__heading-text"}),r(Bt,{variant:"primary",className:O(["cart-cart-summary-list__heading-divider"])})]}),y&&r(J,{node:y,className:"cart-cart-summary-list__out-of-stock-message"})]}),r("div",{className:O(["cart-cart-summary-list__content",["cart-cart-summary-list__content--empty",!h]]),children:h||r(J,{node:$,className:"cart-cart-summary-list__empty-cart"})}),_&&S(z,{children:[r(Bt,{variant:"primary",className:O(["cart-cart-summary-list__footer-divider"])}),r(J,{node:_,className:"cart-cart-summary-list__footer-text"})]})]})}),Ce=()=>r(ae,{"data-testid":"cart-summary-list-skeleton",className:"cart-cart-summary-list__skeleton",rowGap:"medium",children:r(ce,{variant:"row",size:"xlarge",fullWidth:!0,lines:3,multilineGap:"small"})}),Ie=ne(({initialData:N=null,hideHeading:tt,hideFooter:P,routeProduct:_,routeEmptyCartCTA:$,routeCart:h,onItemUpdate:y,onItemRemove:G,maxItems:g,slots:i,attributesToHide:l=[],enableRemoveItem:L,enableUpdateItemQuantity:R,onItemsErrorsChange:M,accordion:Xt=!1,variant:H="primary",isLoading:zt,showMaxItems:et,showDiscount:nt,showSavings:rt,quantityType:it,dropdownOptions:at,undo:b=!1,__testRecentlyRemovedItems:ct,...ot},Ft)=>{var Lt;const[q,Wt]=B(!N),[a,jt]=B(N),[f,Vt]=B(new Set),[F,st]=B(new Map),[w,A]=B(ct||[]);D(()=>{},[ct,w]);const d=(Lt=me.config)==null?void 0:Lt.shoppingCartDisplaySetting,[Q,Dt]=B(et?!0:!g&&!et),c=ye({file:"Cart.CartItem.file",files:"Cart.CartItem.files",heading:"Cart.Cart.heading",message:"Cart.CartItem.message",recipient:"Cart.CartItem.recipient",regularPrice:"Cart.CartItem.regularPrice",discountedPrice:"Cart.CartItem.discountedPrice",sender:"Cart.CartItem.sender",lowInventory:"Cart.CartItem.lowInventory",insufficientQuantity:"Cart.CartItem.insufficientQuantity",insufficientQuantityGeneral:"Cart.CartItem.insufficientQuantityGeneral",outOfStockHeading:"Cart.OutOfStockMessage.heading",outOfStockDescription:"Cart.OutOfStockMessage.message",outOfStockAlert:"Cart.OutOfStockMessage.alert",removeAction:"Cart.OutOfStockMessage.action",notAvailableMessage:"Cart.CartItem.notAvailableMessage",viewMore:"Cart.Cart.viewMore",viewAll:"Cart.Cart.viewAll",discountPercent:"Cart.CartItem.discountPercentage",savingsAmount:"Cart.CartItem.savingsAmount",itemBeingRemoved:"Cart.CartItem.itemBeingRemoved",itemRemoved:"Cart.CartItem.itemRemoved",itemRemovedDescription:"Cart.CartItem.itemRemovedDescription",undoAction:"Cart.CartItem.undoAction",dismissAction:"Cart.CartItem.dismissAction",remove:"Dropin.CartItem.remove.label",removeDefault:"Dropin.CartItem.removeDefault.label",quantity:"Dropin.CartItem.quantity.label"}),E=(t,e)=>{Vt(n=>(e?n.add(t):n.delete(t),new Set(n)))},W=(t,e)=>{st(n=>(e?n.set(t,e):n.delete(t),new Map(n)))};function Jt(t){const e=Ut(),n=e==null?void 0:e.items.find(o=>o.uid===t);n&&A(o=>{const s=e.items.findIndex(u=>u.uid===t);return s!==-1&&!o.some(u=>u.item.uid===t)?(Gt.emit("cart/product/removed",{item:n,index:s}),[...o,{item:n,index:s,error:void 0,beingRemoved:!0}]):o})}const x=(t,e)=>{E(t.uid,!0),st(new Map),L&&e===0?(Jt(t.uid),Rt([{uid:t.uid,quantity:e}]).then(()=>{G==null||G({item:t})}).finally(()=>{E(t.uid,!1),A(n=>n.map(o=>o.item.uid===t.uid?{...o,beingRemoved:!1}:o))}).catch(n=>{console.warn(n)})):R&&Rt([{uid:t.uid,quantity:e}]).then(()=>{y==null||y({item:t})}).finally(()=>{E(t.uid,!1)}).catch(n=>{W(t.uid,n.message)})},ut=t=>{A(e=>e.filter(n=>n.item.uid!==t))},Kt=Et(()=>{Dt(t=>!t)},[]);D(()=>{const t=Gt.on("cart/data",e=>{jt(e),Wt(!!zt)},{eager:!0});return()=>{t==null||t.off()}},[]),D(()=>{b||A([])},[b]),D(()=>{M&&M(F)},[F,M]);const lt=(t,e)=>{if(l.includes("image"))return;const n={loading:e<4?"eager":"lazy",src:t.image.src,alt:t.image.alt,width:"300",height:"300",params:{width:300}},o=r(de,{"data-testid":"cart-list-item-image",...n});return r(m,{name:"Thumbnail",slot:i==null?void 0:i.Thumbnail,context:{item:t,defaultImageProps:n},children:_?r("a",{href:_(t),children:o}):o})},dt=t=>{if(!l.includes("name"))return r("span",{"data-testid":"cart-list-item-title",children:_?r("a",{href:_(t),children:t.name}):t.name})},mt=t=>{if(l.includes("configurations"))return;const e={...t.bundleOptions,...t.selectedOptions,...t.customizableOptions,...t.recipient?{[c.recipient]:t.recipient}:null,...t.recipientEmail&&t.recipient?{[c.recipient]:`${t.recipient} (${t.recipientEmail})`}:null,...t.sender?{[c.sender]:t.sender}:null,...t.senderEmail&&t.sender?{[c.sender]:`${t.sender} (${t.senderEmail})`}:{},...t.message?{[c.message]:t.message}:null,...t.links&&t.links.count?t.links.count>1?{[c.files.replace("{count}",t.links.count.toString())]:t.links.result}:{[c.file.replace("{count}",t.links.count.toString())]:t.links.result}:null};if(Object.keys(e).length!==0)return e},gt=t=>{var e,n,o,s;return(d==null?void 0:d.price)==="INCLUDING_TAX"?t.discounted?{amount:t.regularPrice.value,currency:t.regularPrice.currency,style:{font:"inherit"},"data-testid":"including-tax-item-price"}:{amount:(e=t.taxedPrice)==null?void 0:e.value,currency:(n=t.taxedPrice)==null?void 0:n.currency,style:{font:"inherit"},"data-testid":"including-tax-item-price"}:{amount:(o=t.regularPrice)==null?void 0:o.value,currency:(s=t.regularPrice)==null?void 0:s.currency,style:{font:"inherit"},"data-testid":"regular-item-price"}},ft=t=>{var e,n;return{amount:(e=t.savingsAmount)==null?void 0:e.value,currency:(n=t.savingsAmount)==null?void 0:n.currency,style:{font:"inherit"},"data-testid":"item-savings-amount"}},ht=t=>(d==null?void 0:d.price)==="INCLUDING_EXCLUDING_TAX"?r(X,{amount:t.rowTotal.value,currency:t.rowTotal.currency,"data-testid":"excluding-tax-total","aria-label":c.regularPrice}):void 0,vt=t=>{var o,s,u,v,C,I,k,T,bt,Qt;const e={"aria-label":c.regularPrice},n=t.discounted?{}:null;return["INCLUDING_TAX","INCLUDING_EXCLUDING_TAX"].includes(d==null?void 0:d.price)?(e.amount=(o=t.rowTotalIncludingTax)==null?void 0:o.value,e.currency=(s=t.rowTotalIncludingTax)==null?void 0:s.currency,e.variant=t.discounted?"strikethrough":"default",e["data-testid"]="including-tax-item-total",n&&(e.amount=(u=t.total)==null?void 0:u.value,e.currency=(v=t.total)==null?void 0:v.currency,n.amount=(C=t.rowTotalIncludingTax)==null?void 0:C.value,n.currency=(I=t.rowTotalIncludingTax)==null?void 0:I.currency,n.sale=!0,n["aria-label"]=c.discountedPrice,n["data-testid"]="discount-total")):(e.amount=(k=t.total)==null?void 0:k.value,e.currency=(T=t.total)==null?void 0:T.currency,e.variant=t.discounted?"strikethrough":"default",e["data-testid"]="regular-item-total",n&&(n.amount=(bt=t.discountedTotal)==null?void 0:bt.value,n.currency=(Qt=t.discountedTotal)==null?void 0:Qt.currency,n.sale=!0,n["aria-label"]=c.regularPrice,n["data-testid"]="discount-total")),{totalProps:e,discountProps:n}},yt=t=>{var C,I,k;if(l.includes("warning"))return;const e=F.get(t.uid),n=(C=F.get(t.uid))==null?void 0:C.includes("The requested qty is not available"),o=f.has(t.uid),s=t.insufficientQuantity&&t.stockLevel?t.stockLevel==="noNumber"?c.insufficientQuantityGeneral:c.insufficientQuantity.replace("{inventory}",(I=t.stockLevel)==null?void 0:I.toString()).replace("{count}",t.quantity.toString()):"",u=t.lowInventory&&t.onlyXLeftInStock&&c.lowInventory.replace("{count}",(k=t.onlyXLeftInStock)==null?void 0:k.toString()),v=!t.outOfStock&&e&&n?c.notAvailableMessage:e;return!o&&(e||t.insufficientQuantity||t.lowInventory)?S("span",{"data-testid":"item-warning",children:[r(Y,{source:fe,size:"16"}),v||s||u]}):void 0},pt=t=>l!=null&&l.includes("alert")?void 0:!f.has(t.uid)&&t.outOfStock?S("span",{"data-testid":"item-alert",children:[r(Y,{source:qt,size:"16"}),c.outOfStockAlert]}):void 0,Ct=t=>r(m,{name:"ProductAttributes",slot:i==null?void 0:i.ProductAttributes,context:{item:t}}),It=t=>{if(!l.includes("sku"))return r("span",{"data-testid":"cart-list-item-sku",children:t.sku})},kt=t=>r(m,{name:"Footer",slot:i==null?void 0:i.Footer,context:{item:t,handleItemsLoading:E,handleItemsError:W,onItemUpdate:y}}),Yt=t=>{var e;if(L)return r(m,{name:"ItemRemoveAction",slot:i==null?void 0:i.ItemRemoveAction,context:{item:t,enableRemoveItem:L,handleItemQuantityUpdate:x,handleItemsError:W,handleItemsLoading:E,onItemUpdate:y,itemsLoading:f},children:r(Z,{"data-testid":"cart-item-remove-button",className:O(["dropin-cart-item__remove"]),variant:"tertiary",onClick:()=>x(t,0),disabled:f.has(t.uid),icon:r(Y,{"data-testid":"cart-item-remove-icon",source:he,size:"24",stroke:"2",viewBox:"0 0 24 24","aria-label":((e=c.remove)==null?void 0:e.replace("{product}",t.name))||c.removeDefault})})})},Zt=t=>{if(!l.includes("quantity")&&R)return r(m,{name:"ItemQuantity",slot:i==null?void 0:i.ItemQuantity,context:{item:t,enableUpdateItemQuantity:R,handleItemQuantityUpdate:x,itemsLoading:f,handleItemsError:W,handleItemsLoading:E,onItemUpdate:y},children:r(le,{value:t.quantity,min:1,onValue:e=>x(t,Number(e)),name:"quantity",disabled:f.has(t.uid),"aria-label":c.quantity})})},St=t=>a!=null&&a.totalQuantity?a.items.filter(t).map((e,n)=>{var v;const{totalProps:o,discountProps:s}=vt(e),u=r(ue,{updating:f==null?void 0:f.has(e.uid),loading:q,"data-testid":`cart-list-item-entry-${e.uid}`,image:lt(e,n),title:r(m,{name:"ItemTitle",slot:i==null?void 0:i.ItemTitle,context:{item:e},children:dt(e)}),sku:l.includes("sku")?void 0:r(m,{name:"ItemSku",slot:i==null?void 0:i.ItemSku,context:{item:e},children:It(e)}),price:l.includes("price")?void 0:r(m,{name:"ItemPrice",slot:i==null?void 0:i.ItemPrice,context:{item:e},slotTag:"span",children:r(X,{...gt(e)})}),quantity:l.includes("quantity")?void 0:e.quantity,quantityContent:Zt(e),total:S(z,{children:[l.includes("total")?void 0:r(m,{name:"ItemTotal",slot:i==null?void 0:i.ItemTotal,context:{item:e},children:r(X,{...o})}),l.includes("totalDiscount")?void 0:s&&r(m,{name:"ItemTotal",slot:i==null?void 0:i.ItemTotal,context:{item:e},children:r(X,{...s})})]}),attributes:Ct(e),configurations:mt(e),totalExcludingTax:l.includes("totalExcludingTax")?void 0:ht(e),taxIncluded:(d==null?void 0:d.price)==="INCLUDING_TAX",taxExcluded:!l.includes("totalExcludingTax")&&(d==null?void 0:d.price)==="INCLUDING_EXCLUDING_TAX",warning:yt(e),alert:pt(e),quantityType:it,dropdownOptions:at,onQuantity:R&&!f.has(e.uid)?C=>{x(e,C)}:void 0,onRemove:L&&!f.has(e.uid)?()=>x(e,0):void 0,discount:nt&&e.discounted&&e.discountPercentage?r("div",{"data-testid":"item-discount-percent",children:c.discountPercent.replace("{discount}",((v=e.discountPercentage)==null?void 0:v.toString())??"")}):void 0,savings:rt&&e.discounted&&e.savingsAmount?S("div",{children:[r("span",{children:r(X,{...ft(e)})})," ",c.savingsAmount]}):void 0,footer:kt(e),removeContent:Yt(e)},e.uid);return r(m,{name:"CartItem",slot:i==null?void 0:i.CartItem,context:{item:e,index:n,enableUpdateItemQuantity:R,enableRemoveItem:L,itemsLoading:f,loading:q,attributesToHide:l,cartTaxesConfig:d,quantityType:it,dropdownOptions:at,showDiscount:nt,showSavings:rt,dictionary:c,getImage:lt,getTitle:dt,getSku:It,getPriceProps:gt,getTotalPriceProps:vt,getProductAttributes:Ct,getConfiguration:mt,getTotalExcludingTax:ht,getWarning:yt,getAlert:pt,getFooter:kt,getSavingsAmount:ft},children:u},e.uid)}):null,_t=r(m,{name:"Heading",slot:i==null?void 0:i.Heading,context:{count:a==null?void 0:a.totalQuantity},children:r("div",{"data-testid":"default-cart-heading",children:c.heading.replace("({count})",a!=null&&a.totalQuantity?`(${a==null?void 0:a.totalQuantity.toString()})`:"")})}),Mt=_t.props.children.props.children,Ht=()=>{const t=a==null?void 0:a.items.filter(e=>e.outOfStock);t==null||t.forEach(e=>{x(e,0)})},te=St(t=>t.outOfStock||t.insufficientQuantity||!1),wt=a!=null&&a.hasOutOfStockItems?r($t,{"data-testid":"cart-out-of-stock-message",icon:r(Y,{source:qt,size:"16"}),itemList:r(K,{"data-testid":"out-of-stock-cart-items",children:te}),type:"warning",heading:c.outOfStockHeading,description:c.outOfStockDescription,variant:"primary",actionButtonPosition:"bottom",additionalActions:a!=null&&a.hasFullyOutOfStockItems&&L?[{label:c.removeAction,onClick:Ht}]:void 0}):void 0,p=St(t=>!t.outOfStock&&!t.insufficientQuantity),At=Q?Math.max(g||5,5):Math.min((a==null?void 0:a.totalQuantity)||5,5),xt=(a==null?void 0:a.totalQuantity)>At,ee=xt&&!Q&&At!=g,j=a!=null&&a.totalQuantity&&p?r(m,{name:"Footer",slot:i==null?void 0:i.CartSummaryFooter,context:{displayMaxItems:Q,routeCart:h},"data-testid":"cart-cart-summary-footer-slot",className:"cart-cart-summary-footer",children:xt?ee?r(Z,{className:"cart-cart-summary-list-footer__action",onClick:Kt,"data-testid":"view-more-items-button",variant:"tertiary",children:c.viewMore}):h&&r(Z,{className:"cart-cart-summary-list-footer__action",href:h(),variant:"tertiary","data-testid":"view-cart-or-less-items-button",children:c.viewAll}):h&&r(Z,{className:"cart-cart-summary-list-footer__action",href:h(),variant:"tertiary","data-testid":"view-cart-button",children:c.viewAll})}):null,Ot=()=>{if(!(a!=null&&a.items))return null;const t=[],e=a.items,n=i==null?void 0:i.UndoBanner,o=Q?Math.max(g||(a==null?void 0:a.totalQuantity),5):Math.min(g??5,5);for(let s=0;s<=o;s++)b&&w.filter(u=>u.index===s).forEach(({item:u,error:v,beingRemoved:C})=>{var k,T;const I=r($t,{type:v?"error":"info",heading:C?(k=c.itemBeingRemoved)==null?void 0:k.replace("{product}",u.name):(T=c.itemRemoved)==null?void 0:T.replace("{product}",u.name),description:v||c.itemRemovedDescription,variant:"primary",actionButtonPosition:"bottom",additionalActions:C?[]:[{label:c.undoAction,onClick:()=>V(u.uid),"aria-label":`${c.undoAction} remove ${u.name}`},{label:c.dismissAction,onClick:()=>ut(u.uid),"aria-label":`${c.dismissAction} undo for ${u.name}`}]},`undo-banner-${u.uid}`);t.push(n?r(m,{name:"UndoBanner",slot:n,context:{item:u,loading:q,error:v,onUndo:()=>V(u.uid),onDismiss:()=>ut(u.uid)},children:I},`undo-banner-${u.uid}`):I)}),s<o&&s<e.length&&t.push((p==null?void 0:p[s])||null);return r(K,{"data-testid":"cart-list",children:t})},V=Et(async t=>{A(n=>n.map(o=>o.item.uid===t?{...o,loading:!0,error:void 0}:o));const e=w.find(n=>n.item.uid===t);if(e)try{await ge([{sku:e.item.sku,parentSku:e.item.topLevelSku,quantity:e.item.quantity,optionsUIDs:e.item.bundleOptionsUIDs||(e.item.selectedOptionsUIDs?Object.values(e.item.selectedOptionsUIDs):void 0),enteredOptions:e.item.customizableOptions?Object.entries(e.item.customizableOptions).map(([n,o])=>({uid:n,value:o})):void 0}]),A(n=>n.filter(o=>o.item.uid!==t))}catch(n){A(o=>o.map(s=>s.item.uid===t?{...s,error:(n==null?void 0:n.message)||"Failed to restore item."}:s))}},[w]);re(Ft,()=>({handleUndo:V}),[V]);const Nt=r(z,{children:b&&w.length>0?Ot():r(m,{name:"EmptyCart",slot:i==null?void 0:i.EmptyCart,context:{},children:r(ie,{"data-testid":"empty-cart",ctaLinkURL:$==null?void 0:$()})})}),Pt=a!=null&&a.totalQuantity||b&&w.length>0?b?w.length>0?Ot():r(K,{"data-testid":"cart-list",children:p==null?void 0:p.slice(0,Q?Math.max(g||(a==null?void 0:a.totalQuantity),5):Math.min(g??5,5))}):r(K,{"data-testid":"cart-list",children:p==null?void 0:p.slice(0,Q?Math.max(g||(a==null?void 0:a.totalQuantity),5):Math.min(g??5,5))}):null;return Xt?r(oe,{"data-testid":"cart-summary-list-accordion",className:O(["cart-cart-summary-list-accordion",`cart-cart-summary-list__background--${H}`]),iconOpen:pe,iconClose:ve,children:r(se,{title:Mt,"data-testid":"cart-summary-list-accordion__section",open:!0,renderContentWhenClosed:!0,children:r(Tt,{...ot,"aria-expanded":!0,"aria-label":"TEST",className:"cart-cart-summary-list-accordion__list",loading:q,footer:P?void 0:j||(h?j:void 0),emptyCart:Nt,products:Pt,outOfStockMessage:wt,variant:H})})}):r(Tt,{...ot,heading:tt?void 0:_t,footer:P?void 0:j||(h?j:void 0),loading:q,emptyCart:Nt,products:Pt,outOfStockMessage:wt,variant:H})});Ie.getInitialData=async function(){return Ut()};export{Ie as C};
4
4
  //# sourceMappingURL=CartSummaryList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CartSummaryList.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/ChevronRight.svg","/@dropins/storefront-cart/src/components/CartSummaryList/CartSummaryList.tsx","/@dropins/storefront-cart/src/containers/CartSummaryList/CartSummaryList.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgChevronRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { id: \"Icon_Chevron_right_Base\", \"data-name\": \"Icon \\\\u2013 Chevron right \\\\u2013 Base\", xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"Large\" }, /* @__PURE__ */ React.createElement(\"rect\", { id: \"Placement_area\", \"data-name\": \"Placement area\", width: 24, height: 24, fill: \"#fff\", opacity: 0 }), /* @__PURE__ */ React.createElement(\"g\", { id: \"Chevron_right_icon\", \"data-name\": \"Chevron right icon\" }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", id: \"chevron\", d: \"M199.75,367.5l4.255,-4.255-4.255,-4.255\", transform: \"translate(-189.25 -351.0)\", fill: \"none\", stroke: \"currentColor\" }))));\nexport default SvgChevronRight;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport { Divider, Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nimport '@/cart/components/CartSummaryList/CartSummaryList.css';\nexport interface CartSummaryListProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'loading'> {\n heading?: VNode | null;\n footer?: VNode | null;\n emptyCart: VNode;\n products?: VNode | null;\n outOfStockMessage?: VNode | null;\n loading?: boolean;\n variant?: 'primary' | 'secondary';\n}\n\nexport const CartSummaryList: FunctionComponent<CartSummaryListProps> = ({\n className,\n children,\n heading,\n footer,\n emptyCart,\n products,\n outOfStockMessage,\n variant = 'primary',\n loading = true,\n ...props\n}) => {\n return (\n <div\n {...props}\n className={classes([\n 'cart-cart-summary-list',\n className,\n `cart-cart-summary-list__background--${variant}`,\n ])}\n >\n {loading ? (\n <CartSummaryListSkeleton />\n ) : (\n <>\n {(heading || outOfStockMessage) && (\n <div\n data-testid=\"cart-summary-list-heading-wrapper\"\n className={classes([\n 'cart-cart-summary-list__heading',\n ['cart-cart-summary-list__heading--full-width', !products],\n ])}\n >\n {heading && (\n <>\n <VComponent\n node={heading}\n className=\"cart-cart-summary-list__heading-text\"\n />\n <Divider\n variant=\"primary\"\n className={classes([\n 'cart-cart-summary-list__heading-divider',\n ])}\n />\n </>\n )}\n\n {outOfStockMessage && (\n <VComponent\n node={outOfStockMessage}\n className=\"cart-cart-summary-list__out-of-stock-message\"\n />\n )}\n </div>\n )}\n <div\n className={classes([\n 'cart-cart-summary-list__content',\n ['cart-cart-summary-list__content--empty', !products],\n ])}\n >\n {products || (\n <VComponent\n node={emptyCart}\n className=\"cart-cart-summary-list__empty-cart\"\n />\n )}\n </div>\n\n {footer && (\n <>\n <Divider\n variant=\"primary\"\n className={classes(['cart-cart-summary-list__footer-divider'])}\n />\n <VComponent\n node={footer}\n className=\"cart-cart-summary-list__footer-text\"\n />\n </>\n )}\n </>\n )}\n </div>\n );\n};\n\nconst CartSummaryListSkeleton: FunctionComponent = () => {\n return (\n <Skeleton\n data-testid=\"cart-summary-list-skeleton\"\n className=\"cart-cart-summary-list__skeleton\"\n rowGap=\"medium\"\n >\n <SkeletonRow\n variant=\"row\"\n size=\"xlarge\"\n fullWidth={true}\n lines={3}\n multilineGap=\"small\"\n />\n </Skeleton>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n HTMLAttributes,\n useCallback,\n useEffect,\n useState,\n useImperativeHandle,\n forwardRef,\n} from 'preact/compat';\nimport { Container, Slot, SlotProps, classes } from '@adobe-commerce/elsie/lib';\n\nimport {\n CartSummaryList as CartSummaryListComponent,\n EmptyCart,\n} from '@/cart/components';\n\nimport { getPersistedCartData } from '@/cart/lib/persisted-data';\nimport { CartModel } from '@/cart/data/models/cart-model';\nimport {\n Accordion,\n AccordionSection,\n Button,\n CartItem,\n CartList,\n Icon,\n Image,\n ImageProps,\n InLineAlert,\n Price,\n PriceProps,\n Incrementer,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { VNode } from 'preact';\nimport { events, Cart } from '@adobe-commerce/event-bus';\nimport { state } from '@/cart/lib/state';\nimport {\n ChevronDown,\n ChevronRight,\n OrderError,\n WarningWithCircle,\n Trash,\n} from '@adobe-commerce/elsie/icons';\nimport { updateProductsFromCart } from '@/cart/api';\nimport { addProductsToCart } from '@/cart/api/addProductsToCart/addProductsToCart';\n\nexport interface CartSummaryListProps extends HTMLAttributes<HTMLDivElement> {\n hideHeading?: boolean;\n hideFooter?: boolean;\n routeProduct?: (item: CartModel['items'][0]) => string;\n routeEmptyCartCTA?: () => string;\n routeCart?: () => string;\n onItemUpdate?: ({ item }: { item: CartModel['items'][0] }) => void;\n onItemRemove?: ({ item }: { item: CartModel['items'][0] }) => void;\n maxItems?: number; // Maximum number of items to display\n showMaxItems?: boolean;\n attributesToHide?: SwitchableAttributes[]; // Product attributes to hide\n slots?: {\n Heading?: SlotProps;\n EmptyCart?: SlotProps;\n Footer?: SlotProps;\n Thumbnail?: SlotProps<{\n item: CartModel['items'][number];\n defaultImageProps: ImageProps;\n }>;\n ProductAttributes?: SlotProps;\n CartSummaryFooter?: SlotProps;\n CartItem?: SlotProps;\n UndoBanner?: SlotProps<{\n item: CartModel['items'][0];\n loading: boolean;\n error?: string;\n onUndo: () => void;\n onDismiss: () => void;\n }>;\n ItemTitle?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemPrice?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemQuantity?: SlotProps<{\n item: CartModel['items'][number];\n enableUpdateItemQuantity: boolean;\n handleItemQuantityUpdate: (\n item: CartModel['items'][number],\n quantity: number\n ) => void;\n itemsLoading: Set<string>;\n handleItemsError: (uid: string, message?: string) => void;\n handleItemsLoading: (uid: string, state: boolean) => void;\n onItemUpdate?: ({ item }: { item: CartModel['items'][number] }) => void;\n }>;\n ItemTotal?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemSku?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemRemoveAction?: SlotProps<{\n item: CartModel['items'][number];\n enableRemoveItem: boolean;\n handleItemQuantityUpdate: (\n item: CartModel['items'][number],\n quantity: number\n ) => void;\n handleItemsError: (uid: string, message?: string) => void;\n handleItemsLoading: (uid: string, state: boolean) => void;\n onItemUpdate?: ({ item }: { item: CartModel['items'][number] }) => void;\n itemsLoading: Set<string>;\n }>;\n };\n enableRemoveItem?: boolean;\n enableUpdateItemQuantity?: boolean;\n onItemsErrorsChange?: (errors: Map<string, string>) => void;\n accordion?: boolean;\n variant?: 'primary' | 'secondary';\n isLoading?: boolean;\n showDiscount?: boolean;\n showSavings?: boolean;\n quantityType?: 'stepper' | 'dropdown';\n dropdownOptions?: { value: string; text: string }[];\n undo?: boolean;\n /**\n * TEST ONLY: Allows test to inject recentlyRemovedItems for coverage\n */\n __testRecentlyRemovedItems?: Array<{\n item: CartModel['items'][0];\n index: number;\n loading: boolean;\n error?: string;\n beingRemoved?: boolean;\n }>;\n}\n\n// Attributes that can be hidden or shown\nexport type SwitchableAttributes =\n | 'name'\n | 'image'\n | 'configurations'\n | 'warning'\n | 'alert'\n | 'sku'\n | 'price'\n | 'quantity'\n | 'total'\n | 'totalDiscount'\n | 'totalExcludingTax';\n\n// Ref interface for exposing functions to tests\nexport interface CartSummaryListRef {\n handleUndo: (uid: string) => Promise<void>;\n}\n\nexport const CartSummaryList: Container<\n CartSummaryListProps,\n CartModel | null\n> = forwardRef<\n CartSummaryListRef,\n CartSummaryListProps & { initialData?: CartModel | null }\n>(\n (\n {\n initialData = null,\n hideHeading,\n hideFooter,\n routeProduct,\n routeEmptyCartCTA,\n routeCart,\n onItemUpdate,\n onItemRemove,\n maxItems, //if maxItems is not provided, default to show all items\n slots,\n attributesToHide = [],\n enableRemoveItem,\n enableUpdateItemQuantity,\n onItemsErrorsChange,\n accordion = false,\n variant = 'primary',\n isLoading,\n showMaxItems,\n showDiscount,\n showSavings,\n quantityType,\n dropdownOptions,\n undo = false,\n __testRecentlyRemovedItems,\n ...props\n },\n ref\n ) => {\n const [loading, setLoading] = useState(!initialData);\n\n const [cartModelData, setCartModelData] = useState<CartModel | null>(\n initialData\n );\n const [itemsLoading, setItemLoading] = useState<Set<string>>(new Set());\n\n const [itemsErrors, setItemErrors] = useState<Map<string, string>>(\n new Map()\n );\n\n const [recentlyRemovedItems, setRecentlyRemovedItems] = useState<\n {\n item: CartModel['items'][0];\n index: number;\n loading: boolean;\n error?: string;\n beingRemoved?: boolean;\n }[]\n >(__testRecentlyRemovedItems || []);\n\n // TEST ONLY: allow test to update recentlyRemovedItems after mount\n useEffect(() => {\n if (\n process.env.NODE_ENV === 'test' &&\n __testRecentlyRemovedItems &&\n recentlyRemovedItems !== __testRecentlyRemovedItems\n ) {\n setRecentlyRemovedItems(__testRecentlyRemovedItems);\n }\n }, [__testRecentlyRemovedItems, recentlyRemovedItems]);\n\n const cartTaxesConfig = state.config?.shoppingCartDisplaySetting;\n\n const [displayMaxItems, setDisplayMaxItems] = useState<boolean>(\n showMaxItems ? true : !maxItems && !showMaxItems\n );\n\n const dictionary = useText({\n file: 'Cart.CartItem.file',\n files: 'Cart.CartItem.files',\n heading: 'Cart.Cart.heading',\n message: 'Cart.CartItem.message',\n recipient: 'Cart.CartItem.recipient',\n regularPrice: 'Cart.CartItem.regularPrice',\n discountedPrice: 'Cart.CartItem.discountedPrice',\n sender: 'Cart.CartItem.sender',\n lowInventory: 'Cart.CartItem.lowInventory',\n insufficientQuantity: 'Cart.CartItem.insufficientQuantity',\n insufficientQuantityGeneral: 'Cart.CartItem.insufficientQuantityGeneral',\n outOfStockHeading: 'Cart.OutOfStockMessage.heading',\n outOfStockDescription: 'Cart.OutOfStockMessage.message',\n outOfStockAlert: 'Cart.OutOfStockMessage.alert',\n removeAction: 'Cart.OutOfStockMessage.action',\n notAvailableMessage: 'Cart.CartItem.notAvailableMessage',\n viewMore: 'Cart.Cart.viewMore',\n viewAll: 'Cart.Cart.viewAll',\n discountPercent: 'Cart.CartItem.discountPercentage',\n savingsAmount: 'Cart.CartItem.savingsAmount',\n itemBeingRemoved: 'Cart.CartItem.itemBeingRemoved',\n itemRemoved: 'Cart.CartItem.itemRemoved',\n itemRemovedDescription: 'Cart.CartItem.itemRemovedDescription',\n undoAction: 'Cart.CartItem.undoAction',\n dismissAction: 'Cart.CartItem.dismissAction',\n remove: 'Dropin.CartItem.remove.label',\n removeDefault: 'Dropin.CartItem.removeDefault.label',\n });\n\n const handleItemsLoading = (uid: string, state: boolean) => {\n setItemLoading((prev) => {\n state ? prev.add(uid) : prev.delete(uid);\n return new Set(prev);\n });\n };\n\n const handleItemsError = (uid: string, message?: string) => {\n setItemErrors((prev) => {\n message ? prev.set(uid, message) : prev.delete(uid);\n return new Map(prev);\n });\n };\n\n // Helper to add to recently removed items for undo\n function addToRecentlyRemovedItems(uid: string) {\n const cart = getPersistedCartData();\n const item = cart?.items.find((i) => i.uid === uid);\n if (item) {\n setRecentlyRemovedItems((prev) => {\n const index = cart.items.findIndex((i) => i.uid === uid);\n if (index !== -1 && !prev.some((r) => r.item.uid === uid)) {\n // Emit the event for analytics or listeners\n events.emit('cart/product/removed', { item, index });\n return [\n ...prev,\n { item, index, error: undefined, beingRemoved: true },\n ];\n }\n return prev;\n });\n }\n }\n\n const handleItemQuantityUpdate = (\n item: CartModel['items'][0],\n quantity: number\n ) => {\n // initial values\n handleItemsLoading(item.uid, true);\n\n // Reset temporary error messages\n setItemErrors(new Map());\n\n if (enableRemoveItem && quantity === 0) {\n // Add to recently removed items for undo\n addToRecentlyRemovedItems(item.uid);\n // use callback for removing (original logic)\n updateProductsFromCart([{ uid: item.uid, quantity }])\n .then(() => {\n onItemRemove?.({ item });\n })\n .finally(() => {\n handleItemsLoading(item.uid, false);\n setRecentlyRemovedItems((prev) =>\n prev.map((r) =>\n r.item.uid === item.uid ? { ...r, beingRemoved: false } : r\n )\n );\n })\n .catch((error: any) => {\n console.warn(error);\n });\n }\n // use callback for updating\n else {\n enableUpdateItemQuantity &&\n updateProductsFromCart([{ uid: item.uid, quantity }])\n .then(() => {\n onItemUpdate?.({ item });\n })\n .finally(() => {\n handleItemsLoading(item.uid, false);\n })\n .catch((error: Error) => {\n handleItemsError(item.uid, error.message);\n });\n }\n };\n\n const handleDismiss = (uid: string) => {\n setRecentlyRemovedItems((prev) => prev.filter((r) => r.item.uid !== uid));\n };\n\n // Display max items\n const handleMaxItemsView = useCallback(() => {\n setDisplayMaxItems((prev) => !prev);\n }, []);\n\n useEffect(() => {\n const cartDataEvent = events.on(\n 'cart/data',\n (payload: Cart | null) => {\n setCartModelData(payload as CartModel);\n setLoading(!!isLoading);\n },\n { eager: true }\n );\n\n return () => {\n cartDataEvent?.off();\n };\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Clear recently removed items when undo is disabled\n useEffect(() => {\n if (!undo) {\n setRecentlyRemovedItems([]);\n }\n }, [undo]);\n\n // Call onItemsErrorsChange whenever itemsErrors changes\n useEffect(() => {\n if (onItemsErrorsChange) {\n onItemsErrorsChange(itemsErrors);\n }\n }, [itemsErrors, onItemsErrorsChange]);\n\n // Helper functions\n const getImage = (item: CartModel['items'][0], index: number) => {\n if (attributesToHide.includes('image')) {\n return undefined;\n }\n\n const defaultImageProps: ImageProps = {\n loading: index < 4 ? 'eager' : 'lazy',\n src: item.image.src,\n alt: item.image.alt,\n width: '300',\n height: '300',\n params: { width: 300 },\n };\n\n const imageComponent = (\n <Image data-testid=\"cart-list-item-image\" {...defaultImageProps} />\n );\n return (\n <Slot\n name=\"Thumbnail\"\n slot={slots?.Thumbnail}\n context={{\n item,\n defaultImageProps,\n }}\n >\n {routeProduct ? (\n <a href={routeProduct(item)}>{imageComponent}</a>\n ) : (\n imageComponent\n )}\n </Slot>\n );\n };\n\n const getTitle = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('name')) {\n return undefined;\n }\n\n return (\n <span data-testid=\"cart-list-item-title\">\n {routeProduct ? (\n <a href={routeProduct(item)}>{item.name}</a>\n ) : (\n item.name\n )}\n </span>\n );\n };\n\n const getConfiguration = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('configurations')) {\n return undefined;\n }\n\n const configuration = {\n ...item.bundleOptions,\n ...item.selectedOptions,\n ...item.customizableOptions,\n ...(item.recipient ? { [dictionary.recipient]: item.recipient } : null),\n ...(item.recipientEmail && item.recipient\n ? {\n [dictionary.recipient]: `${item.recipient} (${item.recipientEmail})`,\n }\n : null),\n ...(item.sender ? { [dictionary.sender]: item.sender } : null),\n ...(item.senderEmail && item.sender\n ? {\n [dictionary.sender]: `${item.sender} (${item.senderEmail})`,\n }\n : {}),\n ...(item.message ? { [dictionary.message]: item.message } : null),\n ...(item.links && item.links.count\n ? item.links.count > 1\n ? {\n [dictionary.files.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {\n [dictionary.file.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : null),\n };\n\n if (Object.keys(configuration).length === 0) {\n return undefined;\n }\n\n return configuration;\n };\n\n const getPriceProps = (item: CartModel['items'][0]) => {\n return cartTaxesConfig?.price === 'INCLUDING_TAX'\n ? item.discounted\n ? {\n amount: item.regularPrice.value,\n currency: item.regularPrice.currency,\n style: { font: 'inherit' },\n 'data-testid': 'including-tax-item-price',\n }\n : {\n amount: item.taxedPrice?.value,\n currency: item.taxedPrice?.currency,\n style: { font: 'inherit' },\n 'data-testid': 'including-tax-item-price',\n }\n : {\n amount: item.regularPrice?.value,\n currency: item.regularPrice?.currency,\n style: { font: 'inherit' },\n 'data-testid': 'regular-item-price',\n };\n };\n\n const getSavingsAmount = (item: CartModel['items'][0]) => {\n return {\n amount: item.savingsAmount?.value,\n currency: item.savingsAmount?.currency,\n style: { font: 'inherit' },\n 'data-testid': 'item-savings-amount',\n };\n };\n\n const getTotalExcludingTax = (item: CartModel['items'][0]) => {\n return cartTaxesConfig?.price === 'INCLUDING_EXCLUDING_TAX' ? (\n <Price\n amount={item.rowTotal.value}\n currency={item.rowTotal.currency}\n data-testid=\"excluding-tax-total\"\n aria-label={dictionary.regularPrice}\n />\n ) : undefined;\n };\n\n const getTotalPriceProps = (item: CartModel['items'][0]) => {\n const totalProps: PriceProps = {\n 'aria-label': dictionary.regularPrice,\n };\n const discountProps: PriceProps | null = item.discounted ? {} : null;\n\n if (\n ['INCLUDING_TAX', 'INCLUDING_EXCLUDING_TAX'].includes(\n cartTaxesConfig?.price as string\n )\n ) {\n totalProps['amount'] = item.rowTotalIncludingTax?.value;\n totalProps['currency'] = item.rowTotalIncludingTax?.currency;\n totalProps['variant'] = item.discounted ? 'strikethrough' : 'default';\n // @ts-ignore\n totalProps['data-testid'] = 'including-tax-item-total';\n\n if (discountProps) {\n totalProps['amount'] = item.total?.value;\n totalProps['currency'] = item.total?.currency;\n\n discountProps['amount'] = item.rowTotalIncludingTax?.value;\n discountProps['currency'] = item.rowTotalIncludingTax?.currency;\n discountProps['sale'] = true;\n discountProps['aria-label'] = dictionary.discountedPrice;\n // @ts-ignore\n discountProps['data-testid'] = 'discount-total';\n }\n } else {\n totalProps['amount'] = item.total?.value;\n totalProps['currency'] = item.total?.currency;\n totalProps['variant'] = item.discounted ? 'strikethrough' : 'default';\n // @ts-ignore\n totalProps['data-testid'] = 'regular-item-total';\n\n if (discountProps) {\n discountProps['amount'] = item.discountedTotal?.value;\n discountProps['currency'] = item.discountedTotal?.currency;\n discountProps['sale'] = true;\n discountProps['aria-label'] = dictionary.regularPrice;\n // @ts-ignore\n discountProps['data-testid'] = 'discount-total';\n }\n }\n\n return {\n totalProps,\n discountProps,\n };\n };\n\n const getWarning = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('warning')) {\n return undefined;\n }\n\n const error = itemsErrors.get(item.uid);\n const quantityError = itemsErrors\n .get(item.uid)\n ?.includes('The requested qty is not available');\n const itemIsLoading = itemsLoading.has(item.uid);\n\n const insufficientQuantityText =\n item.insufficientQuantity && item.stockLevel\n ? item.stockLevel === 'noNumber'\n ? dictionary.insufficientQuantityGeneral\n : dictionary.insufficientQuantity\n .replace('{inventory}', item.stockLevel?.toString())\n .replace('{count}', item.quantity.toString())\n : '';\n\n const lowInventoryText =\n item.lowInventory &&\n item.onlyXLeftInStock &&\n dictionary.lowInventory.replace(\n '{count}',\n item.onlyXLeftInStock?.toString()\n );\n\n const notAvailableQuantity =\n !item.outOfStock && error && quantityError\n ? dictionary.notAvailableMessage\n : error;\n\n return !itemIsLoading &&\n (error || item.insufficientQuantity || item.lowInventory) ? (\n <span data-testid=\"item-warning\">\n <Icon source={WarningWithCircle} size={'16'} />\n {notAvailableQuantity || insufficientQuantityText || lowInventoryText}\n </span>\n ) : undefined;\n };\n\n const getAlert = (item: CartModel['items'][0]) => {\n if (attributesToHide?.includes('alert')) {\n return undefined;\n }\n const itemIsLoading = itemsLoading.has(item.uid);\n\n return !itemIsLoading && item.outOfStock ? (\n <span data-testid=\"item-alert\">\n <Icon source={OrderError} size={'16'} />\n {dictionary.outOfStockAlert}\n </span>\n ) : undefined;\n };\n\n const getProductAttributes = (item: CartModel['items'][0]) => {\n return (\n <Slot\n name=\"ProductAttributes\"\n slot={slots?.ProductAttributes}\n context={{\n item,\n }}\n />\n );\n };\n\n const getSku = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('sku')) {\n return undefined;\n }\n return <span data-testid=\"cart-list-item-sku\">{item.sku}</span>;\n };\n\n const getFooter = (item: CartModel['items'][0]) => {\n return (\n <Slot\n name=\"Footer\"\n slot={slots?.Footer}\n context={{ item, handleItemsLoading, handleItemsError, onItemUpdate }}\n />\n );\n };\n\n const getRemoveContent = (item: CartModel['items'][0]) => {\n if (!enableRemoveItem) {\n return undefined;\n }\n\n return (\n <Slot\n name=\"ItemRemoveAction\"\n slot={slots?.ItemRemoveAction}\n context={{\n item,\n enableRemoveItem,\n handleItemQuantityUpdate,\n handleItemsError,\n handleItemsLoading,\n onItemUpdate,\n itemsLoading,\n }}\n >\n {/* Default remove button */}\n <Button\n data-testid=\"cart-item-remove-button\"\n className={classes(['dropin-cart-item__remove'])}\n variant=\"tertiary\"\n onClick={() => handleItemQuantityUpdate(item, 0)}\n disabled={itemsLoading.has(item.uid)}\n icon={\n <Icon\n data-testid=\"cart-item-remove-icon\"\n source={Trash}\n size=\"24\"\n stroke=\"2\"\n viewBox=\"0 0 24 24\"\n aria-label={\n dictionary.remove?.replace('{product}', item.name) ||\n dictionary.removeDefault\n }\n />\n }\n />\n </Slot>\n );\n };\n\n const getQuantityContent = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('quantity')) {\n return undefined;\n }\n\n if (!enableUpdateItemQuantity) {\n return undefined;\n }\n\n return (\n <Slot\n name=\"ItemQuantity\"\n slot={slots?.ItemQuantity}\n context={{\n item,\n enableUpdateItemQuantity,\n handleItemQuantityUpdate,\n itemsLoading,\n handleItemsError,\n handleItemsLoading,\n onItemUpdate,\n }}\n >\n <Incrementer\n value={item.quantity}\n min={1}\n onValue={(value) => handleItemQuantityUpdate(item, Number(value))}\n name=\"quantity\"\n disabled={itemsLoading.has(item.uid)}\n />\n </Slot>\n );\n };\n\n // Re-usable function to get a filtered list of cart items\n const getCartItemEntries = (\n filterCallback: (item: CartModel['items'][0]) => boolean\n ) => {\n return cartModelData?.totalQuantity\n ? cartModelData.items.filter(filterCallback).map((item, index) => {\n const { totalProps, discountProps } = getTotalPriceProps(item);\n\n const defaultCartItem = (\n <CartItem\n updating={itemsLoading?.has(item.uid)}\n loading={loading}\n key={item.uid}\n data-testid={`cart-list-item-entry-${item.uid}`}\n image={getImage(item, index)}\n title={\n <Slot\n name=\"ItemTitle\"\n slot={slots?.ItemTitle}\n context={{ item }}\n >\n {getTitle(item)}\n </Slot>\n }\n sku={\n attributesToHide.includes('sku') ? undefined : (\n <Slot\n name=\"ItemSku\"\n slot={slots?.ItemSku}\n context={{ item }}\n >\n {getSku(item)}\n </Slot>\n )\n }\n price={\n attributesToHide.includes('price') ? undefined : (\n <Slot\n name=\"ItemPrice\"\n slot={slots?.ItemPrice}\n context={{ item }}\n slotTag=\"span\"\n >\n <Price {...getPriceProps(item)} />\n </Slot>\n )\n }\n quantity={\n attributesToHide.includes('quantity')\n ? undefined\n : item.quantity\n }\n quantityContent={getQuantityContent(item)}\n total={\n <>\n {attributesToHide.includes('total') ? undefined : (\n <Slot\n name=\"ItemTotal\"\n slot={slots?.ItemTotal}\n context={{ item }}\n >\n <Price {...totalProps} />\n </Slot>\n )}\n {attributesToHide.includes('totalDiscount')\n ? undefined\n : discountProps && (\n <Slot\n name=\"ItemTotal\"\n slot={slots?.ItemTotal}\n context={{ item }}\n >\n <Price {...discountProps} />\n </Slot>\n )}\n </>\n }\n attributes={getProductAttributes(item)}\n configurations={getConfiguration(item)}\n totalExcludingTax={\n attributesToHide.includes('totalExcludingTax')\n ? undefined\n : getTotalExcludingTax(item)\n }\n taxIncluded={cartTaxesConfig?.price === 'INCLUDING_TAX'}\n taxExcluded={\n !attributesToHide.includes('totalExcludingTax') &&\n cartTaxesConfig?.price === 'INCLUDING_EXCLUDING_TAX'\n }\n warning={getWarning(item)}\n alert={getAlert(item)}\n quantityType={quantityType}\n dropdownOptions={dropdownOptions}\n onQuantity={\n enableUpdateItemQuantity && !itemsLoading.has(item.uid)\n ? (newQuantity) => {\n handleItemQuantityUpdate(item, newQuantity);\n }\n : undefined\n }\n onRemove={\n enableRemoveItem && !itemsLoading.has(item.uid)\n ? () => handleItemQuantityUpdate(item, 0)\n : undefined\n }\n discount={\n showDiscount && item.discounted && item.discountPercentage ? (\n <div data-testid=\"item-discount-percent\">\n {dictionary.discountPercent.replace(\n '{discount}',\n item.discountPercentage?.toString() ?? ''\n )}\n </div>\n ) : undefined\n }\n savings={\n showSavings && item.discounted && item.savingsAmount ? (\n <div>\n <span>\n <Price {...getSavingsAmount(item)} />\n </span>\n &nbsp;\n {dictionary.savingsAmount}\n </div>\n ) : undefined\n }\n footer={getFooter(item)}\n removeContent={getRemoveContent(item)}\n />\n );\n\n return (\n <Slot\n key={item.uid}\n name=\"CartItem\"\n slot={slots?.CartItem}\n context={{\n item,\n index,\n enableUpdateItemQuantity,\n enableRemoveItem,\n itemsLoading,\n loading,\n attributesToHide,\n cartTaxesConfig,\n quantityType,\n dropdownOptions,\n showDiscount,\n showSavings,\n dictionary,\n getImage,\n getTitle,\n getSku,\n getPriceProps,\n getTotalPriceProps,\n getProductAttributes,\n getConfiguration,\n getTotalExcludingTax,\n getWarning,\n getAlert,\n getFooter,\n getSavingsAmount,\n }}\n >\n {defaultCartItem}\n </Slot>\n );\n })\n : null;\n };\n\n const heading = (\n <Slot\n name=\"Heading\"\n slot={slots?.Heading}\n context={{\n count: cartModelData?.totalQuantity,\n }}\n >\n <div data-testid=\"default-cart-heading\">\n {dictionary.heading.replace(\n '({count})',\n cartModelData?.totalQuantity\n ? `(${cartModelData?.totalQuantity.toString()})`\n : ''\n )}\n </div>\n </Slot>\n );\n\n // Heading Section text for screen reader\n const headingSection = heading.props.children.props.children;\n\n // Out of Stock Items\n const handleRemoveOutOfStockItems = () => {\n const outOfStockItems = cartModelData?.items.filter(\n (item) => item.outOfStock\n );\n\n outOfStockItems?.forEach((item) => {\n handleItemQuantityUpdate(item, 0);\n });\n };\n\n const outOfStockEntries = getCartItemEntries(\n (item) => item.outOfStock || item.insufficientQuantity || false\n );\n\n const outOfStockMessage = cartModelData?.hasOutOfStockItems ? (\n <InLineAlert\n data-testid=\"cart-out-of-stock-message\"\n icon={<Icon source={OrderError} size={'16'} />}\n itemList={\n <CartList data-testid=\"out-of-stock-cart-items\">\n {outOfStockEntries}\n </CartList>\n }\n type=\"warning\"\n heading={dictionary.outOfStockHeading}\n description={dictionary.outOfStockDescription}\n variant=\"primary\"\n actionButtonPosition=\"bottom\"\n additionalActions={\n cartModelData?.hasFullyOutOfStockItems && enableRemoveItem\n ? [\n {\n label: dictionary.removeAction,\n onClick: handleRemoveOutOfStockItems,\n },\n ]\n : undefined\n }\n />\n ) : undefined;\n\n // Main Product Entries\n const mainProductEntries = getCartItemEntries(\n (item) => !item.outOfStock && !item.insufficientQuantity\n );\n\n const numOfVisibleItems = displayMaxItems\n ? Math.max(maxItems || 5, 5)\n : Math.min(cartModelData?.totalQuantity || 5, 5);\n\n const hasHiddenItems = cartModelData?.totalQuantity > numOfVisibleItems;\n\n const canDisplayMoreItems =\n hasHiddenItems && !displayMaxItems && numOfVisibleItems != maxItems;\n\n const footerActions =\n cartModelData?.totalQuantity && mainProductEntries ? (\n <Slot\n name=\"Footer\"\n slot={slots?.CartSummaryFooter}\n context={{ displayMaxItems, routeCart }}\n data-testid=\"cart-cart-summary-footer-slot\"\n className=\"cart-cart-summary-footer\"\n >\n {hasHiddenItems ? (\n canDisplayMoreItems ? (\n <Button\n className=\"cart-cart-summary-list-footer__action\"\n onClick={handleMaxItemsView}\n data-testid=\"view-more-items-button\"\n variant=\"tertiary\"\n >\n {dictionary.viewMore}\n </Button>\n ) : (\n routeCart && (\n <Button\n className=\"cart-cart-summary-list-footer__action\"\n href={routeCart()}\n variant=\"tertiary\"\n data-testid=\"view-cart-or-less-items-button\"\n >\n {dictionary.viewAll}\n </Button>\n )\n )\n ) : (\n routeCart && (\n <Button\n className=\"cart-cart-summary-list-footer__action\"\n href={routeCart()}\n variant=\"tertiary\"\n data-testid=\"view-cart-button\"\n >\n {dictionary.viewAll}\n </Button>\n )\n )}\n </Slot>\n ) : null;\n\n const renderCartListWithUndoBanners = () => {\n if (!cartModelData?.items) return null;\n const entries: (VNode | null)[] = [];\n const items = cartModelData.items;\n const UndoBanner = slots?.UndoBanner;\n\n // Calculate how many items to show (same logic as original)\n const numItemsToShow = displayMaxItems\n ? Math.max(!maxItems ? cartModelData?.totalQuantity : maxItems, 5)\n : Math.min(maxItems ?? 5, 5);\n\n // Only process items up to the limit\n for (let i = 0; i <= numItemsToShow; i++) {\n // Render undo banners for this index only if undo is enabled\n if (undo) {\n recentlyRemovedItems\n .filter((r) => r.index === i)\n .forEach(({ item, error, beingRemoved }) => {\n const defaultUndoBanner = (\n <InLineAlert\n key={`undo-banner-${item.uid}`}\n type={error ? 'error' : 'info'}\n heading={\n beingRemoved\n ? dictionary.itemBeingRemoved?.replace(\n '{product}',\n item.name\n )\n : dictionary.itemRemoved?.replace('{product}', item.name)\n }\n description={error || dictionary.itemRemovedDescription}\n variant=\"primary\"\n actionButtonPosition=\"bottom\"\n additionalActions={\n beingRemoved\n ? [] // Hide buttons while removing\n : [\n {\n label: dictionary.undoAction,\n onClick: () => handleUndo(item.uid),\n 'aria-label': `${dictionary.undoAction} remove ${item.name}`,\n },\n {\n label: dictionary.dismissAction,\n onClick: () => handleDismiss(item.uid),\n 'aria-label': `${dictionary.dismissAction} undo for ${item.name}`,\n },\n ]\n }\n />\n );\n\n entries.push(\n UndoBanner ? (\n <Slot\n name=\"UndoBanner\"\n slot={UndoBanner}\n context={{\n item,\n loading,\n error,\n onUndo: () => handleUndo(item.uid),\n onDismiss: () => handleDismiss(item.uid),\n }}\n key={`undo-banner-${item.uid}`}\n >\n {defaultUndoBanner}\n </Slot>\n ) : (\n defaultUndoBanner\n )\n );\n });\n }\n // Render cart item if not at the end and within the slice limit\n if (i < numItemsToShow && i < items.length) {\n entries.push(mainProductEntries?.[i] || null);\n }\n }\n return <CartList data-testid=\"cart-list\">{entries}</CartList>;\n };\n // Undo handler implementation\n const handleUndo = useCallback(\n async (uid: string) => {\n setRecentlyRemovedItems((prev) =>\n prev.map((r) =>\n r.item.uid === uid ? { ...r, loading: true, error: undefined } : r\n )\n );\n const removed = recentlyRemovedItems.find((r) => r.item.uid === uid);\n if (!removed) return;\n try {\n await addProductsToCart([\n {\n sku: removed.item.sku,\n parentSku: removed.item.topLevelSku,\n quantity: removed.item.quantity,\n optionsUIDs:\n removed.item.bundleOptionsUIDs || // Use bundle option UIDs for bundle products\n (removed.item.selectedOptionsUIDs\n ? Object.values(removed.item.selectedOptionsUIDs)\n : undefined),\n enteredOptions: removed.item.customizableOptions\n ? Object.entries(removed.item.customizableOptions).map(\n ([uid, value]) => ({ uid, value })\n )\n : undefined,\n },\n ]);\n setRecentlyRemovedItems((prev) =>\n prev.filter((r) => r.item.uid !== uid)\n );\n } catch (error: any) {\n setRecentlyRemovedItems((prev) =>\n prev.map((r) =>\n r.item.uid === uid\n ? { ...r, error: error?.message || 'Failed to restore item.' }\n : r\n )\n );\n }\n },\n [recentlyRemovedItems]\n );\n\n // Expose handleUndo to parent components via ref (for testing)\n useImperativeHandle(\n ref,\n () => ({\n handleUndo,\n }),\n [handleUndo]\n );\n\n // Replace the emptyCart definition with conditional rendering for undo banners\n const emptyCart = (\n <>\n {undo && recentlyRemovedItems.length > 0 ? (\n renderCartListWithUndoBanners()\n ) : (\n <Slot name=\"EmptyCart\" slot={slots?.EmptyCart} context={{}}>\n <EmptyCart\n data-testid=\"empty-cart\"\n ctaLinkURL={routeEmptyCartCTA?.()}\n />\n </Slot>\n )}\n </>\n );\n\n // Choose between original product entries and undo banner version\n const productEntries =\n cartModelData?.totalQuantity ||\n (undo && recentlyRemovedItems.length > 0) ? (\n !undo ? (\n <CartList data-testid=\"cart-list\">\n {mainProductEntries?.slice(\n 0,\n displayMaxItems\n ? Math.max(\n !maxItems ? cartModelData?.totalQuantity : maxItems,\n 5\n )\n : Math.min(maxItems ?? 5, 5)\n )}\n </CartList>\n ) : recentlyRemovedItems.length > 0 ? (\n renderCartListWithUndoBanners()\n ) : (\n <CartList data-testid=\"cart-list\">\n {mainProductEntries?.slice(\n 0,\n displayMaxItems\n ? Math.max(\n !maxItems ? cartModelData?.totalQuantity : maxItems,\n 5\n )\n : Math.min(maxItems ?? 5, 5)\n )}\n </CartList>\n )\n ) : null;\n\n return accordion ? (\n <Accordion\n data-testid=\"cart-summary-list-accordion\"\n className={classes([\n `cart-cart-summary-list-accordion`,\n `cart-cart-summary-list__background--${variant}`,\n ])}\n iconOpen={ChevronRight}\n iconClose={ChevronDown}\n >\n <AccordionSection\n title={headingSection}\n data-testid=\"cart-summary-list-accordion__section\"\n open={true}\n renderContentWhenClosed={true}\n >\n <CartSummaryListComponent\n {...props}\n aria-expanded={true}\n aria-label={'TEST'}\n className={`cart-cart-summary-list-accordion__list`}\n loading={loading}\n footer={\n hideFooter\n ? undefined\n : footerActions || (routeCart ? footerActions : undefined)\n }\n emptyCart={emptyCart}\n products={productEntries}\n outOfStockMessage={outOfStockMessage}\n variant={variant}\n />\n </AccordionSection>\n </Accordion>\n ) : (\n <CartSummaryListComponent\n {...props}\n heading={hideHeading ? undefined : heading}\n footer={\n hideFooter\n ? undefined\n : footerActions || (routeCart ? footerActions : undefined)\n }\n loading={loading}\n emptyCart={emptyCart}\n products={productEntries}\n outOfStockMessage={outOfStockMessage}\n variant={variant}\n />\n );\n }\n);\n\nCartSummaryList.getInitialData = async function () {\n return getPersistedCartData();\n};\n"],"names":["SvgChevronRight","props","React","CartSummaryList","className","children","heading","footer","emptyCart","products","outOfStockMessage","variant","loading","jsx","classes","CartSummaryListSkeleton","jsxs","Fragment","VComponent","Divider","Skeleton","SkeletonRow","forwardRef","initialData","hideHeading","hideFooter","routeProduct","routeEmptyCartCTA","routeCart","onItemUpdate","onItemRemove","maxItems","slots","attributesToHide","enableRemoveItem","enableUpdateItemQuantity","onItemsErrorsChange","accordion","isLoading","showMaxItems","showDiscount","showSavings","quantityType","dropdownOptions","undo","__testRecentlyRemovedItems","ref","setLoading","useState","cartModelData","setCartModelData","itemsLoading","setItemLoading","itemsErrors","setItemErrors","recentlyRemovedItems","setRecentlyRemovedItems","useEffect","cartTaxesConfig","_a","state","displayMaxItems","setDisplayMaxItems","dictionary","useText","handleItemsLoading","uid","prev","handleItemsError","message","addToRecentlyRemovedItems","cart","getPersistedCartData","item","i","index","r","events","handleItemQuantityUpdate","quantity","updateProductsFromCart","error","handleDismiss","handleMaxItemsView","useCallback","cartDataEvent","payload","getImage","defaultImageProps","imageComponent","Image","Slot","getTitle","getConfiguration","configuration","getPriceProps","_b","_c","_d","getSavingsAmount","getTotalExcludingTax","Price","getTotalPriceProps","totalProps","discountProps","_e","_f","_g","_h","_i","_j","getWarning","quantityError","itemIsLoading","insufficientQuantityText","lowInventoryText","notAvailableQuantity","Icon","WarningWithCircle","getAlert","OrderError","getProductAttributes","getSku","getFooter","getRemoveContent","Button","Trash","getQuantityContent","Incrementer","value","getCartItemEntries","filterCallback","defaultCartItem","CartItem","newQuantity","headingSection","handleRemoveOutOfStockItems","outOfStockItems","outOfStockEntries","InLineAlert","CartList","mainProductEntries","numOfVisibleItems","hasHiddenItems","canDisplayMoreItems","footerActions","renderCartListWithUndoBanners","entries","items","UndoBanner","numItemsToShow","beingRemoved","defaultUndoBanner","handleUndo","removed","addProductsToCart","useImperativeHandle","EmptyCart","productEntries","Accordion","ChevronRight","ChevronDown","AccordionSection","CartSummaryListComponent"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"CartSummaryList.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/ChevronRight.svg","/@dropins/storefront-cart/src/components/CartSummaryList/CartSummaryList.tsx","/@dropins/storefront-cart/src/containers/CartSummaryList/CartSummaryList.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgChevronRight = (props) => /* @__PURE__ */ React.createElement(\"svg\", { id: \"Icon_Chevron_right_Base\", \"data-name\": \"Icon \\\\u2013 Chevron right \\\\u2013 Base\", xmlns: \"http://www.w3.org/2000/svg\", width: 24, height: 24, viewBox: \"0 0 24 24\", ...props }, /* @__PURE__ */ React.createElement(\"g\", { id: \"Large\" }, /* @__PURE__ */ React.createElement(\"rect\", { id: \"Placement_area\", \"data-name\": \"Placement area\", width: 24, height: 24, fill: \"#fff\", opacity: 0 }), /* @__PURE__ */ React.createElement(\"g\", { id: \"Chevron_right_icon\", \"data-name\": \"Chevron right icon\" }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", id: \"chevron\", d: \"M199.75,367.5l4.255,-4.255-4.255,-4.255\", transform: \"translate(-189.25 -351.0)\", fill: \"none\", stroke: \"currentColor\" }))));\nexport default SvgChevronRight;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes, VComponent } from '@adobe-commerce/elsie/lib';\nimport { Divider, Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nimport '@/cart/components/CartSummaryList/CartSummaryList.css';\nexport interface CartSummaryListProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'loading'> {\n heading?: VNode | null;\n footer?: VNode | null;\n emptyCart: VNode;\n products?: VNode | null;\n outOfStockMessage?: VNode | null;\n loading?: boolean;\n variant?: 'primary' | 'secondary';\n}\n\nexport const CartSummaryList: FunctionComponent<CartSummaryListProps> = ({\n className,\n children,\n heading,\n footer,\n emptyCart,\n products,\n outOfStockMessage,\n variant = 'primary',\n loading = true,\n ...props\n}) => {\n return (\n <div\n {...props}\n className={classes([\n 'cart-cart-summary-list',\n className,\n `cart-cart-summary-list__background--${variant}`,\n ])}\n >\n {loading ? (\n <CartSummaryListSkeleton />\n ) : (\n <>\n {(heading || outOfStockMessage) && (\n <div\n data-testid=\"cart-summary-list-heading-wrapper\"\n className={classes([\n 'cart-cart-summary-list__heading',\n ['cart-cart-summary-list__heading--full-width', !products],\n ])}\n >\n {heading && (\n <>\n <VComponent\n node={heading}\n className=\"cart-cart-summary-list__heading-text\"\n />\n <Divider\n variant=\"primary\"\n className={classes([\n 'cart-cart-summary-list__heading-divider',\n ])}\n />\n </>\n )}\n\n {outOfStockMessage && (\n <VComponent\n node={outOfStockMessage}\n className=\"cart-cart-summary-list__out-of-stock-message\"\n />\n )}\n </div>\n )}\n <div\n className={classes([\n 'cart-cart-summary-list__content',\n ['cart-cart-summary-list__content--empty', !products],\n ])}\n >\n {products || (\n <VComponent\n node={emptyCart}\n className=\"cart-cart-summary-list__empty-cart\"\n />\n )}\n </div>\n\n {footer && (\n <>\n <Divider\n variant=\"primary\"\n className={classes(['cart-cart-summary-list__footer-divider'])}\n />\n <VComponent\n node={footer}\n className=\"cart-cart-summary-list__footer-text\"\n />\n </>\n )}\n </>\n )}\n </div>\n );\n};\n\nconst CartSummaryListSkeleton: FunctionComponent = () => {\n return (\n <Skeleton\n data-testid=\"cart-summary-list-skeleton\"\n className=\"cart-cart-summary-list__skeleton\"\n rowGap=\"medium\"\n >\n <SkeletonRow\n variant=\"row\"\n size=\"xlarge\"\n fullWidth={true}\n lines={3}\n multilineGap=\"small\"\n />\n </Skeleton>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport {\n HTMLAttributes,\n useCallback,\n useEffect,\n useState,\n useImperativeHandle,\n forwardRef,\n} from 'preact/compat';\nimport { Container, Slot, SlotProps, classes } from '@adobe-commerce/elsie/lib';\n\nimport {\n CartSummaryList as CartSummaryListComponent,\n EmptyCart,\n} from '@/cart/components';\n\nimport { getPersistedCartData } from '@/cart/lib/persisted-data';\nimport { CartModel } from '@/cart/data/models/cart-model';\nimport {\n Accordion,\n AccordionSection,\n Button,\n CartItem,\n CartList,\n Icon,\n Image,\n ImageProps,\n InLineAlert,\n Price,\n PriceProps,\n Incrementer,\n} from '@adobe-commerce/elsie/components';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { VNode } from 'preact';\nimport { events, Cart } from '@adobe-commerce/event-bus';\nimport { state } from '@/cart/lib/state';\nimport {\n ChevronDown,\n ChevronRight,\n OrderError,\n WarningWithCircle,\n Trash,\n} from '@adobe-commerce/elsie/icons';\nimport { updateProductsFromCart } from '@/cart/api';\nimport { addProductsToCart } from '@/cart/api/addProductsToCart/addProductsToCart';\n\nexport interface CartSummaryListProps extends HTMLAttributes<HTMLDivElement> {\n hideHeading?: boolean;\n hideFooter?: boolean;\n routeProduct?: (item: CartModel['items'][0]) => string;\n routeEmptyCartCTA?: () => string;\n routeCart?: () => string;\n onItemUpdate?: ({ item }: { item: CartModel['items'][0] }) => void;\n onItemRemove?: ({ item }: { item: CartModel['items'][0] }) => void;\n maxItems?: number; // Maximum number of items to display\n showMaxItems?: boolean;\n attributesToHide?: SwitchableAttributes[]; // Product attributes to hide\n slots?: {\n Heading?: SlotProps;\n EmptyCart?: SlotProps;\n Footer?: SlotProps;\n Thumbnail?: SlotProps<{\n item: CartModel['items'][number];\n defaultImageProps: ImageProps;\n }>;\n ProductAttributes?: SlotProps;\n CartSummaryFooter?: SlotProps;\n CartItem?: SlotProps;\n UndoBanner?: SlotProps<{\n item: CartModel['items'][0];\n loading: boolean;\n error?: string;\n onUndo: () => void;\n onDismiss: () => void;\n }>;\n ItemTitle?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemPrice?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemQuantity?: SlotProps<{\n item: CartModel['items'][number];\n enableUpdateItemQuantity: boolean;\n handleItemQuantityUpdate: (\n item: CartModel['items'][number],\n quantity: number\n ) => void;\n itemsLoading: Set<string>;\n handleItemsError: (uid: string, message?: string) => void;\n handleItemsLoading: (uid: string, state: boolean) => void;\n onItemUpdate?: ({ item }: { item: CartModel['items'][number] }) => void;\n }>;\n ItemTotal?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemSku?: SlotProps<{ item: CartModel['items'][number] }>;\n ItemRemoveAction?: SlotProps<{\n item: CartModel['items'][number];\n enableRemoveItem: boolean;\n handleItemQuantityUpdate: (\n item: CartModel['items'][number],\n quantity: number\n ) => void;\n handleItemsError: (uid: string, message?: string) => void;\n handleItemsLoading: (uid: string, state: boolean) => void;\n onItemUpdate?: ({ item }: { item: CartModel['items'][number] }) => void;\n itemsLoading: Set<string>;\n }>;\n };\n enableRemoveItem?: boolean;\n enableUpdateItemQuantity?: boolean;\n onItemsErrorsChange?: (errors: Map<string, string>) => void;\n accordion?: boolean;\n variant?: 'primary' | 'secondary';\n isLoading?: boolean;\n showDiscount?: boolean;\n showSavings?: boolean;\n quantityType?: 'stepper' | 'dropdown';\n dropdownOptions?: { value: string; text: string }[];\n undo?: boolean;\n /**\n * TEST ONLY: Allows test to inject recentlyRemovedItems for coverage\n */\n __testRecentlyRemovedItems?: Array<{\n item: CartModel['items'][0];\n index: number;\n loading: boolean;\n error?: string;\n beingRemoved?: boolean;\n }>;\n}\n\n// Attributes that can be hidden or shown\nexport type SwitchableAttributes =\n | 'name'\n | 'image'\n | 'configurations'\n | 'warning'\n | 'alert'\n | 'sku'\n | 'price'\n | 'quantity'\n | 'total'\n | 'totalDiscount'\n | 'totalExcludingTax';\n\n// Ref interface for exposing functions to tests\nexport interface CartSummaryListRef {\n handleUndo: (uid: string) => Promise<void>;\n}\n\nexport const CartSummaryList: Container<\n CartSummaryListProps,\n CartModel | null\n> = forwardRef<\n CartSummaryListRef,\n CartSummaryListProps & { initialData?: CartModel | null }\n>(\n (\n {\n initialData = null,\n hideHeading,\n hideFooter,\n routeProduct,\n routeEmptyCartCTA,\n routeCart,\n onItemUpdate,\n onItemRemove,\n maxItems, //if maxItems is not provided, default to show all items\n slots,\n attributesToHide = [],\n enableRemoveItem,\n enableUpdateItemQuantity,\n onItemsErrorsChange,\n accordion = false,\n variant = 'primary',\n isLoading,\n showMaxItems,\n showDiscount,\n showSavings,\n quantityType,\n dropdownOptions,\n undo = false,\n __testRecentlyRemovedItems,\n ...props\n },\n ref\n ) => {\n const [loading, setLoading] = useState(!initialData);\n\n const [cartModelData, setCartModelData] = useState<CartModel | null>(\n initialData\n );\n const [itemsLoading, setItemLoading] = useState<Set<string>>(new Set());\n\n const [itemsErrors, setItemErrors] = useState<Map<string, string>>(\n new Map()\n );\n\n const [recentlyRemovedItems, setRecentlyRemovedItems] = useState<\n {\n item: CartModel['items'][0];\n index: number;\n loading: boolean;\n error?: string;\n beingRemoved?: boolean;\n }[]\n >(__testRecentlyRemovedItems || []);\n\n // TEST ONLY: allow test to update recentlyRemovedItems after mount\n useEffect(() => {\n if (\n process.env.NODE_ENV === 'test' &&\n __testRecentlyRemovedItems &&\n recentlyRemovedItems !== __testRecentlyRemovedItems\n ) {\n setRecentlyRemovedItems(__testRecentlyRemovedItems);\n }\n }, [__testRecentlyRemovedItems, recentlyRemovedItems]);\n\n const cartTaxesConfig = state.config?.shoppingCartDisplaySetting;\n\n const [displayMaxItems, setDisplayMaxItems] = useState<boolean>(\n showMaxItems ? true : !maxItems && !showMaxItems\n );\n\n const dictionary = useText({\n file: 'Cart.CartItem.file',\n files: 'Cart.CartItem.files',\n heading: 'Cart.Cart.heading',\n message: 'Cart.CartItem.message',\n recipient: 'Cart.CartItem.recipient',\n regularPrice: 'Cart.CartItem.regularPrice',\n discountedPrice: 'Cart.CartItem.discountedPrice',\n sender: 'Cart.CartItem.sender',\n lowInventory: 'Cart.CartItem.lowInventory',\n insufficientQuantity: 'Cart.CartItem.insufficientQuantity',\n insufficientQuantityGeneral: 'Cart.CartItem.insufficientQuantityGeneral',\n outOfStockHeading: 'Cart.OutOfStockMessage.heading',\n outOfStockDescription: 'Cart.OutOfStockMessage.message',\n outOfStockAlert: 'Cart.OutOfStockMessage.alert',\n removeAction: 'Cart.OutOfStockMessage.action',\n notAvailableMessage: 'Cart.CartItem.notAvailableMessage',\n viewMore: 'Cart.Cart.viewMore',\n viewAll: 'Cart.Cart.viewAll',\n discountPercent: 'Cart.CartItem.discountPercentage',\n savingsAmount: 'Cart.CartItem.savingsAmount',\n itemBeingRemoved: 'Cart.CartItem.itemBeingRemoved',\n itemRemoved: 'Cart.CartItem.itemRemoved',\n itemRemovedDescription: 'Cart.CartItem.itemRemovedDescription',\n undoAction: 'Cart.CartItem.undoAction',\n dismissAction: 'Cart.CartItem.dismissAction',\n remove: 'Dropin.CartItem.remove.label',\n removeDefault: 'Dropin.CartItem.removeDefault.label',\n quantity: 'Dropin.CartItem.quantity.label',\n });\n\n const handleItemsLoading = (uid: string, state: boolean) => {\n setItemLoading((prev) => {\n state ? prev.add(uid) : prev.delete(uid);\n return new Set(prev);\n });\n };\n\n const handleItemsError = (uid: string, message?: string) => {\n setItemErrors((prev) => {\n message ? prev.set(uid, message) : prev.delete(uid);\n return new Map(prev);\n });\n };\n\n // Helper to add to recently removed items for undo\n function addToRecentlyRemovedItems(uid: string) {\n const cart = getPersistedCartData();\n const item = cart?.items.find((i) => i.uid === uid);\n if (item) {\n setRecentlyRemovedItems((prev) => {\n const index = cart.items.findIndex((i) => i.uid === uid);\n if (index !== -1 && !prev.some((r) => r.item.uid === uid)) {\n // Emit the event for analytics or listeners\n events.emit('cart/product/removed', { item, index });\n return [\n ...prev,\n { item, index, error: undefined, beingRemoved: true },\n ];\n }\n return prev;\n });\n }\n }\n\n const handleItemQuantityUpdate = (\n item: CartModel['items'][0],\n quantity: number\n ) => {\n // initial values\n handleItemsLoading(item.uid, true);\n\n // Reset temporary error messages\n setItemErrors(new Map());\n\n if (enableRemoveItem && quantity === 0) {\n // Add to recently removed items for undo\n addToRecentlyRemovedItems(item.uid);\n // use callback for removing (original logic)\n updateProductsFromCart([{ uid: item.uid, quantity }])\n .then(() => {\n onItemRemove?.({ item });\n })\n .finally(() => {\n handleItemsLoading(item.uid, false);\n setRecentlyRemovedItems((prev) =>\n prev.map((r) =>\n r.item.uid === item.uid ? { ...r, beingRemoved: false } : r\n )\n );\n })\n .catch((error: any) => {\n console.warn(error);\n });\n }\n // use callback for updating\n else {\n enableUpdateItemQuantity &&\n updateProductsFromCart([{ uid: item.uid, quantity }])\n .then(() => {\n onItemUpdate?.({ item });\n })\n .finally(() => {\n handleItemsLoading(item.uid, false);\n })\n .catch((error: Error) => {\n handleItemsError(item.uid, error.message);\n });\n }\n };\n\n const handleDismiss = (uid: string) => {\n setRecentlyRemovedItems((prev) => prev.filter((r) => r.item.uid !== uid));\n };\n\n // Display max items\n const handleMaxItemsView = useCallback(() => {\n setDisplayMaxItems((prev) => !prev);\n }, []);\n\n useEffect(() => {\n const cartDataEvent = events.on(\n 'cart/data',\n (payload: Cart | null) => {\n setCartModelData(payload as CartModel);\n setLoading(!!isLoading);\n },\n { eager: true }\n );\n\n return () => {\n cartDataEvent?.off();\n };\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n // Clear recently removed items when undo is disabled\n useEffect(() => {\n if (!undo) {\n setRecentlyRemovedItems([]);\n }\n }, [undo]);\n\n // Call onItemsErrorsChange whenever itemsErrors changes\n useEffect(() => {\n if (onItemsErrorsChange) {\n onItemsErrorsChange(itemsErrors);\n }\n }, [itemsErrors, onItemsErrorsChange]);\n\n // Helper functions\n const getImage = (item: CartModel['items'][0], index: number) => {\n if (attributesToHide.includes('image')) {\n return undefined;\n }\n\n const defaultImageProps: ImageProps = {\n loading: index < 4 ? 'eager' : 'lazy',\n src: item.image.src,\n alt: item.image.alt,\n width: '300',\n height: '300',\n params: { width: 300 },\n };\n\n const imageComponent = (\n <Image data-testid=\"cart-list-item-image\" {...defaultImageProps} />\n );\n return (\n <Slot\n name=\"Thumbnail\"\n slot={slots?.Thumbnail}\n context={{\n item,\n defaultImageProps,\n }}\n >\n {routeProduct ? (\n <a href={routeProduct(item)}>{imageComponent}</a>\n ) : (\n imageComponent\n )}\n </Slot>\n );\n };\n\n const getTitle = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('name')) {\n return undefined;\n }\n\n return (\n <span data-testid=\"cart-list-item-title\">\n {routeProduct ? (\n <a href={routeProduct(item)}>{item.name}</a>\n ) : (\n item.name\n )}\n </span>\n );\n };\n\n const getConfiguration = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('configurations')) {\n return undefined;\n }\n\n const configuration = {\n ...item.bundleOptions,\n ...item.selectedOptions,\n ...item.customizableOptions,\n ...(item.recipient ? { [dictionary.recipient]: item.recipient } : null),\n ...(item.recipientEmail && item.recipient\n ? {\n [dictionary.recipient]: `${item.recipient} (${item.recipientEmail})`,\n }\n : null),\n ...(item.sender ? { [dictionary.sender]: item.sender } : null),\n ...(item.senderEmail && item.sender\n ? {\n [dictionary.sender]: `${item.sender} (${item.senderEmail})`,\n }\n : {}),\n ...(item.message ? { [dictionary.message]: item.message } : null),\n ...(item.links && item.links.count\n ? item.links.count > 1\n ? {\n [dictionary.files.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {\n [dictionary.file.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : null),\n };\n\n if (Object.keys(configuration).length === 0) {\n return undefined;\n }\n\n return configuration;\n };\n\n const getPriceProps = (item: CartModel['items'][0]) => {\n return cartTaxesConfig?.price === 'INCLUDING_TAX'\n ? item.discounted\n ? {\n amount: item.regularPrice.value,\n currency: item.regularPrice.currency,\n style: { font: 'inherit' },\n 'data-testid': 'including-tax-item-price',\n }\n : {\n amount: item.taxedPrice?.value,\n currency: item.taxedPrice?.currency,\n style: { font: 'inherit' },\n 'data-testid': 'including-tax-item-price',\n }\n : {\n amount: item.regularPrice?.value,\n currency: item.regularPrice?.currency,\n style: { font: 'inherit' },\n 'data-testid': 'regular-item-price',\n };\n };\n\n const getSavingsAmount = (item: CartModel['items'][0]) => {\n return {\n amount: item.savingsAmount?.value,\n currency: item.savingsAmount?.currency,\n style: { font: 'inherit' },\n 'data-testid': 'item-savings-amount',\n };\n };\n\n const getTotalExcludingTax = (item: CartModel['items'][0]) => {\n return cartTaxesConfig?.price === 'INCLUDING_EXCLUDING_TAX' ? (\n <Price\n amount={item.rowTotal.value}\n currency={item.rowTotal.currency}\n data-testid=\"excluding-tax-total\"\n aria-label={dictionary.regularPrice}\n />\n ) : undefined;\n };\n\n const getTotalPriceProps = (item: CartModel['items'][0]) => {\n const totalProps: PriceProps = {\n 'aria-label': dictionary.regularPrice,\n };\n const discountProps: PriceProps | null = item.discounted ? {} : null;\n\n if (\n ['INCLUDING_TAX', 'INCLUDING_EXCLUDING_TAX'].includes(\n cartTaxesConfig?.price as string\n )\n ) {\n totalProps['amount'] = item.rowTotalIncludingTax?.value;\n totalProps['currency'] = item.rowTotalIncludingTax?.currency;\n totalProps['variant'] = item.discounted ? 'strikethrough' : 'default';\n // @ts-ignore\n totalProps['data-testid'] = 'including-tax-item-total';\n\n if (discountProps) {\n totalProps['amount'] = item.total?.value;\n totalProps['currency'] = item.total?.currency;\n\n discountProps['amount'] = item.rowTotalIncludingTax?.value;\n discountProps['currency'] = item.rowTotalIncludingTax?.currency;\n discountProps['sale'] = true;\n discountProps['aria-label'] = dictionary.discountedPrice;\n // @ts-ignore\n discountProps['data-testid'] = 'discount-total';\n }\n } else {\n totalProps['amount'] = item.total?.value;\n totalProps['currency'] = item.total?.currency;\n totalProps['variant'] = item.discounted ? 'strikethrough' : 'default';\n // @ts-ignore\n totalProps['data-testid'] = 'regular-item-total';\n\n if (discountProps) {\n discountProps['amount'] = item.discountedTotal?.value;\n discountProps['currency'] = item.discountedTotal?.currency;\n discountProps['sale'] = true;\n discountProps['aria-label'] = dictionary.regularPrice;\n // @ts-ignore\n discountProps['data-testid'] = 'discount-total';\n }\n }\n\n return {\n totalProps,\n discountProps,\n };\n };\n\n const getWarning = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('warning')) {\n return undefined;\n }\n\n const error = itemsErrors.get(item.uid);\n const quantityError = itemsErrors\n .get(item.uid)\n ?.includes('The requested qty is not available');\n const itemIsLoading = itemsLoading.has(item.uid);\n\n const insufficientQuantityText =\n item.insufficientQuantity && item.stockLevel\n ? item.stockLevel === 'noNumber'\n ? dictionary.insufficientQuantityGeneral\n : dictionary.insufficientQuantity\n .replace('{inventory}', item.stockLevel?.toString())\n .replace('{count}', item.quantity.toString())\n : '';\n\n const lowInventoryText =\n item.lowInventory &&\n item.onlyXLeftInStock &&\n dictionary.lowInventory.replace(\n '{count}',\n item.onlyXLeftInStock?.toString()\n );\n\n const notAvailableQuantity =\n !item.outOfStock && error && quantityError\n ? dictionary.notAvailableMessage\n : error;\n\n return !itemIsLoading &&\n (error || item.insufficientQuantity || item.lowInventory) ? (\n <span data-testid=\"item-warning\">\n <Icon source={WarningWithCircle} size={'16'} />\n {notAvailableQuantity || insufficientQuantityText || lowInventoryText}\n </span>\n ) : undefined;\n };\n\n const getAlert = (item: CartModel['items'][0]) => {\n if (attributesToHide?.includes('alert')) {\n return undefined;\n }\n const itemIsLoading = itemsLoading.has(item.uid);\n\n return !itemIsLoading && item.outOfStock ? (\n <span data-testid=\"item-alert\">\n <Icon source={OrderError} size={'16'} />\n {dictionary.outOfStockAlert}\n </span>\n ) : undefined;\n };\n\n const getProductAttributes = (item: CartModel['items'][0]) => {\n return (\n <Slot\n name=\"ProductAttributes\"\n slot={slots?.ProductAttributes}\n context={{\n item,\n }}\n />\n );\n };\n\n const getSku = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('sku')) {\n return undefined;\n }\n return <span data-testid=\"cart-list-item-sku\">{item.sku}</span>;\n };\n\n const getFooter = (item: CartModel['items'][0]) => {\n return (\n <Slot\n name=\"Footer\"\n slot={slots?.Footer}\n context={{ item, handleItemsLoading, handleItemsError, onItemUpdate }}\n />\n );\n };\n\n const getRemoveContent = (item: CartModel['items'][0]) => {\n if (!enableRemoveItem) {\n return undefined;\n }\n\n return (\n <Slot\n name=\"ItemRemoveAction\"\n slot={slots?.ItemRemoveAction}\n context={{\n item,\n enableRemoveItem,\n handleItemQuantityUpdate,\n handleItemsError,\n handleItemsLoading,\n onItemUpdate,\n itemsLoading,\n }}\n >\n {/* Default remove button */}\n <Button\n data-testid=\"cart-item-remove-button\"\n className={classes(['dropin-cart-item__remove'])}\n variant=\"tertiary\"\n onClick={() => handleItemQuantityUpdate(item, 0)}\n disabled={itemsLoading.has(item.uid)}\n icon={\n <Icon\n data-testid=\"cart-item-remove-icon\"\n source={Trash}\n size=\"24\"\n stroke=\"2\"\n viewBox=\"0 0 24 24\"\n aria-label={\n dictionary.remove?.replace('{product}', item.name) ||\n dictionary.removeDefault\n }\n />\n }\n />\n </Slot>\n );\n };\n\n const getQuantityContent = (item: CartModel['items'][0]) => {\n if (attributesToHide.includes('quantity')) {\n return undefined;\n }\n\n if (!enableUpdateItemQuantity) {\n return undefined;\n }\n\n return (\n <Slot\n name=\"ItemQuantity\"\n slot={slots?.ItemQuantity}\n context={{\n item,\n enableUpdateItemQuantity,\n handleItemQuantityUpdate,\n itemsLoading,\n handleItemsError,\n handleItemsLoading,\n onItemUpdate,\n }}\n >\n <Incrementer\n value={item.quantity}\n min={1}\n onValue={(value) => handleItemQuantityUpdate(item, Number(value))}\n name=\"quantity\"\n disabled={itemsLoading.has(item.uid)}\n aria-label={dictionary.quantity}\n />\n </Slot>\n );\n };\n\n // Re-usable function to get a filtered list of cart items\n const getCartItemEntries = (\n filterCallback: (item: CartModel['items'][0]) => boolean\n ) => {\n return cartModelData?.totalQuantity\n ? cartModelData.items.filter(filterCallback).map((item, index) => {\n const { totalProps, discountProps } = getTotalPriceProps(item);\n\n const defaultCartItem = (\n <CartItem\n updating={itemsLoading?.has(item.uid)}\n loading={loading}\n key={item.uid}\n data-testid={`cart-list-item-entry-${item.uid}`}\n image={getImage(item, index)}\n title={\n <Slot\n name=\"ItemTitle\"\n slot={slots?.ItemTitle}\n context={{ item }}\n >\n {getTitle(item)}\n </Slot>\n }\n sku={\n attributesToHide.includes('sku') ? undefined : (\n <Slot\n name=\"ItemSku\"\n slot={slots?.ItemSku}\n context={{ item }}\n >\n {getSku(item)}\n </Slot>\n )\n }\n price={\n attributesToHide.includes('price') ? undefined : (\n <Slot\n name=\"ItemPrice\"\n slot={slots?.ItemPrice}\n context={{ item }}\n slotTag=\"span\"\n >\n <Price {...getPriceProps(item)} />\n </Slot>\n )\n }\n quantity={\n attributesToHide.includes('quantity')\n ? undefined\n : item.quantity\n }\n quantityContent={getQuantityContent(item)}\n total={\n <>\n {attributesToHide.includes('total') ? undefined : (\n <Slot\n name=\"ItemTotal\"\n slot={slots?.ItemTotal}\n context={{ item }}\n >\n <Price {...totalProps} />\n </Slot>\n )}\n {attributesToHide.includes('totalDiscount')\n ? undefined\n : discountProps && (\n <Slot\n name=\"ItemTotal\"\n slot={slots?.ItemTotal}\n context={{ item }}\n >\n <Price {...discountProps} />\n </Slot>\n )}\n </>\n }\n attributes={getProductAttributes(item)}\n configurations={getConfiguration(item)}\n totalExcludingTax={\n attributesToHide.includes('totalExcludingTax')\n ? undefined\n : getTotalExcludingTax(item)\n }\n taxIncluded={cartTaxesConfig?.price === 'INCLUDING_TAX'}\n taxExcluded={\n !attributesToHide.includes('totalExcludingTax') &&\n cartTaxesConfig?.price === 'INCLUDING_EXCLUDING_TAX'\n }\n warning={getWarning(item)}\n alert={getAlert(item)}\n quantityType={quantityType}\n dropdownOptions={dropdownOptions}\n onQuantity={\n enableUpdateItemQuantity && !itemsLoading.has(item.uid)\n ? (newQuantity) => {\n handleItemQuantityUpdate(item, newQuantity);\n }\n : undefined\n }\n onRemove={\n enableRemoveItem && !itemsLoading.has(item.uid)\n ? () => handleItemQuantityUpdate(item, 0)\n : undefined\n }\n discount={\n showDiscount && item.discounted && item.discountPercentage ? (\n <div data-testid=\"item-discount-percent\">\n {dictionary.discountPercent.replace(\n '{discount}',\n item.discountPercentage?.toString() ?? ''\n )}\n </div>\n ) : undefined\n }\n savings={\n showSavings && item.discounted && item.savingsAmount ? (\n <div>\n <span>\n <Price {...getSavingsAmount(item)} />\n </span>\n &nbsp;\n {dictionary.savingsAmount}\n </div>\n ) : undefined\n }\n footer={getFooter(item)}\n removeContent={getRemoveContent(item)}\n />\n );\n\n return (\n <Slot\n key={item.uid}\n name=\"CartItem\"\n slot={slots?.CartItem}\n context={{\n item,\n index,\n enableUpdateItemQuantity,\n enableRemoveItem,\n itemsLoading,\n loading,\n attributesToHide,\n cartTaxesConfig,\n quantityType,\n dropdownOptions,\n showDiscount,\n showSavings,\n dictionary,\n getImage,\n getTitle,\n getSku,\n getPriceProps,\n getTotalPriceProps,\n getProductAttributes,\n getConfiguration,\n getTotalExcludingTax,\n getWarning,\n getAlert,\n getFooter,\n getSavingsAmount,\n }}\n >\n {defaultCartItem}\n </Slot>\n );\n })\n : null;\n };\n\n const heading = (\n <Slot\n name=\"Heading\"\n slot={slots?.Heading}\n context={{\n count: cartModelData?.totalQuantity,\n }}\n >\n <div data-testid=\"default-cart-heading\">\n {dictionary.heading.replace(\n '({count})',\n cartModelData?.totalQuantity\n ? `(${cartModelData?.totalQuantity.toString()})`\n : ''\n )}\n </div>\n </Slot>\n );\n\n // Heading Section text for screen reader\n const headingSection = heading.props.children.props.children;\n\n // Out of Stock Items\n const handleRemoveOutOfStockItems = () => {\n const outOfStockItems = cartModelData?.items.filter(\n (item) => item.outOfStock\n );\n\n outOfStockItems?.forEach((item) => {\n handleItemQuantityUpdate(item, 0);\n });\n };\n\n const outOfStockEntries = getCartItemEntries(\n (item) => item.outOfStock || item.insufficientQuantity || false\n );\n\n const outOfStockMessage = cartModelData?.hasOutOfStockItems ? (\n <InLineAlert\n data-testid=\"cart-out-of-stock-message\"\n icon={<Icon source={OrderError} size={'16'} />}\n itemList={\n <CartList data-testid=\"out-of-stock-cart-items\">\n {outOfStockEntries}\n </CartList>\n }\n type=\"warning\"\n heading={dictionary.outOfStockHeading}\n description={dictionary.outOfStockDescription}\n variant=\"primary\"\n actionButtonPosition=\"bottom\"\n additionalActions={\n cartModelData?.hasFullyOutOfStockItems && enableRemoveItem\n ? [\n {\n label: dictionary.removeAction,\n onClick: handleRemoveOutOfStockItems,\n },\n ]\n : undefined\n }\n />\n ) : undefined;\n\n // Main Product Entries\n const mainProductEntries = getCartItemEntries(\n (item) => !item.outOfStock && !item.insufficientQuantity\n );\n\n const numOfVisibleItems = displayMaxItems\n ? Math.max(maxItems || 5, 5)\n : Math.min(cartModelData?.totalQuantity || 5, 5);\n\n const hasHiddenItems = cartModelData?.totalQuantity > numOfVisibleItems;\n\n const canDisplayMoreItems =\n hasHiddenItems && !displayMaxItems && numOfVisibleItems != maxItems;\n\n const footerActions =\n cartModelData?.totalQuantity && mainProductEntries ? (\n <Slot\n name=\"Footer\"\n slot={slots?.CartSummaryFooter}\n context={{ displayMaxItems, routeCart }}\n data-testid=\"cart-cart-summary-footer-slot\"\n className=\"cart-cart-summary-footer\"\n >\n {hasHiddenItems ? (\n canDisplayMoreItems ? (\n <Button\n className=\"cart-cart-summary-list-footer__action\"\n onClick={handleMaxItemsView}\n data-testid=\"view-more-items-button\"\n variant=\"tertiary\"\n >\n {dictionary.viewMore}\n </Button>\n ) : (\n routeCart && (\n <Button\n className=\"cart-cart-summary-list-footer__action\"\n href={routeCart()}\n variant=\"tertiary\"\n data-testid=\"view-cart-or-less-items-button\"\n >\n {dictionary.viewAll}\n </Button>\n )\n )\n ) : (\n routeCart && (\n <Button\n className=\"cart-cart-summary-list-footer__action\"\n href={routeCart()}\n variant=\"tertiary\"\n data-testid=\"view-cart-button\"\n >\n {dictionary.viewAll}\n </Button>\n )\n )}\n </Slot>\n ) : null;\n\n const renderCartListWithUndoBanners = () => {\n if (!cartModelData?.items) return null;\n const entries: (VNode | null)[] = [];\n const items = cartModelData.items;\n const UndoBanner = slots?.UndoBanner;\n\n // Calculate how many items to show (same logic as original)\n const numItemsToShow = displayMaxItems\n ? Math.max(!maxItems ? cartModelData?.totalQuantity : maxItems, 5)\n : Math.min(maxItems ?? 5, 5);\n\n // Only process items up to the limit\n for (let i = 0; i <= numItemsToShow; i++) {\n // Render undo banners for this index only if undo is enabled\n if (undo) {\n recentlyRemovedItems\n .filter((r) => r.index === i)\n .forEach(({ item, error, beingRemoved }) => {\n const defaultUndoBanner = (\n <InLineAlert\n key={`undo-banner-${item.uid}`}\n type={error ? 'error' : 'info'}\n heading={\n beingRemoved\n ? dictionary.itemBeingRemoved?.replace(\n '{product}',\n item.name\n )\n : dictionary.itemRemoved?.replace('{product}', item.name)\n }\n description={error || dictionary.itemRemovedDescription}\n variant=\"primary\"\n actionButtonPosition=\"bottom\"\n additionalActions={\n beingRemoved\n ? [] // Hide buttons while removing\n : [\n {\n label: dictionary.undoAction,\n onClick: () => handleUndo(item.uid),\n 'aria-label': `${dictionary.undoAction} remove ${item.name}`,\n },\n {\n label: dictionary.dismissAction,\n onClick: () => handleDismiss(item.uid),\n 'aria-label': `${dictionary.dismissAction} undo for ${item.name}`,\n },\n ]\n }\n />\n );\n\n entries.push(\n UndoBanner ? (\n <Slot\n name=\"UndoBanner\"\n slot={UndoBanner}\n context={{\n item,\n loading,\n error,\n onUndo: () => handleUndo(item.uid),\n onDismiss: () => handleDismiss(item.uid),\n }}\n key={`undo-banner-${item.uid}`}\n >\n {defaultUndoBanner}\n </Slot>\n ) : (\n defaultUndoBanner\n )\n );\n });\n }\n // Render cart item if not at the end and within the slice limit\n if (i < numItemsToShow && i < items.length) {\n entries.push(mainProductEntries?.[i] || null);\n }\n }\n return <CartList data-testid=\"cart-list\">{entries}</CartList>;\n };\n // Undo handler implementation\n const handleUndo = useCallback(\n async (uid: string) => {\n setRecentlyRemovedItems((prev) =>\n prev.map((r) =>\n r.item.uid === uid ? { ...r, loading: true, error: undefined } : r\n )\n );\n const removed = recentlyRemovedItems.find((r) => r.item.uid === uid);\n if (!removed) return;\n try {\n await addProductsToCart([\n {\n sku: removed.item.sku,\n parentSku: removed.item.topLevelSku,\n quantity: removed.item.quantity,\n optionsUIDs:\n removed.item.bundleOptionsUIDs || // Use bundle option UIDs for bundle products\n (removed.item.selectedOptionsUIDs\n ? Object.values(removed.item.selectedOptionsUIDs)\n : undefined),\n enteredOptions: removed.item.customizableOptions\n ? Object.entries(removed.item.customizableOptions).map(\n ([uid, value]) => ({ uid, value })\n )\n : undefined,\n },\n ]);\n setRecentlyRemovedItems((prev) =>\n prev.filter((r) => r.item.uid !== uid)\n );\n } catch (error: any) {\n setRecentlyRemovedItems((prev) =>\n prev.map((r) =>\n r.item.uid === uid\n ? { ...r, error: error?.message || 'Failed to restore item.' }\n : r\n )\n );\n }\n },\n [recentlyRemovedItems]\n );\n\n // Expose handleUndo to parent components via ref (for testing)\n useImperativeHandle(\n ref,\n () => ({\n handleUndo,\n }),\n [handleUndo]\n );\n\n // Replace the emptyCart definition with conditional rendering for undo banners\n const emptyCart = (\n <>\n {undo && recentlyRemovedItems.length > 0 ? (\n renderCartListWithUndoBanners()\n ) : (\n <Slot name=\"EmptyCart\" slot={slots?.EmptyCart} context={{}}>\n <EmptyCart\n data-testid=\"empty-cart\"\n ctaLinkURL={routeEmptyCartCTA?.()}\n />\n </Slot>\n )}\n </>\n );\n\n // Choose between original product entries and undo banner version\n const productEntries =\n cartModelData?.totalQuantity ||\n (undo && recentlyRemovedItems.length > 0) ? (\n !undo ? (\n <CartList data-testid=\"cart-list\">\n {mainProductEntries?.slice(\n 0,\n displayMaxItems\n ? Math.max(\n !maxItems ? cartModelData?.totalQuantity : maxItems,\n 5\n )\n : Math.min(maxItems ?? 5, 5)\n )}\n </CartList>\n ) : recentlyRemovedItems.length > 0 ? (\n renderCartListWithUndoBanners()\n ) : (\n <CartList data-testid=\"cart-list\">\n {mainProductEntries?.slice(\n 0,\n displayMaxItems\n ? Math.max(\n !maxItems ? cartModelData?.totalQuantity : maxItems,\n 5\n )\n : Math.min(maxItems ?? 5, 5)\n )}\n </CartList>\n )\n ) : null;\n\n return accordion ? (\n <Accordion\n data-testid=\"cart-summary-list-accordion\"\n className={classes([\n `cart-cart-summary-list-accordion`,\n `cart-cart-summary-list__background--${variant}`,\n ])}\n iconOpen={ChevronRight}\n iconClose={ChevronDown}\n >\n <AccordionSection\n title={headingSection}\n data-testid=\"cart-summary-list-accordion__section\"\n open={true}\n renderContentWhenClosed={true}\n >\n <CartSummaryListComponent\n {...props}\n aria-expanded={true}\n aria-label={'TEST'}\n className={`cart-cart-summary-list-accordion__list`}\n loading={loading}\n footer={\n hideFooter\n ? undefined\n : footerActions || (routeCart ? footerActions : undefined)\n }\n emptyCart={emptyCart}\n products={productEntries}\n outOfStockMessage={outOfStockMessage}\n variant={variant}\n />\n </AccordionSection>\n </Accordion>\n ) : (\n <CartSummaryListComponent\n {...props}\n heading={hideHeading ? undefined : heading}\n footer={\n hideFooter\n ? undefined\n : footerActions || (routeCart ? footerActions : undefined)\n }\n loading={loading}\n emptyCart={emptyCart}\n products={productEntries}\n outOfStockMessage={outOfStockMessage}\n variant={variant}\n />\n );\n }\n);\n\nCartSummaryList.getInitialData = async function () {\n return getPersistedCartData();\n};\n"],"names":["SvgChevronRight","props","React","CartSummaryList","className","children","heading","footer","emptyCart","products","outOfStockMessage","variant","loading","jsx","classes","CartSummaryListSkeleton","jsxs","Fragment","VComponent","Divider","Skeleton","SkeletonRow","forwardRef","initialData","hideHeading","hideFooter","routeProduct","routeEmptyCartCTA","routeCart","onItemUpdate","onItemRemove","maxItems","slots","attributesToHide","enableRemoveItem","enableUpdateItemQuantity","onItemsErrorsChange","accordion","isLoading","showMaxItems","showDiscount","showSavings","quantityType","dropdownOptions","undo","__testRecentlyRemovedItems","ref","setLoading","useState","cartModelData","setCartModelData","itemsLoading","setItemLoading","itemsErrors","setItemErrors","recentlyRemovedItems","setRecentlyRemovedItems","useEffect","cartTaxesConfig","_a","state","displayMaxItems","setDisplayMaxItems","dictionary","useText","handleItemsLoading","uid","prev","handleItemsError","message","addToRecentlyRemovedItems","cart","getPersistedCartData","item","i","index","r","events","handleItemQuantityUpdate","quantity","updateProductsFromCart","error","handleDismiss","handleMaxItemsView","useCallback","cartDataEvent","payload","getImage","defaultImageProps","imageComponent","Image","Slot","getTitle","getConfiguration","configuration","getPriceProps","_b","_c","_d","getSavingsAmount","getTotalExcludingTax","Price","getTotalPriceProps","totalProps","discountProps","_e","_f","_g","_h","_i","_j","getWarning","quantityError","itemIsLoading","insufficientQuantityText","lowInventoryText","notAvailableQuantity","Icon","WarningWithCircle","getAlert","OrderError","getProductAttributes","getSku","getFooter","getRemoveContent","Button","Trash","getQuantityContent","Incrementer","value","getCartItemEntries","filterCallback","defaultCartItem","CartItem","newQuantity","headingSection","handleRemoveOutOfStockItems","outOfStockItems","outOfStockEntries","InLineAlert","CartList","mainProductEntries","numOfVisibleItems","hasHiddenItems","canDisplayMoreItems","footerActions","renderCartListWithUndoBanners","entries","items","UndoBanner","numItemsToShow","beingRemoved","defaultUndoBanner","handleUndo","removed","addProductsToCart","useImperativeHandle","EmptyCart","productEntries","Accordion","ChevronRight","ChevronDown","AccordionSection","CartSummaryListComponent"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,6 +1,6 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{s as o,d as q,f as I,h as U}from"./resetCart.js";import{events as f}from"@dropins/tools/event-bus.js";import{Initializer as L,merge as X}from"@dropins/tools/lib.js";import{c as K}from"./persisted-data.js";import{CART_FRAGMENT as A}from"../fragments.js";const z=new L({init:async e=>{const n={disableGuestCart:!1,...e};z.config.setConfig(n),D().catch(console.error)},listeners:()=>[f.on("authenticated",e=>{o.authenticated&&!e?f.emit("cart/reset",void 0):e&&!o.authenticated&&(o.authenticated=e,D().catch(console.error))},{eager:!0}),f.on("locale",async e=>{e!==o.locale&&(o.locale=e,D().catch(console.error))}),f.on("cart/reset",()=>{q().catch(console.error),f.emit("cart/data",null)}),f.on("cart/data",e=>{K(e)}),f.on("checkout/updated",e=>{e&&xe().catch(console.error)})]}),B=z.config;function k(e){var c,r,u,l,i,a,_,g,y,d,m,t,C,h,v,b;if(!e)return null;const n={appliedGiftCards:((c=e==null?void 0:e.applied_gift_cards)==null?void 0:c.map(s=>{var R,w,M;const p={code:s.code??"",appliedBalance:{value:s.applied_balance.value??0,currency:s.applied_balance.currency??"USD"},currentBalance:{value:s.current_balance.value??0,currency:s.current_balance.currency??"USD"},expirationDate:s.expiration_date??""},x=(R=p==null?void 0:p.currentBalance)==null?void 0:R.value,T=(w=p==null?void 0:p.appliedBalance)==null?void 0:w.value,S=(M=p==null?void 0:p.currentBalance)==null?void 0:M.currency,W=x-T>0?x-T:0;return{...p,giftCardBalance:{value:W,currency:S}}}))??[],id:e.id,totalQuantity:le(e),totalUniqueItems:e.itemsV2.items.length,totalGiftOptions:j((r=e==null?void 0:e.prices)==null?void 0:r.gift_options),giftReceiptIncluded:(e==null?void 0:e.gift_receipt_included)??!1,printedCardIncluded:(e==null?void 0:e.printed_card_included)??!1,cartGiftWrapping:((u=e==null?void 0:e.available_gift_wrappings)==null?void 0:u.map(s=>{var p,x,T,S,E;return{design:s.design??"",uid:s.uid,selected:((p=e==null?void 0:e.gift_wrapping)==null?void 0:p.uid)===s.uid,image:{url:((x=s==null?void 0:s.image)==null?void 0:x.url)??"",label:((T=s.image)==null?void 0:T.label)??""},price:{currency:((S=s==null?void 0:s.price)==null?void 0:S.currency)??"USD",value:((E=s==null?void 0:s.price)==null?void 0:E.value)??0}}}))??[],giftMessage:{senderName:((l=e==null?void 0:e.gift_message)==null?void 0:l.from)??"",recipientName:((i=e==null?void 0:e.gift_message)==null?void 0:i.to)??"",message:((a=e==null?void 0:e.gift_message)==null?void 0:a.message)??""},errors:re(e==null?void 0:e.itemsV2),items:N(e==null?void 0:e.itemsV2),miniCartMaxItems:N(e==null?void 0:e.itemsV2).slice(0,((_=o.config)==null?void 0:_.miniCartMaxItemsDisplay)??10),total:{includingTax:{value:e.prices.grand_total.value,currency:e.prices.grand_total.currency},excludingTax:{value:e.prices.grand_total_excluding_tax.value,currency:e.prices.grand_total_excluding_tax.currency}},discount:P(e.prices.discounts,e.prices.grand_total.currency),subtotal:{excludingTax:{value:(g=e.prices.subtotal_excluding_tax)==null?void 0:g.value,currency:(y=e.prices.subtotal_excluding_tax)==null?void 0:y.currency},includingTax:{value:(d=e.prices.subtotal_including_tax)==null?void 0:d.value,currency:(m=e.prices.subtotal_including_tax)==null?void 0:m.currency},includingDiscountOnly:{value:(t=e.prices.subtotal_with_discount_excluding_tax)==null?void 0:t.value,currency:(C=e.prices.subtotal_with_discount_excluding_tax)==null?void 0:C.currency}},appliedTaxes:F(e.prices.applied_taxes),totalTax:P(e.prices.applied_taxes,e.prices.grand_total.currency),appliedDiscounts:F(e.prices.discounts),isVirtual:e.is_virtual,addresses:{shipping:e.shipping_addresses&&se(e)},isGuestCart:!o.authenticated,hasOutOfStockItems:te(e),hasFullyOutOfStockItems:_e(e),appliedCoupons:e.applied_coupons};return X(n,(b=(v=(h=B.getConfig().models)==null?void 0:h.CartModel)==null?void 0:v.transformer)==null?void 0:b.call(v,e))}function j(e){var n,c,r,u,l,i,a,_,g,y,d,m;return{giftWrappingForItems:{value:((n=e==null?void 0:e.gift_wrapping_for_items)==null?void 0:n.value)??0,currency:((c=e==null?void 0:e.gift_wrapping_for_items)==null?void 0:c.currency)??"USD"},giftWrappingForItemsInclTax:{value:((r=e==null?void 0:e.gift_wrapping_for_items_incl_tax)==null?void 0:r.value)??0,currency:((u=e==null?void 0:e.gift_wrapping_for_items_incl_tax)==null?void 0:u.currency)??"USD"},giftWrappingForOrder:{value:((l=e==null?void 0:e.gift_wrapping_for_order)==null?void 0:l.value)??0,currency:((i=e==null?void 0:e.gift_wrapping_for_order)==null?void 0:i.currency)??"USD"},giftWrappingForOrderInclTax:{value:((a=e==null?void 0:e.gift_wrapping_for_order_incl_tax)==null?void 0:a.value)??0,currency:((_=e==null?void 0:e.gift_wrapping_for_order_incl_tax)==null?void 0:_.currency)??"USD"},printedCard:{value:((g=e==null?void 0:e.printed_card)==null?void 0:g.value)??0,currency:((y=e==null?void 0:e.printed_card)==null?void 0:y.currency)??"USD"},printedCardInclTax:{value:((d=e==null?void 0:e.printed_card_incl_tax)==null?void 0:d.value)??0,currency:((m=e==null?void 0:e.printed_card_incl_tax)==null?void 0:m.currency)??"USD"}}}function P(e,n){return e!=null&&e.length?e.reduce((c,r)=>({value:c.value+r.amount.value,currency:r.amount.currency}),{value:0,currency:n}):{value:0,currency:n}}function Y(e,n){var c,r,u,l;return{src:e!=null&&e.useConfigurableParentThumbnail?n.product.thumbnail.url:((r=(c=n.configured_variant)==null?void 0:c.thumbnail)==null?void 0:r.url)||n.product.thumbnail.url,alt:e!=null&&e.useConfigurableParentThumbnail?n.product.thumbnail.label:((l=(u=n.configured_variant)==null?void 0:u.thumbnail)==null?void 0:l.label)||n.product.thumbnail.label}}function O(e){var n,c,r,u;return e.__typename==="ConfigurableCartItem"?{value:(c=(n=e.configured_variant)==null?void 0:n.price_range)==null?void 0:c.maximum_price.regular_price.value,currency:(u=(r=e.configured_variant)==null?void 0:r.price_range)==null?void 0:u.maximum_price.regular_price.currency}:e.__typename==="GiftCardCartItem"?{value:e.prices.price.value,currency:e.prices.price.currency}:{value:e.prices.original_item_price.value,currency:e.prices.original_item_price.currency}}function H(e){var n,c,r;return e.__typename==="ConfigurableCartItem"?((c=(n=e.configured_variant)==null?void 0:n.price_range)==null?void 0:c.maximum_price.discount.amount_off)>0:((r=e.product.price_range)==null?void 0:r.maximum_price.discount.amount_off)>0}function J(e){var n,c,r;return{senderName:((n=e==null?void 0:e.gift_message)==null?void 0:n.from)??"",recipientName:((c=e==null?void 0:e.gift_message)==null?void 0:c.to)??"",message:((r=e==null?void 0:e.gift_message)==null?void 0:r.message)??""}}function Z(e){return{currency:(e==null?void 0:e.currency)??"USD",value:(e==null?void 0:e.value)??0}}function N(e){var c;if(!((c=e==null?void 0:e.items)!=null&&c.length))return[];const n=o.config;return e.items.map(r=>{var u,l,i,a,_,g,y,d,m;return{giftWrappingAvailable:((u=r==null?void 0:r.product)==null?void 0:u.gift_wrapping_available)??!1,giftWrappingPrice:Z((l=r==null?void 0:r.product)==null?void 0:l.gift_wrapping_price),giftMessage:J(r),productGiftWrapping:((i=r==null?void 0:r.available_gift_wrapping)==null?void 0:i.map(t=>{var C,h,v,b,s;return{design:t.design??"",uid:t.uid,selected:((C=r.gift_wrapping)==null?void 0:C.uid)===t.uid,image:{url:((h=t==null?void 0:t.image)==null?void 0:h.url)??"",label:((v=t.image)==null?void 0:v.label)??""},price:{currency:((b=t==null?void 0:t.price)==null?void 0:b.currency)??"USD",value:((s=t==null?void 0:t.price)==null?void 0:s.value)??0}}}))??[],itemType:r.__typename,uid:r.uid,giftMessageAvailable:ee(r.product.gift_message_available),url:{urlKey:r.product.url_key,categories:r.product.categories.map(t=>t.url_key)},canonicalUrl:r.product.canonical_url,categories:r.product.categories.map(t=>t.name),quantity:r.quantity,sku:pe(r),topLevelSku:r.product.sku,name:r.product.name,image:Y(n,r),price:{value:r.prices.price.value,currency:r.prices.price.currency},taxedPrice:{value:r.prices.price_including_tax.value,currency:r.prices.price_including_tax.currency},fixedProductTaxes:r.prices.fixed_product_taxes,rowTotal:{value:r.prices.row_total.value,currency:r.prices.row_total.currency},rowTotalIncludingTax:{value:r.prices.row_total_including_tax.value,currency:r.prices.row_total_including_tax.currency},links:ie(r.links),total:{value:(a=r.prices.original_row_total)==null?void 0:a.value,currency:(_=r.prices.original_row_total)==null?void 0:_.currency},discount:{value:r.prices.total_item_discount.value,currency:r.prices.total_item_discount.currency,label:(g=r.prices.discounts)==null?void 0:g.map(t=>t.label)},regularPrice:O(r),discounted:H(r),bundleOptions:r.__typename==="BundleCartItem"?ne(r.bundle_options):null,bundleOptionsUIDs:r.__typename==="BundleCartItem"?ce(r.bundle_options):null,selectedOptions:(y=$(r.configurable_options))==null?void 0:y.options,selectedOptionsUIDs:(d=$(r.configurable_options))==null?void 0:d.uids,customizableOptions:ue(r.customizable_options),sender:r.__typename==="GiftCardCartItem"?r.sender_name:null,senderEmail:r.__typename==="GiftCardCartItem"?r.sender_email:null,recipient:r.__typename==="GiftCardCartItem"?r.recipient_name:null,recipientEmail:r.__typename==="GiftCardCartItem"?r.recipient_email:null,message:r.__typename==="GiftCardCartItem"?r.message:null,discountedTotal:{value:r.prices.row_total.value,currency:r.prices.row_total.currency},onlyXLeftInStock:r.__typename==="ConfigurableCartItem"?(m=r.configured_variant)==null?void 0:m.only_x_left_in_stock:r.product.only_x_left_in_stock,lowInventory:r.is_available&&r.product.only_x_left_in_stock!==null,insufficientQuantity:(r.__typename==="ConfigurableCartItem"?r.configured_variant:r.product).stock_status==="IN_STOCK"&&!r.is_available,outOfStock:r.product.stock_status==="OUT_OF_STOCK",stockLevel:oe(r),discountPercentage:ae(r),savingsAmount:ge(r),productAttributes:fe(r)}})}function ee(e){switch(+e){case 0:return!1;case 1:return!0;case 2:return null;default:return!1}}function re(e){var c;const n=(c=e==null?void 0:e.items)==null?void 0:c.reduce((r,u)=>{var l;return(l=u.errors)==null||l.forEach(i=>{r.push({uid:u.uid,text:i.message})}),r},[]);return n!=null&&n.length?n:null}function F(e){return e!=null&&e.length?e.map(n=>({amount:{value:n.amount.value,currency:n.amount.currency},label:n.label,coupon:n.coupon})):[]}function ne(e){const n=e==null?void 0:e.map(r=>({uid:r.uid,label:r.label,value:r.values.map(u=>u.label).join(", ")})),c={};return n==null||n.forEach(r=>{c[r.label]=r.value}),Object.keys(c).length>0?c:null}function ce(e){if(!(e!=null&&e.length))return null;const n=[];return e.forEach(c=>{var r;if((r=c.values)!=null&&r.length){const u=c.values.map(l=>l.uid);n.push(...u)}}),n.length>0?n:null}function $(e){const n=e==null?void 0:e.map(u=>({uid:u.configurable_product_option_uid,label:u.option_label,value:u.value_label,valueUid:u.configurable_product_option_value_uid})),c={},r={};return n==null||n.forEach(u=>{c[u.label]=u.value,r[u.label]=u.valueUid}),{options:Object.keys(c).length>0?c:null,uids:Object.keys(r).length>0?r:null}}function ue(e){const n=e==null?void 0:e.map(r=>({uid:r.customizable_option_uid,label:r.label,type:r.type,values:r.values.map(u=>({uid:u.customizable_option_value_uid,label:u.label,value:u.value}))})),c={};return n==null||n.forEach(r=>{var u;switch(r.type){case"field":case"area":case"date_time":c[r.label]=r.values[0].value;break;case"radio":case"drop_down":c[r.label]=r.values[0].label;break;case"multiple":case"checkbox":c[r.label]=r.values.reduce((l,i)=>l?`${l}, ${i.label}`:i.label,"");break;case"file":{const l=new DOMParser,i=r.values[0].value,_=((u=l.parseFromString(i,"text/html").querySelector("a"))==null?void 0:u.textContent)||"";c[r.label]=_;break}}}),c}function le(e){var n,c;return((n=o.config)==null?void 0:n.cartSummaryDisplayTotal)===0?e.itemsV2.items.length:((c=o.config)==null?void 0:c.cartSummaryDisplayTotal)===1?e.total_quantity:e.itemsV2.items.length}function ie(e){return(e==null?void 0:e.length)>0?{count:e.length,result:e.map(n=>n.title).join(", ")}:null}function se(e){var n,c,r,u;return(n=e.shipping_addresses)!=null&&n.length?(c=e.shipping_addresses)==null?void 0:c.map(l=>({countryCode:l.country.code,zipCode:l.postcode,regionCode:l.region.code})):(r=e.addresses)!=null&&r.length?(u=e.addresses)==null?void 0:u.filter(l=>l.default_shipping).map(l=>{var i;return l.default_shipping&&{countryCode:l.country_code,zipCode:l.postcode,regionCode:(i=l.region)==null?void 0:i.region_code}}):null}function te(e){var n,c;return(c=(n=e==null?void 0:e.itemsV2)==null?void 0:n.items)==null?void 0:c.some(r=>{var u;return((u=r==null?void 0:r.product)==null?void 0:u.stock_status)==="OUT_OF_STOCK"||r.product.stock_status==="IN_STOCK"&&!r.is_available})}function oe(e){return e.not_available_message?e.product.quantity!=null?e.product.quantity:"noNumber":null}function _e(e){var n,c;return(c=(n=e==null?void 0:e.itemsV2)==null?void 0:n.items)==null?void 0:c.some(r=>{var u;return((u=r==null?void 0:r.product)==null?void 0:u.stock_status)==="OUT_OF_STOCK"})}function ae(e){var c,r,u,l,i,a,_,g;let n;if(e.__typename==="ConfigurableCartItem")n=(l=(u=(r=(c=e==null?void 0:e.configured_variant)==null?void 0:c.price_range)==null?void 0:r.maximum_price)==null?void 0:u.discount)==null?void 0:l.percent_off;else{if(e.__typename==="BundleCartItem")return;n=(g=(_=(a=(i=e==null?void 0:e.product)==null?void 0:i.price_range)==null?void 0:a.maximum_price)==null?void 0:_.discount)==null?void 0:g.percent_off}if(n!==0)return Math.round(n)}function pe(e){var n;return e.__typename==="ConfigurableCartItem"?e.configured_variant.sku:((n=e.product)==null?void 0:n.variantSku)||e.product.sku}function ge(e){var r,u,l,i,a,_;let n,c;if(n=((u=(r=e==null?void 0:e.prices)==null?void 0:r.original_row_total)==null?void 0:u.value)-((i=(l=e==null?void 0:e.prices)==null?void 0:l.row_total)==null?void 0:i.value),c=(_=(a=e==null?void 0:e.prices)==null?void 0:a.row_total)==null?void 0:_.currency,n!==0)return{value:n,currency:c}}function fe(e){var n,c,r;return(r=(c=(n=e==null?void 0:e.product)==null?void 0:n.custom_attributesV2)==null?void 0:c.items)==null?void 0:r.map(u=>{const l=u.code.split("_").map(i=>i.charAt(0).toUpperCase()+i.slice(1)).join(" ");return{...u,code:l}})}function ye(e){var r,u;if(!e)return null;const n=l=>{switch(l){case 1:return"EXCLUDING_TAX";case 2:return"INCLUDING_TAX";case 3:return"INCLUDING_EXCLUDING_TAX";default:return"EXCLUDING_TAX"}},c=l=>{switch(+l){case 0:return!1;case 1:return!0;case 2:return null;default:return!1}};return{displayMiniCart:e.minicart_display,miniCartMaxItemsDisplay:e.minicart_max_items,cartExpiresInDays:e.cart_expires_in_days,cartSummaryDisplayTotal:e.cart_summary_display_quantity,cartSummaryMaxItems:e.max_items_in_order_summary,defaultCountry:e.default_country,categoryFixedProductTaxDisplaySetting:e.category_fixed_product_tax_display_setting,productFixedProductTaxDisplaySetting:e.product_fixed_product_tax_display_setting,salesFixedProductTaxDisplaySetting:e.sales_fixed_product_tax_display_setting,shoppingCartDisplaySetting:{zeroTax:e.shopping_cart_display_zero_tax,subtotal:n(e.shopping_cart_display_subtotal),price:n(e.shopping_cart_display_price),shipping:n(e.shopping_cart_display_shipping),fullSummary:e.shopping_cart_display_full_summary,grandTotal:e.shopping_cart_display_grand_total,taxGiftWrapping:e.shopping_cart_display_tax_gift_wrapping},useConfigurableParentThumbnail:e.configurable_thumbnail_source==="parent",allowGiftWrappingOnOrder:c(e==null?void 0:e.allow_gift_wrapping_on_order),allowGiftWrappingOnOrderItems:c(e==null?void 0:e.allow_gift_wrapping_on_order_items),allowGiftMessageOnOrder:c(e==null?void 0:e.allow_order),allowGiftMessageOnOrderItems:c(e==null?void 0:e.allow_items),allowGiftReceipt:!!+(e==null?void 0:e.allow_gift_receipt),allowPrintedCard:!!+(e==null?void 0:e.allow_printed_card),printedCardPrice:{currency:((r=e==null?void 0:e.printed_card_priceV2)==null?void 0:r.currency)??"",value:((u=e==null?void 0:e.printed_card_priceV2)==null?void 0:u.value)!=null?+e.printed_card_priceV2.value:0},cartGiftWrapping:n(+e.cart_gift_wrapping),cartPrintedCard:n(+e.cart_printed_card)}}const de=`
3
+ import{s as o,d as L,f as I,h as U}from"./resetCart.js";import{events as g}from"@dropins/tools/event-bus.js";import{Initializer as X,merge as K}from"@dropins/tools/lib.js";import{c as j}from"./persisted-data.js";import{CART_FRAGMENT as A}from"../fragments.js";const B=new X({init:async e=>{const n={disableGuestCart:!1,...e};B.config.setConfig(n),D().catch(console.error)},listeners:()=>[g.on("authenticated",e=>{o.authenticated&&!e?g.emit("cart/reset",void 0):e&&!o.authenticated&&(o.authenticated=e,D().catch(console.error))},{eager:!0}),g.on("locale",async e=>{e!==o.locale&&(o.locale=e,D().catch(console.error))}),g.on("cart/reset",()=>{L().catch(console.error),g.emit("cart/data",null)}),g.on("cart/data",e=>{j(e)}),g.on("checkout/updated",e=>{e&&z().catch(console.error)}),g.on("companyContext/changed",()=>{z().catch(console.error)})]}),V=B.config;function k(e){var c,r,u,l,i,a,_,f,y,d,m,s,C,h,v,b;if(!e)return null;const n={appliedGiftCards:((c=e==null?void 0:e.applied_gift_cards)==null?void 0:c.map(t=>{var R,w,M;const p={code:t.code??"",appliedBalance:{value:t.applied_balance.value??0,currency:t.applied_balance.currency??"USD"},currentBalance:{value:t.current_balance.value??0,currency:t.current_balance.currency??"USD"},expirationDate:t.expiration_date??""},x=(R=p==null?void 0:p.currentBalance)==null?void 0:R.value,T=(w=p==null?void 0:p.appliedBalance)==null?void 0:w.value,S=(M=p==null?void 0:p.currentBalance)==null?void 0:M.currency,q=x-T>0?x-T:0;return{...p,giftCardBalance:{value:q,currency:S}}}))??[],id:e.id,totalQuantity:ie(e),totalUniqueItems:e.itemsV2.items.length,totalGiftOptions:Y((r=e==null?void 0:e.prices)==null?void 0:r.gift_options),giftReceiptIncluded:(e==null?void 0:e.gift_receipt_included)??!1,printedCardIncluded:(e==null?void 0:e.printed_card_included)??!1,cartGiftWrapping:((u=e==null?void 0:e.available_gift_wrappings)==null?void 0:u.map(t=>{var p,x,T,S,E;return{design:t.design??"",uid:t.uid,selected:((p=e==null?void 0:e.gift_wrapping)==null?void 0:p.uid)===t.uid,image:{url:((x=t==null?void 0:t.image)==null?void 0:x.url)??"",label:((T=t.image)==null?void 0:T.label)??""},price:{currency:((S=t==null?void 0:t.price)==null?void 0:S.currency)??"USD",value:((E=t==null?void 0:t.price)==null?void 0:E.value)??0}}}))??[],giftMessage:{senderName:((l=e==null?void 0:e.gift_message)==null?void 0:l.from)??"",recipientName:((i=e==null?void 0:e.gift_message)==null?void 0:i.to)??"",message:((a=e==null?void 0:e.gift_message)==null?void 0:a.message)??""},errors:ne(e==null?void 0:e.itemsV2),items:N(e==null?void 0:e.itemsV2),miniCartMaxItems:N(e==null?void 0:e.itemsV2).slice(0,((_=o.config)==null?void 0:_.miniCartMaxItemsDisplay)??10),total:{includingTax:{value:e.prices.grand_total.value,currency:e.prices.grand_total.currency},excludingTax:{value:e.prices.grand_total_excluding_tax.value,currency:e.prices.grand_total_excluding_tax.currency}},discount:P(e.prices.discounts,e.prices.grand_total.currency),subtotal:{excludingTax:{value:(f=e.prices.subtotal_excluding_tax)==null?void 0:f.value,currency:(y=e.prices.subtotal_excluding_tax)==null?void 0:y.currency},includingTax:{value:(d=e.prices.subtotal_including_tax)==null?void 0:d.value,currency:(m=e.prices.subtotal_including_tax)==null?void 0:m.currency},includingDiscountOnly:{value:(s=e.prices.subtotal_with_discount_excluding_tax)==null?void 0:s.value,currency:(C=e.prices.subtotal_with_discount_excluding_tax)==null?void 0:C.currency}},appliedTaxes:F(e.prices.applied_taxes),totalTax:P(e.prices.applied_taxes,e.prices.grand_total.currency),appliedDiscounts:F(e.prices.discounts),isVirtual:e.is_virtual,addresses:{shipping:e.shipping_addresses&&se(e)},isGuestCart:!o.authenticated,hasOutOfStockItems:oe(e),hasFullyOutOfStockItems:ae(e),appliedCoupons:e.applied_coupons};return K(n,(b=(v=(h=V.getConfig().models)==null?void 0:h.CartModel)==null?void 0:v.transformer)==null?void 0:b.call(v,e))}function Y(e){var n,c,r,u,l,i,a,_,f,y,d,m;return{giftWrappingForItems:{value:((n=e==null?void 0:e.gift_wrapping_for_items)==null?void 0:n.value)??0,currency:((c=e==null?void 0:e.gift_wrapping_for_items)==null?void 0:c.currency)??"USD"},giftWrappingForItemsInclTax:{value:((r=e==null?void 0:e.gift_wrapping_for_items_incl_tax)==null?void 0:r.value)??0,currency:((u=e==null?void 0:e.gift_wrapping_for_items_incl_tax)==null?void 0:u.currency)??"USD"},giftWrappingForOrder:{value:((l=e==null?void 0:e.gift_wrapping_for_order)==null?void 0:l.value)??0,currency:((i=e==null?void 0:e.gift_wrapping_for_order)==null?void 0:i.currency)??"USD"},giftWrappingForOrderInclTax:{value:((a=e==null?void 0:e.gift_wrapping_for_order_incl_tax)==null?void 0:a.value)??0,currency:((_=e==null?void 0:e.gift_wrapping_for_order_incl_tax)==null?void 0:_.currency)??"USD"},printedCard:{value:((f=e==null?void 0:e.printed_card)==null?void 0:f.value)??0,currency:((y=e==null?void 0:e.printed_card)==null?void 0:y.currency)??"USD"},printedCardInclTax:{value:((d=e==null?void 0:e.printed_card_incl_tax)==null?void 0:d.value)??0,currency:((m=e==null?void 0:e.printed_card_incl_tax)==null?void 0:m.currency)??"USD"}}}function P(e,n){return e!=null&&e.length?e.reduce((c,r)=>({value:c.value+r.amount.value,currency:r.amount.currency}),{value:0,currency:n}):{value:0,currency:n}}function O(e,n){var c,r,u,l;return{src:e!=null&&e.useConfigurableParentThumbnail?n.product.thumbnail.url:((r=(c=n.configured_variant)==null?void 0:c.thumbnail)==null?void 0:r.url)||n.product.thumbnail.url,alt:e!=null&&e.useConfigurableParentThumbnail?n.product.thumbnail.label:((l=(u=n.configured_variant)==null?void 0:u.thumbnail)==null?void 0:l.label)||n.product.thumbnail.label}}function H(e){var n,c,r,u;return e.__typename==="ConfigurableCartItem"?{value:(c=(n=e.configured_variant)==null?void 0:n.price_range)==null?void 0:c.maximum_price.regular_price.value,currency:(u=(r=e.configured_variant)==null?void 0:r.price_range)==null?void 0:u.maximum_price.regular_price.currency}:e.__typename==="GiftCardCartItem"?{value:e.prices.price.value,currency:e.prices.price.currency}:{value:e.prices.original_item_price.value,currency:e.prices.original_item_price.currency}}function J(e){var n,c,r;return e.__typename==="ConfigurableCartItem"?((c=(n=e.configured_variant)==null?void 0:n.price_range)==null?void 0:c.maximum_price.discount.amount_off)>0:((r=e.product.price_range)==null?void 0:r.maximum_price.discount.amount_off)>0}function Z(e){var n,c,r;return{senderName:((n=e==null?void 0:e.gift_message)==null?void 0:n.from)??"",recipientName:((c=e==null?void 0:e.gift_message)==null?void 0:c.to)??"",message:((r=e==null?void 0:e.gift_message)==null?void 0:r.message)??""}}function ee(e){return{currency:(e==null?void 0:e.currency)??"USD",value:(e==null?void 0:e.value)??0}}function N(e){var c;if(!((c=e==null?void 0:e.items)!=null&&c.length))return[];const n=o.config;return e.items.map(r=>{var u,l,i,a,_,f,y,d,m;return{giftWrappingAvailable:((u=r==null?void 0:r.product)==null?void 0:u.gift_wrapping_available)??!1,giftWrappingPrice:ee((l=r==null?void 0:r.product)==null?void 0:l.gift_wrapping_price),giftMessage:Z(r),productGiftWrapping:((i=r==null?void 0:r.available_gift_wrapping)==null?void 0:i.map(s=>{var C,h,v,b,t;return{design:s.design??"",uid:s.uid,selected:((C=r.gift_wrapping)==null?void 0:C.uid)===s.uid,image:{url:((h=s==null?void 0:s.image)==null?void 0:h.url)??"",label:((v=s.image)==null?void 0:v.label)??""},price:{currency:((b=s==null?void 0:s.price)==null?void 0:b.currency)??"USD",value:((t=s==null?void 0:s.price)==null?void 0:t.value)??0}}}))??[],itemType:r.__typename,uid:r.uid,giftMessageAvailable:re(r.product.gift_message_available),url:{urlKey:r.product.url_key,categories:r.product.categories.map(s=>s.url_key)},canonicalUrl:r.product.canonical_url,categories:r.product.categories.map(s=>s.name),quantity:r.quantity,sku:ge(r),topLevelSku:r.product.sku,name:r.product.name,image:O(n,r),price:{value:r.prices.price.value,currency:r.prices.price.currency},taxedPrice:{value:r.prices.price_including_tax.value,currency:r.prices.price_including_tax.currency},fixedProductTaxes:r.prices.fixed_product_taxes,rowTotal:{value:r.prices.row_total.value,currency:r.prices.row_total.currency},rowTotalIncludingTax:{value:r.prices.row_total_including_tax.value,currency:r.prices.row_total_including_tax.currency},links:te(r.links),total:{value:(a=r.prices.original_row_total)==null?void 0:a.value,currency:(_=r.prices.original_row_total)==null?void 0:_.currency},discount:{value:r.prices.total_item_discount.value,currency:r.prices.total_item_discount.currency,label:(f=r.prices.discounts)==null?void 0:f.map(s=>s.label)},regularPrice:H(r),discounted:J(r),bundleOptions:r.__typename==="BundleCartItem"?ce(r.bundle_options):null,bundleOptionsUIDs:r.__typename==="BundleCartItem"?ue(r.bundle_options):null,selectedOptions:(y=$(r.configurable_options))==null?void 0:y.options,selectedOptionsUIDs:(d=$(r.configurable_options))==null?void 0:d.uids,customizableOptions:le(r.customizable_options),sender:r.__typename==="GiftCardCartItem"?r.sender_name:null,senderEmail:r.__typename==="GiftCardCartItem"?r.sender_email:null,recipient:r.__typename==="GiftCardCartItem"?r.recipient_name:null,recipientEmail:r.__typename==="GiftCardCartItem"?r.recipient_email:null,message:r.__typename==="GiftCardCartItem"?r.message:null,discountedTotal:{value:r.prices.row_total.value,currency:r.prices.row_total.currency},onlyXLeftInStock:r.__typename==="ConfigurableCartItem"?(m=r.configured_variant)==null?void 0:m.only_x_left_in_stock:r.product.only_x_left_in_stock,lowInventory:r.is_available&&r.product.only_x_left_in_stock!==null,insufficientQuantity:(r.__typename==="ConfigurableCartItem"?r.configured_variant:r.product).stock_status==="IN_STOCK"&&!r.is_available,outOfStock:r.product.stock_status==="OUT_OF_STOCK",stockLevel:_e(r),discountPercentage:pe(r),savingsAmount:fe(r),productAttributes:ye(r)}})}function re(e){switch(+e){case 0:return!1;case 1:return!0;case 2:return null;default:return!1}}function ne(e){var c;const n=(c=e==null?void 0:e.items)==null?void 0:c.reduce((r,u)=>{var l;return(l=u.errors)==null||l.forEach(i=>{r.push({uid:u.uid,text:i.message})}),r},[]);return n!=null&&n.length?n:null}function F(e){return e!=null&&e.length?e.map(n=>({amount:{value:n.amount.value,currency:n.amount.currency},label:n.label,coupon:n.coupon})):[]}function ce(e){const n=e==null?void 0:e.map(r=>({uid:r.uid,label:r.label,value:r.values.map(u=>u.label).join(", ")})),c={};return n==null||n.forEach(r=>{c[r.label]=r.value}),Object.keys(c).length>0?c:null}function ue(e){if(!(e!=null&&e.length))return null;const n=[];return e.forEach(c=>{var r;if((r=c.values)!=null&&r.length){const u=c.values.map(l=>l.uid);n.push(...u)}}),n.length>0?n:null}function $(e){const n=e==null?void 0:e.map(u=>({uid:u.configurable_product_option_uid,label:u.option_label,value:u.value_label,valueUid:u.configurable_product_option_value_uid})),c={},r={};return n==null||n.forEach(u=>{c[u.label]=u.value,r[u.label]=u.valueUid}),{options:Object.keys(c).length>0?c:null,uids:Object.keys(r).length>0?r:null}}function le(e){const n=e==null?void 0:e.map(r=>({uid:r.customizable_option_uid,label:r.label,type:r.type,values:r.values.map(u=>({uid:u.customizable_option_value_uid,label:u.label,value:u.value}))})),c={};return n==null||n.forEach(r=>{var u;switch(r.type){case"field":case"area":case"date_time":c[r.label]=r.values[0].value;break;case"radio":case"drop_down":c[r.label]=r.values[0].label;break;case"multiple":case"checkbox":c[r.label]=r.values.reduce((l,i)=>l?`${l}, ${i.label}`:i.label,"");break;case"file":{const l=new DOMParser,i=r.values[0].value,_=((u=l.parseFromString(i,"text/html").querySelector("a"))==null?void 0:u.textContent)||"";c[r.label]=_;break}}}),c}function ie(e){var n,c;return((n=o.config)==null?void 0:n.cartSummaryDisplayTotal)===0?e.itemsV2.items.length:((c=o.config)==null?void 0:c.cartSummaryDisplayTotal)===1?e.total_quantity:e.itemsV2.items.length}function te(e){return(e==null?void 0:e.length)>0?{count:e.length,result:e.map(n=>n.title).join(", ")}:null}function se(e){var n,c,r,u;return(n=e.shipping_addresses)!=null&&n.length?(c=e.shipping_addresses)==null?void 0:c.map(l=>({countryCode:l.country.code,zipCode:l.postcode,regionCode:l.region.code})):(r=e.addresses)!=null&&r.length?(u=e.addresses)==null?void 0:u.filter(l=>l.default_shipping).map(l=>{var i;return l.default_shipping&&{countryCode:l.country_code,zipCode:l.postcode,regionCode:(i=l.region)==null?void 0:i.region_code}}):null}function oe(e){var n,c;return(c=(n=e==null?void 0:e.itemsV2)==null?void 0:n.items)==null?void 0:c.some(r=>{var u;return((u=r==null?void 0:r.product)==null?void 0:u.stock_status)==="OUT_OF_STOCK"||r.product.stock_status==="IN_STOCK"&&!r.is_available})}function _e(e){return e.not_available_message?e.product.quantity!=null?e.product.quantity:"noNumber":null}function ae(e){var n,c;return(c=(n=e==null?void 0:e.itemsV2)==null?void 0:n.items)==null?void 0:c.some(r=>{var u;return((u=r==null?void 0:r.product)==null?void 0:u.stock_status)==="OUT_OF_STOCK"})}function pe(e){var c,r,u,l,i,a,_,f;let n;if(e.__typename==="ConfigurableCartItem")n=(l=(u=(r=(c=e==null?void 0:e.configured_variant)==null?void 0:c.price_range)==null?void 0:r.maximum_price)==null?void 0:u.discount)==null?void 0:l.percent_off;else{if(e.__typename==="BundleCartItem")return;n=(f=(_=(a=(i=e==null?void 0:e.product)==null?void 0:i.price_range)==null?void 0:a.maximum_price)==null?void 0:_.discount)==null?void 0:f.percent_off}if(n!==0)return Math.round(n)}function ge(e){var n;return e.__typename==="ConfigurableCartItem"?e.configured_variant.sku:((n=e.product)==null?void 0:n.variantSku)||e.product.sku}function fe(e){var r,u,l,i,a,_;let n,c;if(n=((u=(r=e==null?void 0:e.prices)==null?void 0:r.original_row_total)==null?void 0:u.value)-((i=(l=e==null?void 0:e.prices)==null?void 0:l.row_total)==null?void 0:i.value),c=(_=(a=e==null?void 0:e.prices)==null?void 0:a.row_total)==null?void 0:_.currency,n!==0)return{value:n,currency:c}}function ye(e){var n,c,r;return(r=(c=(n=e==null?void 0:e.product)==null?void 0:n.custom_attributesV2)==null?void 0:c.items)==null?void 0:r.map(u=>{const l=u.code.split("_").map(i=>i.charAt(0).toUpperCase()+i.slice(1)).join(" ");return{...u,code:l}})}function de(e){var r,u;if(!e)return null;const n=l=>{switch(l){case 1:return"EXCLUDING_TAX";case 2:return"INCLUDING_TAX";case 3:return"INCLUDING_EXCLUDING_TAX";default:return"EXCLUDING_TAX"}},c=l=>{switch(+l){case 0:return!1;case 1:return!0;case 2:return null;default:return!1}};return{displayMiniCart:e.minicart_display,miniCartMaxItemsDisplay:e.minicart_max_items,cartExpiresInDays:e.cart_expires_in_days,cartSummaryDisplayTotal:e.cart_summary_display_quantity,cartSummaryMaxItems:e.max_items_in_order_summary,defaultCountry:e.default_country,categoryFixedProductTaxDisplaySetting:e.category_fixed_product_tax_display_setting,productFixedProductTaxDisplaySetting:e.product_fixed_product_tax_display_setting,salesFixedProductTaxDisplaySetting:e.sales_fixed_product_tax_display_setting,shoppingCartDisplaySetting:{zeroTax:e.shopping_cart_display_zero_tax,subtotal:n(e.shopping_cart_display_subtotal),price:n(e.shopping_cart_display_price),shipping:n(e.shopping_cart_display_shipping),fullSummary:e.shopping_cart_display_full_summary,grandTotal:e.shopping_cart_display_grand_total,taxGiftWrapping:e.shopping_cart_display_tax_gift_wrapping},useConfigurableParentThumbnail:e.configurable_thumbnail_source==="parent",allowGiftWrappingOnOrder:c(e==null?void 0:e.allow_gift_wrapping_on_order),allowGiftWrappingOnOrderItems:c(e==null?void 0:e.allow_gift_wrapping_on_order_items),allowGiftMessageOnOrder:c(e==null?void 0:e.allow_order),allowGiftMessageOnOrderItems:c(e==null?void 0:e.allow_items),allowGiftReceipt:!!+(e==null?void 0:e.allow_gift_receipt),allowPrintedCard:!!+(e==null?void 0:e.allow_printed_card),printedCardPrice:{currency:((r=e==null?void 0:e.printed_card_priceV2)==null?void 0:r.currency)??"",value:((u=e==null?void 0:e.printed_card_priceV2)==null?void 0:u.value)!=null?+e.printed_card_priceV2.value:0},cartGiftWrapping:n(+e.cart_gift_wrapping),cartPrintedCard:n(+e.cart_printed_card)}}const me=`
4
4
  fragment CUSTOMER_FRAGMENT on Customer {
5
5
  addresses {
6
6
  default_shipping
@@ -13,7 +13,7 @@ import{s as o,d as q,f as I,h as U}from"./resetCart.js";import{events as f}from"
13
13
  }
14
14
  }
15
15
  }
16
- `,me=`
16
+ `,ve=`
17
17
  query GUEST_CART_QUERY(
18
18
  $cartId: String!,
19
19
  $pageSize: Int! = 100,
@@ -27,7 +27,7 @@ import{s as o,d as q,f as I,h as U}from"./resetCart.js";import{events as f}from"
27
27
  }
28
28
 
29
29
  ${A}
30
- `,ve=`
30
+ `,Ce=`
31
31
  query CUSTOMER_CART_QUERY(
32
32
  $pageSize: Int! = 100,
33
33
  $currentPage: Int! = 1,
@@ -43,9 +43,9 @@ import{s as o,d as q,f as I,h as U}from"./resetCart.js";import{events as f}from"
43
43
  }
44
44
  }
45
45
 
46
- ${de}
46
+ ${me}
47
47
  ${A}
48
- `,G=async()=>{const e=o.authenticated,n=o.cartId;if(e)return I(ve,{method:"POST"}).then(({errors:c,data:r})=>{if(c)return U(c);const u={...r.cart,...r.customer};return k(u)});if(!n)throw new Error("No cart ID found");return I(me,{method:"POST",cache:"no-cache",variables:{cartId:n}}).then(({errors:c,data:r})=>c?U(c):k(r.cart))},Ce=`
48
+ `,G=async()=>{const e=o.authenticated,n=o.cartId;if(e)return I(Ce,{method:"POST"}).then(({errors:c,data:r})=>{if(c)return U(c);const u={...r.cart,...r.customer};return k(u)});if(!n)throw new Error("No cart ID found");return I(ve,{method:"POST",cache:"no-cache",variables:{cartId:n}}).then(({errors:c,data:r})=>c?U(c):k(r.cart))},he=`
49
49
  mutation MERGE_CARTS_MUTATION(
50
50
  $guestCartId: String!,
51
51
  $customerCartId: String!,
@@ -62,7 +62,7 @@ import{s as o,d as q,f as I,h as U}from"./resetCart.js";import{events as f}from"
62
62
  }
63
63
 
64
64
  ${A}
65
- `,D=async()=>{if(o.initializing)return null;o.initializing=!0,o.config||(o.config=await be());const e=o.authenticated?await V():await Q();return f.emit("cart/initialized",e),f.emit("cart/data",e),o.initializing=!1,e};async function V(){const e=o.cartId,n=await G();return n?(o.cartId=n.id,!e||n.id===e?n:await I(Ce,{variables:{guestCartId:e,customerCartId:n.id}}).then(()=>G()).then(c=>{const r={oldCartItems:n.items,newCart:c};return f.emit("cart/merged",r),c}).catch(()=>(console.error("Could not merge carts"),n))):null}async function Q(){if(B.getConfig().disableGuestCart===!0||!o.cartId)return null;try{return await G()}catch(e){return console.error(e),null}}const he=`
65
+ `,D=async()=>{if(o.initializing)return null;o.initializing=!0,o.config||(o.config=await xe());const e=o.authenticated?await Q():await W();return g.emit("cart/initialized",e),g.emit("cart/data",e),o.initializing=!1,e};async function Q(){const e=o.cartId,n=await G();return n?(o.cartId=n.id,!e||n.id===e?n:await I(he,{variables:{guestCartId:e,customerCartId:n.id}}).then(()=>G()).then(c=>{const r={oldCartItems:n.items,newCart:c};return g.emit("cart/merged",r),c}).catch(()=>(console.error("Could not merge carts"),n))):null}async function W(){if(V.getConfig().disableGuestCart===!0||!o.cartId)return null;try{return await G()}catch(e){return console.error(e),null}}const be=`
66
66
  query STORE_CONFIG_QUERY {
67
67
  storeConfig {
68
68
  minicart_display
@@ -96,5 +96,5 @@ query STORE_CONFIG_QUERY {
96
96
  cart_printed_card
97
97
  }
98
98
  }
99
- `,be=async()=>I(he,{method:"GET",cache:"force-cache"}).then(({errors:e,data:n})=>e?U(e):ye(n.storeConfig)),xe=async()=>{const e=o.authenticated?await V():await Q();return f.emit("cart/data",e),e};export{D as a,V as b,B as c,Q as d,be as e,G as g,z as i,xe as r,k as t};
99
+ `,xe=async()=>I(be,{method:"GET",cache:"force-cache"}).then(({errors:e,data:n})=>e?U(e):de(n.storeConfig)),z=async()=>{const e=o.authenticated?await Q():await W();return g.emit("cart/data",e),e};export{D as a,Q as b,V as c,W as d,xe as e,G as g,B as i,z as r,k as t};
100
100
  //# sourceMappingURL=refreshCart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"refreshCart.js","sources":["/@dropins/storefront-cart/src/api/initialize/initialize.ts","/@dropins/storefront-cart/src/data/transforms/transform-cart.ts","/@dropins/storefront-cart/src/data/transforms/transform-store-config.ts","/@dropins/storefront-cart/src/api/graphql/CustomerAccountFragment.ts","/@dropins/storefront-cart/src/api/getCartData/graphql/CartQuery.ts","/@dropins/storefront-cart/src/api/getCartData/getCartData.ts","/@dropins/storefront-cart/src/api/initializeCart/graphql/MergeCartsMutation.ts","/@dropins/storefront-cart/src/api/initializeCart/initializeCart.ts","/@dropins/storefront-cart/src/api/getStoreConfig/graphql/StoreConfigQuery.ts","/@dropins/storefront-cart/src/api/getStoreConfig/getStoreConfig.ts","/@dropins/storefront-cart/src/api/refreshCart/refreshCart.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Initializer, Model } from '@adobe-commerce/elsie/lib';\nimport { initializeCart, refreshCart, resetCart } from '@/cart/api';\nimport { state } from '@/cart/lib/state';\nimport { events } from '@adobe-commerce/event-bus';\nimport { Lang } from '@adobe-commerce/elsie/i18n';\nimport { setPersistedCartData } from '@/cart/lib/persisted-data';\nimport { CartModel } from '@/cart/data/models';\n\ntype ConfigProps = {\n disableGuestCart?: boolean;\n langDefinitions?: Lang;\n\n models?: {\n CartModel?: Model<CartModel>;\n };\n};\n\nexport const initialize = new Initializer<ConfigProps>({\n init: async (_config) => {\n const config = { disableGuestCart: false, ..._config };\n\n // Set config\n initialize.config.setConfig(config);\n\n initializeCart().catch(console.error);\n },\n\n listeners: () => [\n events.on(\n 'authenticated',\n (authenticated) => {\n if (state.authenticated && !authenticated) {\n // Reset cart if the user is no longer authenticated\n events.emit('cart/reset', undefined);\n }\n // Login event occurred\n else if (authenticated && !state.authenticated) {\n state.authenticated = authenticated;\n initializeCart().catch(console.error);\n }\n },\n { eager: true }\n ),\n\n events.on('locale', async (locale) => {\n if (locale !== state.locale) {\n state.locale = locale;\n initializeCart().catch(console.error);\n }\n }),\n\n events.on('cart/reset', () => {\n resetCart().catch(console.error);\n events.emit('cart/data', null);\n }),\n\n events.on('cart/data', (payload) => {\n setPersistedCartData(payload);\n }),\n\n events.on('checkout/updated', (payload) => {\n if (!payload) return;\n\n refreshCart().catch(console.error);\n }),\n ],\n});\n\nexport const config = initialize.config;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { merge } from '@adobe-commerce/elsie/lib';\nimport { CartModel, StoreConfigModel } from '@/cart/data/models';\nimport { state } from '@/cart/lib/state';\nimport { config } from '@/cart/api';\n\nexport function transformCart(data: any): CartModel | null {\n if (!data) return null;\n\n const model = {\n appliedGiftCards:\n data?.applied_gift_cards?.map((giftCard: any) => {\n const giftCartState = {\n code: giftCard.code ?? '',\n appliedBalance: {\n value: giftCard.applied_balance.value ?? 0,\n currency: giftCard.applied_balance.currency ?? 'USD',\n },\n currentBalance: {\n value: giftCard.current_balance.value ?? 0,\n currency: giftCard.current_balance.currency ?? 'USD',\n },\n expirationDate: giftCard.expiration_date ?? '',\n };\n\n const currentBalanceValue = giftCartState?.currentBalance?.value;\n const appliedBalanceValue = giftCartState?.appliedBalance?.value;\n const currency = giftCartState?.currentBalance?.currency;\n\n const hasBalanceDifference =\n currentBalanceValue - appliedBalanceValue > 0;\n\n const value = hasBalanceDifference\n ? currentBalanceValue - appliedBalanceValue\n : 0;\n\n return {\n ...giftCartState,\n giftCardBalance: { value, currency },\n };\n }) ?? [],\n id: data.id,\n totalQuantity: transformQuantity(data),\n totalUniqueItems: data.itemsV2.items.length,\n totalGiftOptions: transformGiftOptions(data?.prices?.gift_options),\n giftReceiptIncluded: data?.gift_receipt_included ?? false,\n printedCardIncluded: data?.printed_card_included ?? false,\n cartGiftWrapping:\n data?.available_gift_wrappings?.map((wrapItem: any) => {\n return {\n design: wrapItem.design ?? '',\n uid: wrapItem.uid,\n selected: data?.gift_wrapping?.uid === wrapItem.uid,\n image: {\n url: wrapItem?.image?.url ?? '',\n label: wrapItem.image?.label ?? '',\n },\n price: {\n currency: wrapItem?.price?.currency ?? 'USD',\n value: wrapItem?.price?.value ?? 0,\n },\n };\n }) ?? [],\n giftMessage: {\n senderName: data?.gift_message?.from ?? '',\n recipientName: data?.gift_message?.to ?? '',\n message: data?.gift_message?.message ?? '',\n },\n errors: transformErrors(data?.itemsV2),\n items: transformItems(data?.itemsV2),\n miniCartMaxItems: transformItems(data?.itemsV2).slice(\n 0,\n state.config?.miniCartMaxItemsDisplay ?? 10\n ),\n total: {\n includingTax: {\n value: data.prices.grand_total.value,\n currency: data.prices.grand_total.currency,\n },\n excludingTax: {\n value: data.prices.grand_total_excluding_tax.value,\n currency: data.prices.grand_total_excluding_tax.currency,\n },\n },\n discount: calculateTotal(\n data.prices.discounts,\n data.prices.grand_total.currency\n ),\n subtotal: {\n excludingTax: {\n value: data.prices.subtotal_excluding_tax?.value,\n currency: data.prices.subtotal_excluding_tax?.currency,\n },\n includingTax: {\n value: data.prices.subtotal_including_tax?.value,\n currency: data.prices.subtotal_including_tax?.currency,\n },\n includingDiscountOnly: {\n value: data.prices.subtotal_with_discount_excluding_tax?.value,\n currency: data.prices.subtotal_with_discount_excluding_tax?.currency,\n },\n },\n appliedTaxes: transformTotalPriceModifiers(data.prices.applied_taxes),\n totalTax: calculateTotal(\n data.prices.applied_taxes,\n data.prices.grand_total.currency\n ),\n appliedDiscounts: transformTotalPriceModifiers(data.prices.discounts),\n isVirtual: data.is_virtual,\n addresses: {\n shipping: data.shipping_addresses && transformAddresses(data),\n },\n isGuestCart: !state.authenticated,\n hasOutOfStockItems: transformOutOfStockItems(data),\n hasFullyOutOfStockItems: transformFullyOutOfStockItems(data),\n appliedCoupons: data.applied_coupons,\n };\n\n // extend the model with custom transformer\n return merge(\n model,\n config.getConfig().models?.CartModel?.transformer?.(data)\n );\n}\n\nfunction transformGiftOptions(giftOptions: any) {\n return {\n giftWrappingForItems: {\n value: giftOptions?.gift_wrapping_for_items?.value ?? 0,\n currency: giftOptions?.gift_wrapping_for_items?.currency ?? 'USD',\n },\n giftWrappingForItemsInclTax: {\n value: giftOptions?.gift_wrapping_for_items_incl_tax?.value ?? 0,\n currency:\n giftOptions?.gift_wrapping_for_items_incl_tax?.currency ?? 'USD',\n },\n giftWrappingForOrder: {\n value: giftOptions?.gift_wrapping_for_order?.value ?? 0,\n currency: giftOptions?.gift_wrapping_for_order?.currency ?? 'USD',\n },\n giftWrappingForOrderInclTax: {\n value: giftOptions?.gift_wrapping_for_order_incl_tax?.value ?? 0,\n currency:\n giftOptions?.gift_wrapping_for_order_incl_tax?.currency ?? 'USD',\n },\n printedCard: {\n value: giftOptions?.printed_card?.value ?? 0,\n currency: giftOptions?.printed_card?.currency ?? 'USD',\n },\n printedCardInclTax: {\n value: giftOptions?.printed_card_incl_tax?.value ?? 0,\n currency: giftOptions?.printed_card_incl_tax?.currency ?? 'USD',\n },\n };\n}\n\n// Need to calculate total amount since it's not provided by GraphQL\nfunction calculateTotal(data: any[], currency: string) {\n if (!data?.length)\n return {\n value: 0,\n currency,\n };\n\n return data.reduce(\n (acc: any, item: any) => {\n return {\n value: acc.value + item.amount.value,\n currency: item.amount.currency,\n };\n },\n { value: 0, currency }\n );\n}\n\nfunction getImage(config: StoreConfigModel | null | undefined, item: any) {\n return {\n // Use parent thumbnail if configured, otherwise use own variant. use the parent thumbnail as a fallback\n src: config?.useConfigurableParentThumbnail\n ? item.product.thumbnail.url\n : item.configured_variant?.thumbnail?.url || item.product.thumbnail.url,\n alt: config?.useConfigurableParentThumbnail\n ? item.product.thumbnail.label\n : item.configured_variant?.thumbnail?.label ||\n item.product.thumbnail.label,\n };\n}\n\nfunction getRegularPrice(item: any) {\n if (item.__typename === 'ConfigurableCartItem') {\n return {\n value:\n item.configured_variant?.price_range?.maximum_price.regular_price.value,\n currency:\n item.configured_variant?.price_range?.maximum_price.regular_price\n .currency,\n };\n }\n if (item.__typename === 'GiftCardCartItem') {\n return {\n value: item.prices.price.value,\n currency: item.prices.price.currency,\n };\n }\n return {\n value: item.prices.original_item_price.value,\n currency: item.prices.original_item_price.currency,\n };\n}\n\nfunction getDiscounted(item: any) {\n if (item.__typename === 'ConfigurableCartItem')\n return (\n item.configured_variant?.price_range?.maximum_price.discount.amount_off >\n 0\n );\n\n return item.product.price_range?.maximum_price.discount.amount_off > 0;\n}\n\nfunction transformGiftMessage(data: any) {\n return {\n senderName: data?.gift_message?.from ?? '',\n recipientName: data?.gift_message?.to ?? '',\n message: data?.gift_message?.message ?? '',\n };\n}\n\nfunction transformWrappingPrice(data: any) {\n return {\n currency: data?.currency ?? 'USD',\n value: data?.value ?? 0,\n };\n}\n\nfunction transformItems(data: any) {\n if (!data?.items?.length) return [];\n\n const config = state.config;\n\n return data.items.map((item: any) => ({\n giftWrappingAvailable: item?.product?.gift_wrapping_available ?? false,\n giftWrappingPrice: transformWrappingPrice(\n item?.product?.gift_wrapping_price\n ),\n giftMessage: transformGiftMessage(item),\n productGiftWrapping:\n item?.available_gift_wrapping?.map((wrapItem: any) => {\n return {\n design: wrapItem.design ?? '',\n uid: wrapItem.uid,\n selected: item.gift_wrapping?.uid === wrapItem.uid,\n image: {\n url: wrapItem?.image?.url ?? '',\n label: wrapItem.image?.label ?? '',\n },\n price: {\n currency: wrapItem?.price?.currency ?? 'USD',\n value: wrapItem?.price?.value ?? 0,\n },\n };\n }) ?? [],\n itemType: item.__typename,\n uid: item.uid,\n giftMessageAvailable: transformGiftOptionsCode(\n item.product.gift_message_available\n ),\n url: {\n urlKey: item.product.url_key,\n categories: item.product.categories.map(\n (category: any) => category.url_key\n ),\n },\n canonicalUrl: item.product.canonical_url,\n categories: item.product.categories.map((category: any) => category.name),\n quantity: item.quantity,\n sku: transformSKU(item),\n topLevelSku: item.product.sku,\n name: item.product.name,\n image: getImage(config, item),\n price: {\n value: item.prices.price.value,\n currency: item.prices.price.currency,\n },\n taxedPrice: {\n value: item.prices.price_including_tax.value,\n currency: item.prices.price_including_tax.currency,\n },\n fixedProductTaxes: item.prices.fixed_product_taxes,\n rowTotal: {\n value: item.prices.row_total.value,\n currency: item.prices.row_total.currency,\n },\n rowTotalIncludingTax: {\n value: item.prices.row_total_including_tax.value,\n currency: item.prices.row_total_including_tax.currency,\n },\n links: transformLinks(item.links),\n total: {\n value: item.prices.original_row_total?.value,\n currency: item.prices.original_row_total?.currency,\n },\n discount: {\n value: item.prices.total_item_discount.value,\n currency: item.prices.total_item_discount.currency,\n label: item.prices.discounts?.map((discount: any) => discount.label),\n },\n regularPrice: getRegularPrice(item),\n discounted: getDiscounted(item),\n bundleOptions:\n item.__typename === 'BundleCartItem'\n ? transformBundleOptions(item.bundle_options)\n : null,\n bundleOptionsUIDs:\n item.__typename === 'BundleCartItem'\n ? extractBundleOptionUIDs(item.bundle_options)\n : null,\n selectedOptions: transformSelectedOptions(item.configurable_options)\n ?.options,\n selectedOptionsUIDs: transformSelectedOptions(item.configurable_options)\n ?.uids,\n customizableOptions: transformCustomizableOptions(\n item.customizable_options\n ),\n sender: item.__typename === 'GiftCardCartItem' ? item.sender_name : null,\n senderEmail:\n item.__typename === 'GiftCardCartItem' ? item.sender_email : null,\n recipient:\n item.__typename === 'GiftCardCartItem' ? item.recipient_name : null,\n recipientEmail:\n item.__typename === 'GiftCardCartItem' ? item.recipient_email : null,\n message: item.__typename === 'GiftCardCartItem' ? item.message : null,\n\n discountedTotal: {\n value: item.prices.row_total.value,\n currency: item.prices.row_total.currency,\n },\n\n onlyXLeftInStock:\n item.__typename === 'ConfigurableCartItem'\n ? item.configured_variant?.only_x_left_in_stock\n : item.product.only_x_left_in_stock,\n lowInventory:\n item.is_available && item.product.only_x_left_in_stock !== null,\n insufficientQuantity:\n (item.__typename === 'ConfigurableCartItem'\n ? item.configured_variant\n : item.product\n ).stock_status === 'IN_STOCK' && !item.is_available,\n outOfStock: item.product.stock_status === 'OUT_OF_STOCK',\n stockLevel: transformStockLevel(item),\n // Add support for BundleCartItem\n discountPercentage: transformDiscountPercentage(item),\n savingsAmount: transformDiscountAmount(item),\n productAttributes: transformProductAttributes(item),\n }));\n}\n\n// This helper follows the approach used in the store configuration GraphQL schema for Gift Messages,\n// where a `null` value represents the \"use system value\" option. It requires special processing\n// based on both global and product-level configurations\nfunction transformGiftOptionsCode(data: string) {\n switch (+data) {\n case 0:\n return false;\n case 1:\n return true;\n case 2:\n return null;\n default:\n return false;\n }\n}\n\nfunction transformErrors(data: any) {\n const result = data?.items?.reduce((acc: any, item: any) => {\n item.errors?.forEach((error: Error) => {\n acc.push({ uid: item.uid, text: error.message });\n });\n\n return acc;\n }, []);\n\n return result?.length ? result : null;\n}\n\nfunction transformTotalPriceModifiers(data: any) {\n if (!data?.length) return [];\n\n return data.map((item: any) => ({\n amount: {\n value: item.amount.value,\n currency: item.amount.currency,\n },\n label: item.label,\n coupon: item.coupon,\n }));\n}\n\nfunction transformBundleOptions(data: any) {\n const bundle = data?.map((option: any) => ({\n uid: option.uid,\n label: option.label,\n value: option.values.map((value: any) => value.label).join(', '),\n }));\n\n const bundleOptions: { [key: string]: any } = {};\n\n bundle?.forEach((option: any) => {\n bundleOptions[option.label] = option.value;\n });\n\n return Object.keys(bundleOptions).length > 0 ? bundleOptions : null;\n}\n\nfunction extractBundleOptionUIDs(data: any) {\n if (!data?.length) return null;\n\n const allUIDs: string[] = [];\n data.forEach((option: any) => {\n if (option.values?.length) {\n const valueUIDs = option.values.map((value: any) => value.uid);\n allUIDs.push(...valueUIDs);\n }\n });\n\n return allUIDs.length > 0 ? allUIDs : null;\n}\n\nfunction transformSelectedOptions(data: any) {\n const selected = data?.map((option: any) => ({\n uid: option.configurable_product_option_uid,\n label: option.option_label,\n value: option.value_label,\n valueUid: option.configurable_product_option_value_uid,\n }));\n\n const selectedOptions: { [key: string]: any } = {};\n const selectedOptionsUIDs: { [key: string]: any } = {};\n\n selected?.forEach((option: any) => {\n selectedOptions[option.label] = option.value;\n selectedOptionsUIDs[option.label] = option.valueUid;\n });\n\n return {\n options: Object.keys(selectedOptions).length > 0 ? selectedOptions : null,\n uids:\n Object.keys(selectedOptionsUIDs).length > 0 ? selectedOptionsUIDs : null,\n };\n}\n\nfunction transformCustomizableOptions(data: any) {\n const transformedOptions = data?.map((option: any) => ({\n uid: option.customizable_option_uid,\n label: option.label,\n type: option.type,\n values: option.values.map((value: any) => ({\n uid: value.customizable_option_value_uid,\n label: value.label,\n value: value.value,\n })),\n }));\n\n const result: { [key: string]: any } = {};\n\n transformedOptions?.forEach((option: any) => {\n switch (option.type) {\n case 'field':\n case 'area':\n case 'date_time':\n result[option.label] = option.values[0].value;\n break;\n case 'radio':\n case 'drop_down':\n result[option.label] = option.values[0].label;\n break;\n case 'multiple':\n case 'checkbox':\n result[option.label] = (option.values as Array<any>).reduce(\n (previous, current) => {\n if (previous) return `${previous}, ${current.label}`;\n return current.label;\n },\n ''\n );\n break;\n case 'file': {\n const parser = new DOMParser();\n const fileAnchorElementHtml = option.values[0].value;\n const doc = parser.parseFromString(fileAnchorElementHtml, 'text/html');\n const anchorText = doc.querySelector('a')?.textContent || '';\n result[option.label] = anchorText;\n break;\n }\n }\n });\n return result;\n}\n\nfunction transformQuantity(data: any) {\n if (state.config?.cartSummaryDisplayTotal === 0)\n return data.itemsV2.items.length;\n if (state.config?.cartSummaryDisplayTotal === 1) return data.total_quantity;\n // Default to items count if unexpected config value or error returned\n return data.itemsV2.items.length;\n}\n\nfunction transformLinks(links: any) {\n return links?.length > 0\n ? {\n count: links.length,\n result: links.map((link: any) => link.title).join(', '),\n }\n : null;\n}\n\nfunction transformAddresses(data: any) {\n //Shipping Address bound to cart\n if (data.shipping_addresses?.length) {\n return data.shipping_addresses?.map((address: any) => ({\n countryCode: address.country.code,\n zipCode: address.postcode,\n regionCode: address.region.code,\n }));\n //Shipping Address bound to customer\n } else if (data.addresses?.length) {\n return data.addresses\n ?.filter((address: any) => address.default_shipping)\n .map(\n (address: any) =>\n address.default_shipping && {\n countryCode: address.country_code,\n zipCode: address.postcode,\n regionCode: address.region?.region_code,\n }\n );\n }\n\n return null;\n}\n\nfunction transformOutOfStockItems(data: any) {\n return data?.itemsV2?.items?.some(\n (item: any) =>\n item?.product?.stock_status === 'OUT_OF_STOCK' ||\n (item.product.stock_status === 'IN_STOCK' && !item.is_available)\n );\n}\n\nfunction transformStockLevel(item: any) {\n if (!item.not_available_message) return null;\n\n return item.product.quantity != null ? item.product.quantity : 'noNumber';\n}\n\nfunction transformFullyOutOfStockItems(data: any) {\n return data?.itemsV2?.items?.some(\n (item: any) => item?.product?.stock_status === 'OUT_OF_STOCK'\n );\n}\n\n// Add support for BundleCartItem in USF-1591 after LYNX-599 is completed\nfunction transformDiscountPercentage(data: any) {\n let percent_off;\n\n if (data.__typename === 'ConfigurableCartItem') {\n percent_off =\n data?.configured_variant?.price_range?.maximum_price?.discount\n ?.percent_off;\n } else if (data.__typename === 'BundleCartItem') {\n return undefined;\n } else {\n percent_off =\n data?.product?.price_range?.maximum_price?.discount?.percent_off;\n }\n\n if (percent_off === 0) {\n return undefined;\n }\n return Math.round(percent_off);\n}\n\n// Add support for returning configured_variant sku for __typename:\"ConfigurableCartItem\"\nfunction transformSKU(item: any) {\n if (item.__typename === 'ConfigurableCartItem') {\n return item.configured_variant.sku;\n }\n\n // If varaintSku is available return it, otherwise return product sku\n return item.product?.variantSku || item.product.sku;\n}\n\nfunction transformDiscountAmount(data: any) {\n let amount_off;\n let currency;\n\n amount_off =\n data?.prices?.original_row_total?.value - data?.prices?.row_total?.value;\n currency = data?.prices?.row_total?.currency;\n\n if (amount_off === 0) {\n return undefined;\n }\n return {\n value: amount_off,\n currency,\n };\n}\n\nfunction transformProductAttributes(item: any) {\n return item?.product?.custom_attributesV2?.items?.map((attribute: any) => {\n const transformedCode = attribute.code\n .split('_')\n .map((word: any) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n\n return {\n ...attribute,\n code: transformedCode,\n };\n });\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { StoreConfigModel } from '@/cart/data/models';\n\nexport function transformStoreConfig(data: any): StoreConfigModel | null {\n if (!data) return null;\n\n const transformTaxDisplaySetting = (taxDisplaySetting: number) => {\n switch (taxDisplaySetting) {\n case 1:\n return 'EXCLUDING_TAX';\n case 2:\n return 'INCLUDING_TAX';\n case 3:\n return 'INCLUDING_EXCLUDING_TAX';\n default:\n return 'EXCLUDING_TAX';\n }\n };\n\n // A `null` value indicates the \"use system value\" option, which requires special handling\n // based on both global and product-level configurations\n const transformGiftOptionsCode = (data: string) => {\n switch (+data) {\n case 0:\n return false;\n case 1:\n return true;\n case 2:\n return null;\n default:\n return false;\n }\n };\n\n return {\n displayMiniCart: data.minicart_display,\n miniCartMaxItemsDisplay: data.minicart_max_items,\n cartExpiresInDays: data.cart_expires_in_days,\n cartSummaryDisplayTotal: data.cart_summary_display_quantity,\n cartSummaryMaxItems: data.max_items_in_order_summary,\n defaultCountry: data.default_country!,\n categoryFixedProductTaxDisplaySetting:\n data.category_fixed_product_tax_display_setting,\n productFixedProductTaxDisplaySetting:\n data.product_fixed_product_tax_display_setting,\n salesFixedProductTaxDisplaySetting:\n data.sales_fixed_product_tax_display_setting,\n shoppingCartDisplaySetting: {\n zeroTax: data.shopping_cart_display_zero_tax,\n subtotal: transformTaxDisplaySetting(data.shopping_cart_display_subtotal),\n price: transformTaxDisplaySetting(data.shopping_cart_display_price),\n shipping: transformTaxDisplaySetting(data.shopping_cart_display_shipping),\n fullSummary: data.shopping_cart_display_full_summary,\n grandTotal: data.shopping_cart_display_grand_total,\n taxGiftWrapping: data.shopping_cart_display_tax_gift_wrapping,\n },\n useConfigurableParentThumbnail:\n data.configurable_thumbnail_source === 'parent',\n allowGiftWrappingOnOrder: transformGiftOptionsCode(\n data?.allow_gift_wrapping_on_order\n ),\n allowGiftWrappingOnOrderItems: transformGiftOptionsCode(\n data?.allow_gift_wrapping_on_order_items\n ),\n allowGiftMessageOnOrder: transformGiftOptionsCode(data?.allow_order),\n allowGiftMessageOnOrderItems: transformGiftOptionsCode(data?.allow_items),\n allowGiftReceipt: Boolean(+data?.allow_gift_receipt),\n allowPrintedCard: Boolean(+data?.allow_printed_card),\n printedCardPrice: {\n currency: data?.printed_card_priceV2?.currency ?? '',\n value:\n data?.printed_card_priceV2?.value != null\n ? +data.printed_card_priceV2.value\n : 0,\n },\n cartGiftWrapping: transformTaxDisplaySetting(+data.cart_gift_wrapping),\n cartPrintedCard: transformTaxDisplaySetting(+data.cart_printed_card),\n };\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const CUSTOMER_ACCOUNT_FRAGMENT = /* GraphQL */ `\n fragment CUSTOMER_FRAGMENT on Customer {\n addresses {\n default_shipping\n country_code\n postcode\n region {\n region\n region_code\n region_id\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CART_FRAGMENT } from '@/cart/api/graphql/CartFragment';\n\nimport { CUSTOMER_ACCOUNT_FRAGMENT } from '@/cart/api/graphql/CustomerAccountFragment';\n\nexport const GUEST_CART_QUERY = `\n query GUEST_CART_QUERY(\n $cartId: String!,\n $pageSize: Int! = 100,\n $currentPage: Int! = 1,\n $itemsSortInput: QuoteItemsSortInput! = {field: CREATED_AT, order: DESC}\n ) {\n\n cart(cart_id: $cartId){\n ...CART_FRAGMENT\n }\n }\n\n ${CART_FRAGMENT}\n`;\n\nexport const CUSTOMER_CART_QUERY = `\n query CUSTOMER_CART_QUERY(\n $pageSize: Int! = 100,\n $currentPage: Int! = 1,\n $itemsSortInput: QuoteItemsSortInput! = {field: CREATED_AT, order: DESC}\n ) {\n \n customer {\n ...CUSTOMER_FRAGMENT\n }\n\n cart: customerCart {\n ...CART_FRAGMENT\n }\n }\n\n ${CUSTOMER_ACCOUNT_FRAGMENT}\n ${CART_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/cart/api';\nimport { handleFetchError } from '@/cart/lib/fetch-error';\nimport { state } from '@/cart/lib/state';\nimport { CartModel } from '@/cart/data/models';\nimport { transformCart } from '@/cart/data/transforms';\n\nimport { GUEST_CART_QUERY, CUSTOMER_CART_QUERY } from './graphql/CartQuery';\n\nexport const getCartData = async (): Promise<CartModel | null> => {\n const authenticated = state.authenticated;\n const cartId = state.cartId;\n\n // Customer Cart\n if (authenticated) {\n return fetchGraphQl(CUSTOMER_CART_QUERY, { method: 'POST' }).then(\n ({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n const merged = { ...data.cart, ...data.customer };\n\n return transformCart(merged);\n }\n );\n }\n\n // Guest Cart\n if (!cartId) throw new Error('No cart ID found');\n\n return fetchGraphQl(GUEST_CART_QUERY, {\n method: 'POST',\n cache: 'no-cache',\n variables: { cartId },\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n return transformCart(data.cart);\n });\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CART_FRAGMENT } from '@/cart/api/graphql/CartFragment';\n\nexport const MERGE_CARTS_MUTATION = `\n mutation MERGE_CARTS_MUTATION(\n $guestCartId: String!, \n $customerCartId: String!,\n $pageSize: Int! = 100,\n $currentPage: Int! = 1,\n $itemsSortInput: QuoteItemsSortInput! = {field: CREATED_AT, order: DESC}\n ) {\n mergeCarts(\n source_cart_id: $guestCartId,\n destination_cart_id: $customerCartId\n ) {\n ...CART_FRAGMENT \n }\n }\n\n ${CART_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { events } from '@adobe-commerce/event-bus';\nimport { state } from '@/cart/lib/state';\nimport { config, fetchGraphQl, getCartData, getStoreConfig } from '@/cart/api';\nimport { MERGE_CARTS_MUTATION } from './graphql/MergeCartsMutation';\nimport { CartModel } from '@/cart/data/models';\n\nexport const initializeCart = async (): Promise<CartModel | null> => {\n if (state.initializing) return null;\n\n state.initializing = true;\n\n // set config\n if (!state.config) {\n state.config = await getStoreConfig();\n }\n\n const payload = state.authenticated\n ? await getCustomerCartPayload()\n : await getGuestCartPayload();\n\n events.emit('cart/initialized', payload);\n events.emit('cart/data', payload);\n\n state.initializing = false;\n\n return payload;\n};\n\nexport async function getCustomerCartPayload() {\n const existingCartId = state.cartId;\n\n const cart = await getCartData();\n\n if (!cart) return null;\n\n // set cartid in the state\n state.cartId = cart.id;\n\n // If the existing cart is the same as the fetched cart, return the fetched cart\n if (!existingCartId || cart.id === existingCartId) return cart;\n\n // If the existing cart is not the same as the fetched cart, merge the carts\n return await fetchGraphQl(MERGE_CARTS_MUTATION, {\n variables: {\n guestCartId: existingCartId,\n customerCartId: cart.id,\n },\n })\n .then(() => {\n return getCartData();\n })\n .then((transformedCartData) => {\n const payload = {\n oldCartItems: cart.items,\n newCart: transformedCartData,\n };\n events.emit('cart/merged', payload);\n return transformedCartData;\n })\n .catch(() => {\n // gracefully handle merge error, continue with existing cart\n console.error('Could not merge carts');\n return cart;\n });\n}\n\nexport async function getGuestCartPayload() {\n // If guest cart is not enabled, return null\n if (config.getConfig().disableGuestCart === true) {\n return null;\n }\n\n // If there is not a cart id in the state, return null\n if (!state.cartId) {\n return null;\n }\n\n // If there is a cart id in the state, return the cart data\n try {\n return await getCartData();\n } catch (error) {\n console.error(error);\n return null;\n }\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const STORE_CONFIG_QUERY = `\nquery STORE_CONFIG_QUERY {\n storeConfig {\n minicart_display\n minicart_max_items\n cart_expires_in_days\n cart_summary_display_quantity\n max_items_in_order_summary\n default_country\n category_fixed_product_tax_display_setting\n product_fixed_product_tax_display_setting\n sales_fixed_product_tax_display_setting\n shopping_cart_display_full_summary\n shopping_cart_display_grand_total\n shopping_cart_display_price\n shopping_cart_display_shipping\n shopping_cart_display_subtotal\n shopping_cart_display_tax_gift_wrapping\n shopping_cart_display_zero_tax\n configurable_thumbnail_source\n allow_gift_wrapping_on_order\n allow_gift_wrapping_on_order_items\n allow_order\n allow_items\n allow_gift_receipt\n allow_printed_card\n printed_card_priceV2 {\n currency\n value\n }\n cart_gift_wrapping\n cart_printed_card\n }\n}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/cart/api';\nimport { StoreConfigModel } from '@/cart/data/models';\nimport { transformStoreConfig } from '@/cart/data/transforms';\nimport { handleFetchError } from '@/cart/lib/fetch-error';\n\nimport { STORE_CONFIG_QUERY } from './graphql/StoreConfigQuery';\n\nexport const getStoreConfig = async (): Promise<StoreConfigModel | null> => {\n return fetchGraphQl(STORE_CONFIG_QUERY, {\n method: 'GET',\n cache: 'force-cache',\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n return transformStoreConfig(data.storeConfig);\n });\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { state } from '@/cart/lib/state';\nimport { CartModel } from '@/cart/data/models';\nimport { getCustomerCartPayload, getGuestCartPayload } from '@/cart/api';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const refreshCart = async (): Promise<CartModel | null> => {\n const payload = state.authenticated\n ? await getCustomerCartPayload()\n : await getGuestCartPayload();\n\n events.emit('cart/data', payload);\n\n return payload;\n};\n"],"names":["initialize","Initializer","_config","config","initializeCart","events","authenticated","state","locale","resetCart","payload","setPersistedCartData","refreshCart","transformCart","data","model","_a","giftCard","giftCartState","currentBalanceValue","appliedBalanceValue","_b","currency","_c","value","transformQuantity","transformGiftOptions","wrapItem","_d","_e","_f","transformErrors","transformItems","_g","calculateTotal","_h","_i","_j","_k","_l","_m","transformTotalPriceModifiers","transformAddresses","transformOutOfStockItems","transformFullyOutOfStockItems","merge","_p","_o","_n","giftOptions","acc","item","getImage","getRegularPrice","getDiscounted","transformGiftMessage","transformWrappingPrice","transformGiftOptionsCode","category","transformSKU","transformLinks","discount","transformBundleOptions","extractBundleOptionUIDs","transformSelectedOptions","transformCustomizableOptions","transformStockLevel","transformDiscountPercentage","transformDiscountAmount","transformProductAttributes","result","error","bundle","option","bundleOptions","allUIDs","valueUIDs","selected","selectedOptions","selectedOptionsUIDs","transformedOptions","previous","current","parser","fileAnchorElementHtml","anchorText","links","link","address","percent_off","amount_off","attribute","transformedCode","word","transformStoreConfig","transformTaxDisplaySetting","taxDisplaySetting","CUSTOMER_ACCOUNT_FRAGMENT","GUEST_CART_QUERY","CART_FRAGMENT","CUSTOMER_CART_QUERY","getCartData","cartId","fetchGraphQl","errors","handleFetchError","merged","MERGE_CARTS_MUTATION","getStoreConfig","getCustomerCartPayload","getGuestCartPayload","existingCartId","cart","transformedCartData","STORE_CONFIG_QUERY"],"mappings":"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"}
1
+ {"version":3,"file":"refreshCart.js","sources":["/@dropins/storefront-cart/src/api/initialize/initialize.ts","/@dropins/storefront-cart/src/data/transforms/transform-cart.ts","/@dropins/storefront-cart/src/data/transforms/transform-store-config.ts","/@dropins/storefront-cart/src/api/graphql/CustomerAccountFragment.ts","/@dropins/storefront-cart/src/api/getCartData/graphql/CartQuery.ts","/@dropins/storefront-cart/src/api/getCartData/getCartData.ts","/@dropins/storefront-cart/src/api/initializeCart/graphql/MergeCartsMutation.ts","/@dropins/storefront-cart/src/api/initializeCart/initializeCart.ts","/@dropins/storefront-cart/src/api/getStoreConfig/graphql/StoreConfigQuery.ts","/@dropins/storefront-cart/src/api/getStoreConfig/getStoreConfig.ts","/@dropins/storefront-cart/src/api/refreshCart/refreshCart.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { Initializer, Model } from '@adobe-commerce/elsie/lib';\nimport { initializeCart, refreshCart, resetCart } from '@/cart/api';\nimport { state } from '@/cart/lib/state';\nimport { events } from '@adobe-commerce/event-bus';\nimport { Lang } from '@adobe-commerce/elsie/i18n';\nimport { setPersistedCartData } from '@/cart/lib/persisted-data';\nimport { CartModel } from '@/cart/data/models';\n\ntype ConfigProps = {\n disableGuestCart?: boolean;\n langDefinitions?: Lang;\n\n models?: {\n CartModel?: Model<CartModel>;\n };\n};\n\nexport const initialize = new Initializer<ConfigProps>({\n init: async (_config) => {\n const config = { disableGuestCart: false, ..._config };\n\n // Set config\n initialize.config.setConfig(config);\n\n initializeCart().catch(console.error);\n },\n\n listeners: () => [\n events.on(\n 'authenticated',\n (authenticated) => {\n if (state.authenticated && !authenticated) {\n // Reset cart if the user is no longer authenticated\n events.emit('cart/reset', undefined);\n }\n // Login event occurred\n else if (authenticated && !state.authenticated) {\n state.authenticated = authenticated;\n initializeCart().catch(console.error);\n }\n },\n { eager: true }\n ),\n\n events.on('locale', async (locale) => {\n if (locale !== state.locale) {\n state.locale = locale;\n initializeCart().catch(console.error);\n }\n }),\n\n events.on('cart/reset', () => {\n resetCart().catch(console.error);\n events.emit('cart/data', null);\n }),\n\n events.on('cart/data', (payload) => {\n setPersistedCartData(payload);\n }),\n\n events.on('checkout/updated', (payload) => {\n if (!payload) return;\n\n refreshCart().catch(console.error);\n }),\n\n events.on('companyContext/changed', () => {\n refreshCart().catch(console.error);\n }),\n ],\n});\n\nexport const config = initialize.config;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { merge } from '@adobe-commerce/elsie/lib';\nimport { CartModel, StoreConfigModel } from '@/cart/data/models';\nimport { state } from '@/cart/lib/state';\nimport { config } from '@/cart/api';\n\nexport function transformCart(data: any): CartModel | null {\n if (!data) return null;\n\n const model = {\n appliedGiftCards:\n data?.applied_gift_cards?.map((giftCard: any) => {\n const giftCartState = {\n code: giftCard.code ?? '',\n appliedBalance: {\n value: giftCard.applied_balance.value ?? 0,\n currency: giftCard.applied_balance.currency ?? 'USD',\n },\n currentBalance: {\n value: giftCard.current_balance.value ?? 0,\n currency: giftCard.current_balance.currency ?? 'USD',\n },\n expirationDate: giftCard.expiration_date ?? '',\n };\n\n const currentBalanceValue = giftCartState?.currentBalance?.value;\n const appliedBalanceValue = giftCartState?.appliedBalance?.value;\n const currency = giftCartState?.currentBalance?.currency;\n\n const hasBalanceDifference =\n currentBalanceValue - appliedBalanceValue > 0;\n\n const value = hasBalanceDifference\n ? currentBalanceValue - appliedBalanceValue\n : 0;\n\n return {\n ...giftCartState,\n giftCardBalance: { value, currency },\n };\n }) ?? [],\n id: data.id,\n totalQuantity: transformQuantity(data),\n totalUniqueItems: data.itemsV2.items.length,\n totalGiftOptions: transformGiftOptions(data?.prices?.gift_options),\n giftReceiptIncluded: data?.gift_receipt_included ?? false,\n printedCardIncluded: data?.printed_card_included ?? false,\n cartGiftWrapping:\n data?.available_gift_wrappings?.map((wrapItem: any) => {\n return {\n design: wrapItem.design ?? '',\n uid: wrapItem.uid,\n selected: data?.gift_wrapping?.uid === wrapItem.uid,\n image: {\n url: wrapItem?.image?.url ?? '',\n label: wrapItem.image?.label ?? '',\n },\n price: {\n currency: wrapItem?.price?.currency ?? 'USD',\n value: wrapItem?.price?.value ?? 0,\n },\n };\n }) ?? [],\n giftMessage: {\n senderName: data?.gift_message?.from ?? '',\n recipientName: data?.gift_message?.to ?? '',\n message: data?.gift_message?.message ?? '',\n },\n errors: transformErrors(data?.itemsV2),\n items: transformItems(data?.itemsV2),\n miniCartMaxItems: transformItems(data?.itemsV2).slice(\n 0,\n state.config?.miniCartMaxItemsDisplay ?? 10\n ),\n total: {\n includingTax: {\n value: data.prices.grand_total.value,\n currency: data.prices.grand_total.currency,\n },\n excludingTax: {\n value: data.prices.grand_total_excluding_tax.value,\n currency: data.prices.grand_total_excluding_tax.currency,\n },\n },\n discount: calculateTotal(\n data.prices.discounts,\n data.prices.grand_total.currency\n ),\n subtotal: {\n excludingTax: {\n value: data.prices.subtotal_excluding_tax?.value,\n currency: data.prices.subtotal_excluding_tax?.currency,\n },\n includingTax: {\n value: data.prices.subtotal_including_tax?.value,\n currency: data.prices.subtotal_including_tax?.currency,\n },\n includingDiscountOnly: {\n value: data.prices.subtotal_with_discount_excluding_tax?.value,\n currency: data.prices.subtotal_with_discount_excluding_tax?.currency,\n },\n },\n appliedTaxes: transformTotalPriceModifiers(data.prices.applied_taxes),\n totalTax: calculateTotal(\n data.prices.applied_taxes,\n data.prices.grand_total.currency\n ),\n appliedDiscounts: transformTotalPriceModifiers(data.prices.discounts),\n isVirtual: data.is_virtual,\n addresses: {\n shipping: data.shipping_addresses && transformAddresses(data),\n },\n isGuestCart: !state.authenticated,\n hasOutOfStockItems: transformOutOfStockItems(data),\n hasFullyOutOfStockItems: transformFullyOutOfStockItems(data),\n appliedCoupons: data.applied_coupons,\n };\n\n // extend the model with custom transformer\n return merge(\n model,\n config.getConfig().models?.CartModel?.transformer?.(data)\n );\n}\n\nfunction transformGiftOptions(giftOptions: any) {\n return {\n giftWrappingForItems: {\n value: giftOptions?.gift_wrapping_for_items?.value ?? 0,\n currency: giftOptions?.gift_wrapping_for_items?.currency ?? 'USD',\n },\n giftWrappingForItemsInclTax: {\n value: giftOptions?.gift_wrapping_for_items_incl_tax?.value ?? 0,\n currency:\n giftOptions?.gift_wrapping_for_items_incl_tax?.currency ?? 'USD',\n },\n giftWrappingForOrder: {\n value: giftOptions?.gift_wrapping_for_order?.value ?? 0,\n currency: giftOptions?.gift_wrapping_for_order?.currency ?? 'USD',\n },\n giftWrappingForOrderInclTax: {\n value: giftOptions?.gift_wrapping_for_order_incl_tax?.value ?? 0,\n currency:\n giftOptions?.gift_wrapping_for_order_incl_tax?.currency ?? 'USD',\n },\n printedCard: {\n value: giftOptions?.printed_card?.value ?? 0,\n currency: giftOptions?.printed_card?.currency ?? 'USD',\n },\n printedCardInclTax: {\n value: giftOptions?.printed_card_incl_tax?.value ?? 0,\n currency: giftOptions?.printed_card_incl_tax?.currency ?? 'USD',\n },\n };\n}\n\n// Need to calculate total amount since it's not provided by GraphQL\nfunction calculateTotal(data: any[], currency: string) {\n if (!data?.length)\n return {\n value: 0,\n currency,\n };\n\n return data.reduce(\n (acc: any, item: any) => {\n return {\n value: acc.value + item.amount.value,\n currency: item.amount.currency,\n };\n },\n { value: 0, currency }\n );\n}\n\nfunction getImage(config: StoreConfigModel | null | undefined, item: any) {\n return {\n // Use parent thumbnail if configured, otherwise use own variant. use the parent thumbnail as a fallback\n src: config?.useConfigurableParentThumbnail\n ? item.product.thumbnail.url\n : item.configured_variant?.thumbnail?.url || item.product.thumbnail.url,\n alt: config?.useConfigurableParentThumbnail\n ? item.product.thumbnail.label\n : item.configured_variant?.thumbnail?.label ||\n item.product.thumbnail.label,\n };\n}\n\nfunction getRegularPrice(item: any) {\n if (item.__typename === 'ConfigurableCartItem') {\n return {\n value:\n item.configured_variant?.price_range?.maximum_price.regular_price.value,\n currency:\n item.configured_variant?.price_range?.maximum_price.regular_price\n .currency,\n };\n }\n if (item.__typename === 'GiftCardCartItem') {\n return {\n value: item.prices.price.value,\n currency: item.prices.price.currency,\n };\n }\n return {\n value: item.prices.original_item_price.value,\n currency: item.prices.original_item_price.currency,\n };\n}\n\nfunction getDiscounted(item: any) {\n if (item.__typename === 'ConfigurableCartItem')\n return (\n item.configured_variant?.price_range?.maximum_price.discount.amount_off >\n 0\n );\n\n return item.product.price_range?.maximum_price.discount.amount_off > 0;\n}\n\nfunction transformGiftMessage(data: any) {\n return {\n senderName: data?.gift_message?.from ?? '',\n recipientName: data?.gift_message?.to ?? '',\n message: data?.gift_message?.message ?? '',\n };\n}\n\nfunction transformWrappingPrice(data: any) {\n return {\n currency: data?.currency ?? 'USD',\n value: data?.value ?? 0,\n };\n}\n\nfunction transformItems(data: any) {\n if (!data?.items?.length) return [];\n\n const config = state.config;\n\n return data.items.map((item: any) => ({\n giftWrappingAvailable: item?.product?.gift_wrapping_available ?? false,\n giftWrappingPrice: transformWrappingPrice(\n item?.product?.gift_wrapping_price\n ),\n giftMessage: transformGiftMessage(item),\n productGiftWrapping:\n item?.available_gift_wrapping?.map((wrapItem: any) => {\n return {\n design: wrapItem.design ?? '',\n uid: wrapItem.uid,\n selected: item.gift_wrapping?.uid === wrapItem.uid,\n image: {\n url: wrapItem?.image?.url ?? '',\n label: wrapItem.image?.label ?? '',\n },\n price: {\n currency: wrapItem?.price?.currency ?? 'USD',\n value: wrapItem?.price?.value ?? 0,\n },\n };\n }) ?? [],\n itemType: item.__typename,\n uid: item.uid,\n giftMessageAvailable: transformGiftOptionsCode(\n item.product.gift_message_available\n ),\n url: {\n urlKey: item.product.url_key,\n categories: item.product.categories.map(\n (category: any) => category.url_key\n ),\n },\n canonicalUrl: item.product.canonical_url,\n categories: item.product.categories.map((category: any) => category.name),\n quantity: item.quantity,\n sku: transformSKU(item),\n topLevelSku: item.product.sku,\n name: item.product.name,\n image: getImage(config, item),\n price: {\n value: item.prices.price.value,\n currency: item.prices.price.currency,\n },\n taxedPrice: {\n value: item.prices.price_including_tax.value,\n currency: item.prices.price_including_tax.currency,\n },\n fixedProductTaxes: item.prices.fixed_product_taxes,\n rowTotal: {\n value: item.prices.row_total.value,\n currency: item.prices.row_total.currency,\n },\n rowTotalIncludingTax: {\n value: item.prices.row_total_including_tax.value,\n currency: item.prices.row_total_including_tax.currency,\n },\n links: transformLinks(item.links),\n total: {\n value: item.prices.original_row_total?.value,\n currency: item.prices.original_row_total?.currency,\n },\n discount: {\n value: item.prices.total_item_discount.value,\n currency: item.prices.total_item_discount.currency,\n label: item.prices.discounts?.map((discount: any) => discount.label),\n },\n regularPrice: getRegularPrice(item),\n discounted: getDiscounted(item),\n bundleOptions:\n item.__typename === 'BundleCartItem'\n ? transformBundleOptions(item.bundle_options)\n : null,\n bundleOptionsUIDs:\n item.__typename === 'BundleCartItem'\n ? extractBundleOptionUIDs(item.bundle_options)\n : null,\n selectedOptions: transformSelectedOptions(item.configurable_options)\n ?.options,\n selectedOptionsUIDs: transformSelectedOptions(item.configurable_options)\n ?.uids,\n customizableOptions: transformCustomizableOptions(\n item.customizable_options\n ),\n sender: item.__typename === 'GiftCardCartItem' ? item.sender_name : null,\n senderEmail:\n item.__typename === 'GiftCardCartItem' ? item.sender_email : null,\n recipient:\n item.__typename === 'GiftCardCartItem' ? item.recipient_name : null,\n recipientEmail:\n item.__typename === 'GiftCardCartItem' ? item.recipient_email : null,\n message: item.__typename === 'GiftCardCartItem' ? item.message : null,\n\n discountedTotal: {\n value: item.prices.row_total.value,\n currency: item.prices.row_total.currency,\n },\n\n onlyXLeftInStock:\n item.__typename === 'ConfigurableCartItem'\n ? item.configured_variant?.only_x_left_in_stock\n : item.product.only_x_left_in_stock,\n lowInventory:\n item.is_available && item.product.only_x_left_in_stock !== null,\n insufficientQuantity:\n (item.__typename === 'ConfigurableCartItem'\n ? item.configured_variant\n : item.product\n ).stock_status === 'IN_STOCK' && !item.is_available,\n outOfStock: item.product.stock_status === 'OUT_OF_STOCK',\n stockLevel: transformStockLevel(item),\n // Add support for BundleCartItem\n discountPercentage: transformDiscountPercentage(item),\n savingsAmount: transformDiscountAmount(item),\n productAttributes: transformProductAttributes(item),\n }));\n}\n\n// This helper follows the approach used in the store configuration GraphQL schema for Gift Messages,\n// where a `null` value represents the \"use system value\" option. It requires special processing\n// based on both global and product-level configurations\nfunction transformGiftOptionsCode(data: string) {\n switch (+data) {\n case 0:\n return false;\n case 1:\n return true;\n case 2:\n return null;\n default:\n return false;\n }\n}\n\nfunction transformErrors(data: any) {\n const result = data?.items?.reduce((acc: any, item: any) => {\n item.errors?.forEach((error: Error) => {\n acc.push({ uid: item.uid, text: error.message });\n });\n\n return acc;\n }, []);\n\n return result?.length ? result : null;\n}\n\nfunction transformTotalPriceModifiers(data: any) {\n if (!data?.length) return [];\n\n return data.map((item: any) => ({\n amount: {\n value: item.amount.value,\n currency: item.amount.currency,\n },\n label: item.label,\n coupon: item.coupon,\n }));\n}\n\nfunction transformBundleOptions(data: any) {\n const bundle = data?.map((option: any) => ({\n uid: option.uid,\n label: option.label,\n value: option.values.map((value: any) => value.label).join(', '),\n }));\n\n const bundleOptions: { [key: string]: any } = {};\n\n bundle?.forEach((option: any) => {\n bundleOptions[option.label] = option.value;\n });\n\n return Object.keys(bundleOptions).length > 0 ? bundleOptions : null;\n}\n\nfunction extractBundleOptionUIDs(data: any) {\n if (!data?.length) return null;\n\n const allUIDs: string[] = [];\n data.forEach((option: any) => {\n if (option.values?.length) {\n const valueUIDs = option.values.map((value: any) => value.uid);\n allUIDs.push(...valueUIDs);\n }\n });\n\n return allUIDs.length > 0 ? allUIDs : null;\n}\n\nfunction transformSelectedOptions(data: any) {\n const selected = data?.map((option: any) => ({\n uid: option.configurable_product_option_uid,\n label: option.option_label,\n value: option.value_label,\n valueUid: option.configurable_product_option_value_uid,\n }));\n\n const selectedOptions: { [key: string]: any } = {};\n const selectedOptionsUIDs: { [key: string]: any } = {};\n\n selected?.forEach((option: any) => {\n selectedOptions[option.label] = option.value;\n selectedOptionsUIDs[option.label] = option.valueUid;\n });\n\n return {\n options: Object.keys(selectedOptions).length > 0 ? selectedOptions : null,\n uids:\n Object.keys(selectedOptionsUIDs).length > 0 ? selectedOptionsUIDs : null,\n };\n}\n\nfunction transformCustomizableOptions(data: any) {\n const transformedOptions = data?.map((option: any) => ({\n uid: option.customizable_option_uid,\n label: option.label,\n type: option.type,\n values: option.values.map((value: any) => ({\n uid: value.customizable_option_value_uid,\n label: value.label,\n value: value.value,\n })),\n }));\n\n const result: { [key: string]: any } = {};\n\n transformedOptions?.forEach((option: any) => {\n switch (option.type) {\n case 'field':\n case 'area':\n case 'date_time':\n result[option.label] = option.values[0].value;\n break;\n case 'radio':\n case 'drop_down':\n result[option.label] = option.values[0].label;\n break;\n case 'multiple':\n case 'checkbox':\n result[option.label] = (option.values as Array<any>).reduce(\n (previous, current) => {\n if (previous) return `${previous}, ${current.label}`;\n return current.label;\n },\n ''\n );\n break;\n case 'file': {\n const parser = new DOMParser();\n const fileAnchorElementHtml = option.values[0].value;\n const doc = parser.parseFromString(fileAnchorElementHtml, 'text/html');\n const anchorText = doc.querySelector('a')?.textContent || '';\n result[option.label] = anchorText;\n break;\n }\n }\n });\n return result;\n}\n\nfunction transformQuantity(data: any) {\n if (state.config?.cartSummaryDisplayTotal === 0)\n return data.itemsV2.items.length;\n if (state.config?.cartSummaryDisplayTotal === 1) return data.total_quantity;\n // Default to items count if unexpected config value or error returned\n return data.itemsV2.items.length;\n}\n\nfunction transformLinks(links: any) {\n return links?.length > 0\n ? {\n count: links.length,\n result: links.map((link: any) => link.title).join(', '),\n }\n : null;\n}\n\nfunction transformAddresses(data: any) {\n //Shipping Address bound to cart\n if (data.shipping_addresses?.length) {\n return data.shipping_addresses?.map((address: any) => ({\n countryCode: address.country.code,\n zipCode: address.postcode,\n regionCode: address.region.code,\n }));\n //Shipping Address bound to customer\n } else if (data.addresses?.length) {\n return data.addresses\n ?.filter((address: any) => address.default_shipping)\n .map(\n (address: any) =>\n address.default_shipping && {\n countryCode: address.country_code,\n zipCode: address.postcode,\n regionCode: address.region?.region_code,\n }\n );\n }\n\n return null;\n}\n\nfunction transformOutOfStockItems(data: any) {\n return data?.itemsV2?.items?.some(\n (item: any) =>\n item?.product?.stock_status === 'OUT_OF_STOCK' ||\n (item.product.stock_status === 'IN_STOCK' && !item.is_available)\n );\n}\n\nfunction transformStockLevel(item: any) {\n if (!item.not_available_message) return null;\n\n return item.product.quantity != null ? item.product.quantity : 'noNumber';\n}\n\nfunction transformFullyOutOfStockItems(data: any) {\n return data?.itemsV2?.items?.some(\n (item: any) => item?.product?.stock_status === 'OUT_OF_STOCK'\n );\n}\n\n// Add support for BundleCartItem in USF-1591 after LYNX-599 is completed\nfunction transformDiscountPercentage(data: any) {\n let percent_off;\n\n if (data.__typename === 'ConfigurableCartItem') {\n percent_off =\n data?.configured_variant?.price_range?.maximum_price?.discount\n ?.percent_off;\n } else if (data.__typename === 'BundleCartItem') {\n return undefined;\n } else {\n percent_off =\n data?.product?.price_range?.maximum_price?.discount?.percent_off;\n }\n\n if (percent_off === 0) {\n return undefined;\n }\n return Math.round(percent_off);\n}\n\n// Add support for returning configured_variant sku for __typename:\"ConfigurableCartItem\"\nfunction transformSKU(item: any) {\n if (item.__typename === 'ConfigurableCartItem') {\n return item.configured_variant.sku;\n }\n\n // If varaintSku is available return it, otherwise return product sku\n return item.product?.variantSku || item.product.sku;\n}\n\nfunction transformDiscountAmount(data: any) {\n let amount_off;\n let currency;\n\n amount_off =\n data?.prices?.original_row_total?.value - data?.prices?.row_total?.value;\n currency = data?.prices?.row_total?.currency;\n\n if (amount_off === 0) {\n return undefined;\n }\n return {\n value: amount_off,\n currency,\n };\n}\n\nfunction transformProductAttributes(item: any) {\n return item?.product?.custom_attributesV2?.items?.map((attribute: any) => {\n const transformedCode = attribute.code\n .split('_')\n .map((word: any) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n\n return {\n ...attribute,\n code: transformedCode,\n };\n });\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { StoreConfigModel } from '@/cart/data/models';\n\nexport function transformStoreConfig(data: any): StoreConfigModel | null {\n if (!data) return null;\n\n const transformTaxDisplaySetting = (taxDisplaySetting: number) => {\n switch (taxDisplaySetting) {\n case 1:\n return 'EXCLUDING_TAX';\n case 2:\n return 'INCLUDING_TAX';\n case 3:\n return 'INCLUDING_EXCLUDING_TAX';\n default:\n return 'EXCLUDING_TAX';\n }\n };\n\n // A `null` value indicates the \"use system value\" option, which requires special handling\n // based on both global and product-level configurations\n const transformGiftOptionsCode = (data: string) => {\n switch (+data) {\n case 0:\n return false;\n case 1:\n return true;\n case 2:\n return null;\n default:\n return false;\n }\n };\n\n return {\n displayMiniCart: data.minicart_display,\n miniCartMaxItemsDisplay: data.minicart_max_items,\n cartExpiresInDays: data.cart_expires_in_days,\n cartSummaryDisplayTotal: data.cart_summary_display_quantity,\n cartSummaryMaxItems: data.max_items_in_order_summary,\n defaultCountry: data.default_country!,\n categoryFixedProductTaxDisplaySetting:\n data.category_fixed_product_tax_display_setting,\n productFixedProductTaxDisplaySetting:\n data.product_fixed_product_tax_display_setting,\n salesFixedProductTaxDisplaySetting:\n data.sales_fixed_product_tax_display_setting,\n shoppingCartDisplaySetting: {\n zeroTax: data.shopping_cart_display_zero_tax,\n subtotal: transformTaxDisplaySetting(data.shopping_cart_display_subtotal),\n price: transformTaxDisplaySetting(data.shopping_cart_display_price),\n shipping: transformTaxDisplaySetting(data.shopping_cart_display_shipping),\n fullSummary: data.shopping_cart_display_full_summary,\n grandTotal: data.shopping_cart_display_grand_total,\n taxGiftWrapping: data.shopping_cart_display_tax_gift_wrapping,\n },\n useConfigurableParentThumbnail:\n data.configurable_thumbnail_source === 'parent',\n allowGiftWrappingOnOrder: transformGiftOptionsCode(\n data?.allow_gift_wrapping_on_order\n ),\n allowGiftWrappingOnOrderItems: transformGiftOptionsCode(\n data?.allow_gift_wrapping_on_order_items\n ),\n allowGiftMessageOnOrder: transformGiftOptionsCode(data?.allow_order),\n allowGiftMessageOnOrderItems: transformGiftOptionsCode(data?.allow_items),\n allowGiftReceipt: Boolean(+data?.allow_gift_receipt),\n allowPrintedCard: Boolean(+data?.allow_printed_card),\n printedCardPrice: {\n currency: data?.printed_card_priceV2?.currency ?? '',\n value:\n data?.printed_card_priceV2?.value != null\n ? +data.printed_card_priceV2.value\n : 0,\n },\n cartGiftWrapping: transformTaxDisplaySetting(+data.cart_gift_wrapping),\n cartPrintedCard: transformTaxDisplaySetting(+data.cart_printed_card),\n };\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const CUSTOMER_ACCOUNT_FRAGMENT = /* GraphQL */ `\n fragment CUSTOMER_FRAGMENT on Customer {\n addresses {\n default_shipping\n country_code\n postcode\n region {\n region\n region_code\n region_id\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CART_FRAGMENT } from '@/cart/api/graphql/CartFragment';\n\nimport { CUSTOMER_ACCOUNT_FRAGMENT } from '@/cart/api/graphql/CustomerAccountFragment';\n\nexport const GUEST_CART_QUERY = `\n query GUEST_CART_QUERY(\n $cartId: String!,\n $pageSize: Int! = 100,\n $currentPage: Int! = 1,\n $itemsSortInput: QuoteItemsSortInput! = {field: CREATED_AT, order: DESC}\n ) {\n\n cart(cart_id: $cartId){\n ...CART_FRAGMENT\n }\n }\n\n ${CART_FRAGMENT}\n`;\n\nexport const CUSTOMER_CART_QUERY = `\n query CUSTOMER_CART_QUERY(\n $pageSize: Int! = 100,\n $currentPage: Int! = 1,\n $itemsSortInput: QuoteItemsSortInput! = {field: CREATED_AT, order: DESC}\n ) {\n \n customer {\n ...CUSTOMER_FRAGMENT\n }\n\n cart: customerCart {\n ...CART_FRAGMENT\n }\n }\n\n ${CUSTOMER_ACCOUNT_FRAGMENT}\n ${CART_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/cart/api';\nimport { handleFetchError } from '@/cart/lib/fetch-error';\nimport { state } from '@/cart/lib/state';\nimport { CartModel } from '@/cart/data/models';\nimport { transformCart } from '@/cart/data/transforms';\n\nimport { GUEST_CART_QUERY, CUSTOMER_CART_QUERY } from './graphql/CartQuery';\n\nexport const getCartData = async (): Promise<CartModel | null> => {\n const authenticated = state.authenticated;\n const cartId = state.cartId;\n\n // Customer Cart\n if (authenticated) {\n return fetchGraphQl(CUSTOMER_CART_QUERY, { method: 'POST' }).then(\n ({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n const merged = { ...data.cart, ...data.customer };\n\n return transformCart(merged);\n }\n );\n }\n\n // Guest Cart\n if (!cartId) throw new Error('No cart ID found');\n\n return fetchGraphQl(GUEST_CART_QUERY, {\n method: 'POST',\n cache: 'no-cache',\n variables: { cartId },\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n return transformCart(data.cart);\n });\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CART_FRAGMENT } from '@/cart/api/graphql/CartFragment';\n\nexport const MERGE_CARTS_MUTATION = `\n mutation MERGE_CARTS_MUTATION(\n $guestCartId: String!, \n $customerCartId: String!,\n $pageSize: Int! = 100,\n $currentPage: Int! = 1,\n $itemsSortInput: QuoteItemsSortInput! = {field: CREATED_AT, order: DESC}\n ) {\n mergeCarts(\n source_cart_id: $guestCartId,\n destination_cart_id: $customerCartId\n ) {\n ...CART_FRAGMENT \n }\n }\n\n ${CART_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { events } from '@adobe-commerce/event-bus';\nimport { state } from '@/cart/lib/state';\nimport { config, fetchGraphQl, getCartData, getStoreConfig } from '@/cart/api';\nimport { MERGE_CARTS_MUTATION } from './graphql/MergeCartsMutation';\nimport { CartModel } from '@/cart/data/models';\n\nexport const initializeCart = async (): Promise<CartModel | null> => {\n if (state.initializing) return null;\n\n state.initializing = true;\n\n // set config\n if (!state.config) {\n state.config = await getStoreConfig();\n }\n\n const payload = state.authenticated\n ? await getCustomerCartPayload()\n : await getGuestCartPayload();\n\n events.emit('cart/initialized', payload);\n events.emit('cart/data', payload);\n\n state.initializing = false;\n\n return payload;\n};\n\nexport async function getCustomerCartPayload() {\n const existingCartId = state.cartId;\n\n const cart = await getCartData();\n\n if (!cart) return null;\n\n // set cartid in the state\n state.cartId = cart.id;\n\n // If the existing cart is the same as the fetched cart, return the fetched cart\n if (!existingCartId || cart.id === existingCartId) return cart;\n\n // If the existing cart is not the same as the fetched cart, merge the carts\n return await fetchGraphQl(MERGE_CARTS_MUTATION, {\n variables: {\n guestCartId: existingCartId,\n customerCartId: cart.id,\n },\n })\n .then(() => {\n return getCartData();\n })\n .then((transformedCartData) => {\n const payload = {\n oldCartItems: cart.items,\n newCart: transformedCartData,\n };\n events.emit('cart/merged', payload);\n return transformedCartData;\n })\n .catch(() => {\n // gracefully handle merge error, continue with existing cart\n console.error('Could not merge carts');\n return cart;\n });\n}\n\nexport async function getGuestCartPayload() {\n // If guest cart is not enabled, return null\n if (config.getConfig().disableGuestCart === true) {\n return null;\n }\n\n // If there is not a cart id in the state, return null\n if (!state.cartId) {\n return null;\n }\n\n // If there is a cart id in the state, return the cart data\n try {\n return await getCartData();\n } catch (error) {\n console.error(error);\n return null;\n }\n}\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const STORE_CONFIG_QUERY = `\nquery STORE_CONFIG_QUERY {\n storeConfig {\n minicart_display\n minicart_max_items\n cart_expires_in_days\n cart_summary_display_quantity\n max_items_in_order_summary\n default_country\n category_fixed_product_tax_display_setting\n product_fixed_product_tax_display_setting\n sales_fixed_product_tax_display_setting\n shopping_cart_display_full_summary\n shopping_cart_display_grand_total\n shopping_cart_display_price\n shopping_cart_display_shipping\n shopping_cart_display_subtotal\n shopping_cart_display_tax_gift_wrapping\n shopping_cart_display_zero_tax\n configurable_thumbnail_source\n allow_gift_wrapping_on_order\n allow_gift_wrapping_on_order_items\n allow_order\n allow_items\n allow_gift_receipt\n allow_printed_card\n printed_card_priceV2 {\n currency\n value\n }\n cart_gift_wrapping\n cart_printed_card\n }\n}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { fetchGraphQl } from '@/cart/api';\nimport { StoreConfigModel } from '@/cart/data/models';\nimport { transformStoreConfig } from '@/cart/data/transforms';\nimport { handleFetchError } from '@/cart/lib/fetch-error';\n\nimport { STORE_CONFIG_QUERY } from './graphql/StoreConfigQuery';\n\nexport const getStoreConfig = async (): Promise<StoreConfigModel | null> => {\n return fetchGraphQl(STORE_CONFIG_QUERY, {\n method: 'GET',\n cache: 'force-cache',\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n return transformStoreConfig(data.storeConfig);\n });\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { state } from '@/cart/lib/state';\nimport { CartModel } from '@/cart/data/models';\nimport { getCustomerCartPayload, getGuestCartPayload } from '@/cart/api';\nimport { events } from '@adobe-commerce/event-bus';\n\nexport const refreshCart = async (): Promise<CartModel | null> => {\n const payload = state.authenticated\n ? await getCustomerCartPayload()\n : await getGuestCartPayload();\n\n events.emit('cart/data', payload);\n\n return payload;\n};\n"],"names":["initialize","Initializer","_config","config","initializeCart","events","authenticated","state","locale","resetCart","payload","setPersistedCartData","refreshCart","transformCart","data","model","_a","giftCard","giftCartState","currentBalanceValue","appliedBalanceValue","_b","currency","_c","value","transformQuantity","transformGiftOptions","wrapItem","_d","_e","_f","transformErrors","transformItems","_g","calculateTotal","_h","_i","_j","_k","_l","_m","transformTotalPriceModifiers","transformAddresses","transformOutOfStockItems","transformFullyOutOfStockItems","merge","_p","_o","_n","giftOptions","acc","item","getImage","getRegularPrice","getDiscounted","transformGiftMessage","transformWrappingPrice","transformGiftOptionsCode","category","transformSKU","transformLinks","discount","transformBundleOptions","extractBundleOptionUIDs","transformSelectedOptions","transformCustomizableOptions","transformStockLevel","transformDiscountPercentage","transformDiscountAmount","transformProductAttributes","result","error","bundle","option","bundleOptions","allUIDs","valueUIDs","selected","selectedOptions","selectedOptionsUIDs","transformedOptions","previous","current","parser","fileAnchorElementHtml","anchorText","links","link","address","percent_off","amount_off","attribute","transformedCode","word","transformStoreConfig","transformTaxDisplaySetting","taxDisplaySetting","CUSTOMER_ACCOUNT_FRAGMENT","GUEST_CART_QUERY","CART_FRAGMENT","CUSTOMER_CART_QUERY","getCartData","cartId","fetchGraphQl","errors","handleFetchError","merged","MERGE_CARTS_MUTATION","getStoreConfig","getCustomerCartPayload","getGuestCartPayload","existingCartId","cart","transformedCartData","STORE_CONFIG_QUERY"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{s as C,f as _,h as E}from"./resetCart.js";import{t as A}from"./refreshCart.js";import{events as T}from"@dropins/tools/event-bus.js";import{g}from"./persisted-data.js";import{CART_FRAGMENT as D}from"../fragments.js";import{b as U}from"./acdl.js";const S=`
3
+ import{s as f,f as _,h as g}from"./resetCart.js";import{t as E}from"./refreshCart.js";import{events as l}from"@dropins/tools/event-bus.js";import{g as A}from"./persisted-data.js";import{CART_FRAGMENT as O}from"../fragments.js";import{b as D}from"./acdl.js";const P=`
4
4
  mutation ADD_PRODUCTS_TO_CART_MUTATION(
5
5
  $cartId: String!,
6
6
  $cartItems: [CartItemInput!]!,
@@ -22,8 +22,8 @@ import{s as C,f as _,h as E}from"./resetCart.js";import{t as A}from"./refreshCar
22
22
  }
23
23
  }
24
24
 
25
- ${D}
26
- `,O=`
25
+ ${O}
26
+ `,S=`
27
27
  mutation UPDATE_PRODUCTS_FROM_CART_MUTATION(
28
28
  $cartId: String!,
29
29
  $cartItems: [CartItemUpdateInput!]!,
@@ -44,6 +44,6 @@ import{s as C,f as _,h as E}from"./resetCart.js";import{t as A}from"./refreshCar
44
44
  }
45
45
  }
46
46
 
47
- ${D}
48
- `,P=(m,c)=>{const u=[];return m.filter(t=>t.errors&&c.some(n=>n===t.uid)).forEach(t=>{var n;(n=t.errors)==null||n.forEach(e=>{u.push({message:e.message,path:[t.uid],extensions:{category:e.code}})})}),u},R=(m,c)=>{const u=[],t=[],n=[];return m.forEach(e=>{const s=c.find(r=>r.uid===e.uid);if(s)if(e.optionsUIDs){const r=Object.values((s==null?void 0:s.selectedOptionsUIDs)??{}),{sku:o,topLevelSku:p}=s,{optionsUIDs:i,enteredOptions:a,quantity:d,customFields:l}=e;u.push({sku:o,parentSku:p,quantity:d,optionsUIDs:i,enteredOptions:a,customFields:l}),e.optionsUIDs.some(f=>!r.includes(f))&&t.push(e.uid)}else if(e.customFields){const{sku:r,topLevelSku:o}=s,{optionsUIDs:p,enteredOptions:i,quantity:a,customFields:d}=e;u.push({sku:r,parentSku:o,quantity:a,optionsUIDs:p,enteredOptions:i,customFields:d}),t.push(e.uid)}else n.push({uid:e.uid,quantity:e.quantity,giftOptions:e.giftOptions,customFields:e.customFields});else throw Error(`Invalid Cart Item UID: No matching cart entry found for ${e.uid}`)}),{itemsToAdd:u,itemsToRemove:t,itemsToUpdate:n}},$=0,j=async m=>{const c=C.cartId,u=g();if(!c)return Promise.reject(new Error("Cart ID is not set"));if(!u)return Promise.reject(new Error("Cart is not set"));const{itemsToAdd:t,itemsToRemove:n,itemsToUpdate:e}=R(m,u.items);let s=[];return t.length>0&&s.push(_(S,{variables:{cartId:c,cartItems:t.map(({parentSku:r,quantity:o,optionsUIDs:p,enteredOptions:i,customFields:a})=>({sku:r,quantity:o,selected_options:p,entered_options:i,...a||{}}))}}).then(({errors:r,data:o})=>{var a,d,l,f;const p=P(((d=(a=o==null?void 0:o.addProductsToCart)==null?void 0:a.cart)==null?void 0:d.itemsV2.items)||[],m.map(I=>I.uid)),i=[...((l=o==null?void 0:o.addProductsToCart)==null?void 0:l.user_errors)??[],...r??[],...p];return i.length>0?E(i):n.length>0?h(c,n.map(I=>({uid:I,quantity:$}))).catch(I=>Promise.reject(new Error(`Failed to update products in cart: ${I}`))):Promise.resolve(A((f=o==null?void 0:o.addProductsToCart)==null?void 0:f.cart))}).then(r=>(T.emit("cart/updated",r),T.emit("cart/data",r),U(r,m,C.locale??"en-US"),Promise.resolve(r))).catch(r=>Promise.reject(new Error(`Failed to add products to cart: ${r}`)))),e.length>0&&s.push(h(c,e).catch(r=>Promise.reject(new Error(r)))),Promise.all(s).then(r=>r[r.length-1])},h=async(m,c)=>_(O,{variables:{cartId:m,cartItems:c.map(({uid:u,quantity:t,giftOptions:n})=>({cart_item_uid:u,quantity:t,...n}))}}).then(({errors:u,data:t})=>{var r,o,p;const n=P(((o=(r=t==null?void 0:t.updateCartItems)==null?void 0:r.cart)==null?void 0:o.itemsV2.items)||[],c.map(i=>i.uid)),e=[...((p=t==null?void 0:t.updateCartItems)==null?void 0:p.user_errors)??[],...u??[],...n],s=(t==null?void 0:t.updateCartItems)&&A(t.updateCartItems.cart);if(s&&T.emit("cart/data",s),e.length>0)return E(e);if(T.emit("cart/updated",s),s){const i=s.items.filter(a=>c.some(d=>d.uid===a.uid));T.emit("cart/product/updated",i)}return s&&U(s,c,C.locale??"en-US"),s});export{S as A,j as u};
47
+ ${O}
48
+ `,U=(m,u)=>{const a=[];return m.filter(r=>r.errors&&u.some(i=>i===r.uid)).forEach(r=>{var i;(i=r.errors)==null||i.forEach(t=>{a.push({message:t.message,path:[r.uid],extensions:{category:t.code}})})}),a},R=(m,u)=>{const a=[],r=[],i=[];return m.forEach(t=>{const s=u.find(e=>e.uid===t.uid);if(s)if(t.optionsUIDs){const e=Object.values((s==null?void 0:s.selectedOptionsUIDs)??{});if(t.optionsUIDs.every(c=>e.includes(c))&&t.optionsUIDs.length===e.length)i.push({uid:t.uid,quantity:t.quantity,giftOptions:t.giftOptions,customFields:t.customFields});else{const c=u.find(o=>{const p=Object.values((o==null?void 0:o.selectedOptionsUIDs)??{});return o.uid!==t.uid&&o.sku===s.sku&&t.optionsUIDs.every(d=>p.includes(d))&&t.optionsUIDs.length===p.length});if(c)i.push({uid:c.uid,quantity:c.quantity+t.quantity,giftOptions:t.giftOptions,customFields:t.customFields}),r.push(t.uid);else{const{sku:o,topLevelSku:p}=s,{optionsUIDs:d,enteredOptions:T,quantity:h,customFields:I}=t;a.push({sku:o,parentSku:p,quantity:h,optionsUIDs:d,enteredOptions:T,customFields:I}),r.push(t.uid)}}}else if(t.customFields){const{sku:e,topLevelSku:n}=s,{optionsUIDs:c,enteredOptions:o,quantity:p,customFields:d}=t;a.push({sku:e,parentSku:n,quantity:p,optionsUIDs:c,enteredOptions:o,customFields:d}),r.push(t.uid)}else i.push({uid:t.uid,quantity:t.quantity,giftOptions:t.giftOptions,customFields:t.customFields});else throw Error(`Invalid Cart Item UID: No matching cart entry found for ${t.uid}`)}),{itemsToAdd:a,itemsToRemove:r,itemsToUpdate:i}},$=0,k=async m=>{const u=f.cartId,a=A();if(!u)return Promise.reject(new Error("Cart ID is not set"));if(!a)return Promise.reject(new Error("Cart is not set"));const{itemsToAdd:r,itemsToRemove:i,itemsToUpdate:t}=R(m,a.items);let s=[];return r.length>0&&s.push(_(P,{variables:{cartId:u,cartItems:r.map(({parentSku:e,quantity:n,optionsUIDs:c,enteredOptions:o,customFields:p})=>({sku:e,quantity:n,selected_options:c,entered_options:o,...p||{}}))}}).then(({errors:e,data:n})=>{var p,d,T,h;const c=U(((d=(p=n==null?void 0:n.addProductsToCart)==null?void 0:p.cart)==null?void 0:d.itemsV2.items)||[],m.map(I=>I.uid)),o=[...((T=n==null?void 0:n.addProductsToCart)==null?void 0:T.user_errors)??[],...e??[],...c];return o.length>0?g(o):i.length>0?C(u,i.map(I=>({uid:I,quantity:$}))).catch(I=>Promise.reject(new Error(`Failed to update products in cart: ${I}`))):Promise.resolve(E((h=n==null?void 0:n.addProductsToCart)==null?void 0:h.cart))}).then(e=>(l.emit("cart/updated",e),l.emit("cart/data",e),D(e,m,f.locale??"en-US"),Promise.resolve(e))).catch(e=>Promise.reject(new Error(`Failed to add products to cart: ${e}`)))),t.length>0&&s.push(C(u,t).catch(e=>Promise.reject(new Error(e)))),Promise.all(s).then(e=>e[e.length-1])},C=async(m,u)=>_(S,{variables:{cartId:m,cartItems:u.map(({uid:a,quantity:r,giftOptions:i})=>({cart_item_uid:a,quantity:r,...i}))}}).then(({errors:a,data:r})=>{var e,n,c;const i=U(((n=(e=r==null?void 0:r.updateCartItems)==null?void 0:e.cart)==null?void 0:n.itemsV2.items)||[],u.map(o=>o.uid)),t=[...((c=r==null?void 0:r.updateCartItems)==null?void 0:c.user_errors)??[],...a??[],...i],s=(r==null?void 0:r.updateCartItems)&&E(r.updateCartItems.cart);if(s&&l.emit("cart/data",s),t.length>0)return g(t);if(l.emit("cart/updated",s),s){const o=s.items.filter(p=>u.some(d=>d.uid===p.uid));l.emit("cart/product/updated",o)}return s&&D(s,u,f.locale??"en-US"),s});export{P as A,k as u};
49
49
  //# sourceMappingURL=updateProductsFromCart.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"updateProductsFromCart.js","sources":["/@dropins/storefront-cart/src/api/addProductsToCart/graphql/AddProductsToCartMutation.ts","/@dropins/storefront-cart/src/api/updateProductsFromCart/graphql/UpdateProductsMutation.ts","/@dropins/storefront-cart/src/api/updateProductsFromCart/updateProductsFromCart.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CART_FRAGMENT } from '@/cart/api/graphql/CartFragment';\n\nexport const ADD_PRODUCTS_TO_CART_MUTATION = `\n mutation ADD_PRODUCTS_TO_CART_MUTATION(\n $cartId: String!, \n $cartItems: [CartItemInput!]!,\n $pageSize: Int! = 100,\n $currentPage: Int! = 1,\n $itemsSortInput: QuoteItemsSortInput! = {field: CREATED_AT, order: DESC}\n ) {\n addProductsToCart(\n cartId: $cartId\n cartItems: $cartItems\n ) {\n cart {\n ...CART_FRAGMENT\n }\n user_errors {\n code\n message\n }\n }\n }\n \n ${CART_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CART_FRAGMENT } from '@/cart/api/graphql/CartFragment';\n\nexport const UPDATE_PRODUCTS_FROM_CART_MUTATION = `\n mutation UPDATE_PRODUCTS_FROM_CART_MUTATION(\n $cartId: String!, \n $cartItems: [CartItemUpdateInput!]!,\n $pageSize: Int! = 100,\n $currentPage: Int! = 1,\n $itemsSortInput: QuoteItemsSortInput! = {field: CREATED_AT, order: DESC}\n ) {\n updateCartItems(\n input: {\n cart_id: $cartId\n cart_items: $cartItems\n }\n ) {\n cart {\n ...CART_FRAGMENT\n }\n\n }\n }\n\n ${CART_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { state } from '@/cart/lib/state';\nimport { fetchGraphQl } from '@/cart/api';\nimport { handleFetchError } from '@/cart/lib/fetch-error';\nimport { CartModel } from '@/cart/data/models';\nimport { transformCart } from '@/cart/data/transforms';\nimport { events } from '@adobe-commerce/event-bus';\nimport { publishCartUpdateEvents } from '@/cart/lib/acdl';\nimport { getPersistedCartData } from '@/cart/lib/persisted-data';\nimport { ADD_PRODUCTS_TO_CART_MUTATION } from '../addProductsToCart/graphql/AddProductsToCartMutation';\nimport { UPDATE_PRODUCTS_FROM_CART_MUTATION } from './graphql/UpdateProductsMutation';\n\ntype UpdateProductsFromCart = Array<{\n uid: string;\n quantity: number;\n sku?: string;\n parentSku?: string;\n optionsUIDs?: string[];\n enteredOptions?: { uid: string; value: string }[];\n giftOptions?: {\n gift_wrapping_id?: string | null;\n gift_message: {\n to: string;\n from: string;\n message: string;\n };\n };\n customFields?: Record<string, any>;\n}>;\n\ntype ItemError = {\n message: string;\n path?: string[];\n extensions?: {\n category: string;\n };\n};\n\n/**\n * Collects individual item errors from cart items response\n * @param cartItems - The cart items from the response\n * @param updatedItemUIDs - Array of UIDs of items that were updated\n * @returns Array of ItemError objects\n */\nconst collectCartItemErrors = (\n cartItems: Array<{\n uid: string;\n errors?: Array<{ message: string; code: string }>;\n }>,\n updatedItemUIDs: string[]\n): ItemError[] => {\n const itemErrors: ItemError[] = [];\n\n cartItems\n .filter(\n (item) => item.errors && updatedItemUIDs.some((uid) => uid === item.uid)\n )\n .forEach((item) => {\n item.errors?.forEach((error) => {\n itemErrors.push({\n message: error.message,\n path: [item.uid],\n extensions: {\n category: error.code,\n },\n });\n });\n });\n\n return itemErrors;\n};\n\n/**\n * Creates the arrays of cart items to be sent to the graphql mutations\n *\n * @param items\n * @param currentCartItems\n * @returns {\n * itemsToAdd: Array<{\n * sku: string;\n * parentSku: string;\n * quantity: number;\n * optionsUIDs: string[];\n * enteredOptions: { uid: string; value: string }[];\n * customFields: Record<string, any>;\n * }>\n * itemsToRemove: Array<string>\n * itemsToUpdate: Array<{\n * uid: string;\n * quantity: number;\n * customFields: Record<string, any>;\n * }>\n * }\n */\nconst getCartItems = (\n items: UpdateProductsFromCart,\n currentCartItems: Array<CartModel['items'][number] & { customFields?: Record<string, any> }>\n) => {\n const itemsToAdd: Array<{\n sku?: string;\n parentSku?: string;\n quantity: number;\n optionsUIDs?: string[];\n enteredOptions?: { uid: string; value: string }[];\n customFields?: Record<string, any>;\n }> = [];\n // Items to remove from the cart will be items that have optionUIDs and\n // their optionUIDs are not the same as their matching entry in the current cart item identified by the uid\n const itemsToRemove: Array<string> = [];\n const itemsToUpdate: Array<{\n uid: string;\n quantity: number;\n giftOptions?: {\n gift_wrapping_id?: string | null;\n gift_message: {\n to: string;\n from: string;\n message: string;\n };\n };\n customFields?: Record<string, any>;\n }> = [];\n\n items.forEach((item) => {\n // Check if the item exists in the cart\n const currentItem = currentCartItems.find(\n (cartItem) => cartItem.uid === item.uid\n );\n\n if (currentItem) {\n if (item.optionsUIDs) {\n const currentItemOptions = Object.values(\n currentItem?.selectedOptionsUIDs ?? {}\n );\n\n const { sku, topLevelSku: parentSku } = currentItem;\n const { optionsUIDs, enteredOptions, quantity, customFields } = item;\n\n itemsToAdd.push({\n sku,\n parentSku,\n quantity,\n optionsUIDs,\n enteredOptions,\n customFields,\n });\n\n // If the item has optionUIDs and they are not the exact same as the current item, remove the item\n if (\n item.optionsUIDs.some(\n (optionUID) => !currentItemOptions.includes(optionUID)\n )\n ) {\n itemsToRemove.push(item.uid);\n }\n }\n else if (item.customFields) {\n const { sku, topLevelSku: parentSku } = currentItem;\n const { optionsUIDs, enteredOptions, quantity, customFields } = item;\n\n itemsToAdd.push({\n sku,\n parentSku,\n quantity,\n optionsUIDs,\n enteredOptions,\n customFields,\n });\n itemsToRemove.push(item.uid);\n }\n else {\n itemsToUpdate.push({\n uid: item.uid,\n quantity: item.quantity,\n giftOptions: item.giftOptions,\n customFields: item.customFields,\n });\n }\n } else {\n throw Error(\n `Invalid Cart Item UID: No matching cart entry found for ${item.uid}`\n );\n }\n });\n\n return {\n itemsToAdd,\n itemsToRemove,\n itemsToUpdate,\n };\n};\n\nconst DELETE_ITEM_QUANTITY = 0;\n\nexport const updateProductsFromCart = async (\n items: UpdateProductsFromCart\n): Promise<CartModel | null> => {\n const cartId = state.cartId;\n const cart = getPersistedCartData();\n\n if (!cartId) {\n return Promise.reject(new Error('Cart ID is not set'));\n }\n\n if (!cart) {\n return Promise.reject(new Error('Cart is not set'));\n }\n\n const { itemsToAdd, itemsToRemove, itemsToUpdate } = getCartItems(\n items,\n cart.items\n );\n\n // Array of promises to be resolved\n let results: Array<Promise<CartModel | null>> = [];\n\n // If there are items with options and matching cart items, add the products to the cart and remove the old one.\n // Note: The SKU must be the incoming parent sku and not the current cart item sku.\n if (itemsToAdd.length > 0) {\n results.push(\n fetchGraphQl(ADD_PRODUCTS_TO_CART_MUTATION, {\n variables: {\n cartId,\n cartItems: itemsToAdd.map(\n ({\n parentSku: sku,\n quantity,\n optionsUIDs: selected_options,\n enteredOptions: entered_options,\n customFields,\n }) => ({\n sku,\n quantity,\n selected_options,\n entered_options,\n ...(customFields ? customFields : {}),\n })\n ),\n },\n })\n .then(({ errors, data }) => {\n // Collect individual item errors from the response\n const updatedItemsErrors = collectCartItemErrors(\n data?.addProductsToCart?.cart?.itemsV2.items || [],\n items.map((item) => item.uid)\n );\n\n // handle errors\n const _errors = [\n ...(data?.addProductsToCart?.user_errors ?? []),\n ...(errors ?? []),\n ...updatedItemsErrors,\n ];\n\n if (_errors.length > 0) return handleFetchError(_errors);\n\n if (itemsToRemove.length > 0) {\n // remove the old item\n return updateProductQuantities(\n cartId,\n itemsToRemove.map((uid) => ({\n uid,\n quantity: DELETE_ITEM_QUANTITY, //Delete Item\n }))\n ).catch((error) => {\n return Promise.reject(\n new Error(`Failed to update products in cart: ${error}`)\n );\n });\n }\n return Promise.resolve(transformCart(data?.addProductsToCart?.cart));\n })\n .then((payload) => {\n // emit events\n events.emit('cart/updated', payload);\n events.emit('cart/data', payload);\n\n // Publish cart update events\n publishCartUpdateEvents(payload!, items, state.locale ?? 'en-US');\n\n return Promise.resolve(payload);\n })\n .catch((error) => {\n return Promise.reject(\n new Error(`Failed to add products to cart: ${error}`)\n );\n })\n );\n }\n\n if (itemsToUpdate.length > 0) {\n results.push(\n updateProductQuantities(cartId, itemsToUpdate).catch((error) => {\n return Promise.reject(new Error(error));\n })\n );\n }\n\n // Return the last promise in the results array\n return Promise.all(results).then((results) => results[results.length - 1]);\n};\n\nconst updateProductQuantities = async (\n cartId: string,\n items: UpdateProductsFromCart\n): Promise<CartModel | null> => {\n return fetchGraphQl(UPDATE_PRODUCTS_FROM_CART_MUTATION, {\n variables: {\n cartId,\n cartItems: items.map(({ uid, quantity, giftOptions }) => ({\n cart_item_uid: uid,\n quantity,\n ...giftOptions,\n })),\n },\n }).then(({ errors, data }) => {\n // Collect individual item errors from the response using the new function\n const updatedItemsErrors = collectCartItemErrors(\n data?.updateCartItems?.cart?.itemsV2.items || [],\n items.map((item) => item.uid)\n );\n\n // handle errors\n const _errors = [\n ...(data?.updateCartItems?.user_errors ?? []),\n ...(errors ?? []),\n ...updatedItemsErrors,\n ];\n\n // transform cart\n const payload =\n data?.updateCartItems && transformCart(data.updateCartItems.cart);\n\n // Emit data event\n if (payload) {\n events.emit('cart/data', payload);\n }\n\n if (_errors.length > 0) return handleFetchError(_errors);\n\n // No errors, emit updated event\n events.emit('cart/updated', payload);\n\n // emit product updated events\n if (payload) {\n const updatedItems = payload.items.filter(\n (item: CartModel['items'][number]) =>\n items.some((updateItem) => updateItem.uid === item.uid)\n );\n\n events.emit('cart/product/updated', updatedItems);\n }\n\n // data collection\n if (payload) {\n // Publish cart update events\n publishCartUpdateEvents(payload, items, state.locale ?? 'en-US');\n }\n\n return payload;\n });\n};\n"],"names":["ADD_PRODUCTS_TO_CART_MUTATION","CART_FRAGMENT","UPDATE_PRODUCTS_FROM_CART_MUTATION","collectCartItemErrors","cartItems","updatedItemUIDs","itemErrors","item","uid","_a","error","getCartItems","items","currentCartItems","itemsToAdd","itemsToRemove","itemsToUpdate","currentItem","cartItem","currentItemOptions","sku","parentSku","optionsUIDs","enteredOptions","quantity","customFields","optionUID","DELETE_ITEM_QUANTITY","updateProductsFromCart","cartId","state","cart","getPersistedCartData","results","fetchGraphQl","selected_options","entered_options","errors","data","updatedItemsErrors","_b","_errors","_c","handleFetchError","updateProductQuantities","transformCart","_d","payload","events","publishCartUpdateEvents","giftOptions","updatedItems","updateItem"],"mappings":"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"}
1
+ {"version":3,"file":"updateProductsFromCart.js","sources":["/@dropins/storefront-cart/src/api/addProductsToCart/graphql/AddProductsToCartMutation.ts","/@dropins/storefront-cart/src/api/updateProductsFromCart/graphql/UpdateProductsMutation.ts","/@dropins/storefront-cart/src/api/updateProductsFromCart/updateProductsFromCart.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CART_FRAGMENT } from '@/cart/api/graphql/CartFragment';\n\nexport const ADD_PRODUCTS_TO_CART_MUTATION = `\n mutation ADD_PRODUCTS_TO_CART_MUTATION(\n $cartId: String!, \n $cartItems: [CartItemInput!]!,\n $pageSize: Int! = 100,\n $currentPage: Int! = 1,\n $itemsSortInput: QuoteItemsSortInput! = {field: CREATED_AT, order: DESC}\n ) {\n addProductsToCart(\n cartId: $cartId\n cartItems: $cartItems\n ) {\n cart {\n ...CART_FRAGMENT\n }\n user_errors {\n code\n message\n }\n }\n }\n \n ${CART_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CART_FRAGMENT } from '@/cart/api/graphql/CartFragment';\n\nexport const UPDATE_PRODUCTS_FROM_CART_MUTATION = `\n mutation UPDATE_PRODUCTS_FROM_CART_MUTATION(\n $cartId: String!, \n $cartItems: [CartItemUpdateInput!]!,\n $pageSize: Int! = 100,\n $currentPage: Int! = 1,\n $itemsSortInput: QuoteItemsSortInput! = {field: CREATED_AT, order: DESC}\n ) {\n updateCartItems(\n input: {\n cart_id: $cartId\n cart_items: $cartItems\n }\n ) {\n cart {\n ...CART_FRAGMENT\n }\n\n }\n }\n\n ${CART_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { state } from '@/cart/lib/state';\nimport { fetchGraphQl } from '@/cart/api';\nimport { handleFetchError } from '@/cart/lib/fetch-error';\nimport { CartModel } from '@/cart/data/models';\nimport { transformCart } from '@/cart/data/transforms';\nimport { events } from '@adobe-commerce/event-bus';\nimport { publishCartUpdateEvents } from '@/cart/lib/acdl';\nimport { getPersistedCartData } from '@/cart/lib/persisted-data';\nimport { ADD_PRODUCTS_TO_CART_MUTATION } from '../addProductsToCart/graphql/AddProductsToCartMutation';\nimport { UPDATE_PRODUCTS_FROM_CART_MUTATION } from './graphql/UpdateProductsMutation';\n\ntype UpdateProductsFromCart = Array<{\n uid: string;\n quantity: number;\n sku?: string;\n parentSku?: string;\n optionsUIDs?: string[];\n enteredOptions?: { uid: string; value: string }[];\n giftOptions?: {\n gift_wrapping_id?: string | null;\n gift_message: {\n to: string;\n from: string;\n message: string;\n };\n };\n customFields?: Record<string, any>;\n}>;\n\ntype ItemError = {\n message: string;\n path?: string[];\n extensions?: {\n category: string;\n };\n};\n\n/**\n * Collects individual item errors from cart items response\n * @param cartItems - The cart items from the response\n * @param updatedItemUIDs - Array of UIDs of items that were updated\n * @returns Array of ItemError objects\n */\nconst collectCartItemErrors = (\n cartItems: Array<{\n uid: string;\n errors?: Array<{ message: string; code: string }>;\n }>,\n updatedItemUIDs: string[]\n): ItemError[] => {\n const itemErrors: ItemError[] = [];\n\n cartItems\n .filter(\n (item) => item.errors && updatedItemUIDs.some((uid) => uid === item.uid)\n )\n .forEach((item) => {\n item.errors?.forEach((error) => {\n itemErrors.push({\n message: error.message,\n path: [item.uid],\n extensions: {\n category: error.code,\n },\n });\n });\n });\n\n return itemErrors;\n};\n\n/**\n * Creates the arrays of cart items to be sent to the graphql mutations\n *\n * @param items\n * @param currentCartItems\n * @returns {\n * itemsToAdd: Array<{\n * sku: string;\n * parentSku: string;\n * quantity: number;\n * optionsUIDs: string[];\n * enteredOptions: { uid: string; value: string }[];\n * customFields: Record<string, any>;\n * }>\n * itemsToRemove: Array<string>\n * itemsToUpdate: Array<{\n * uid: string;\n * quantity: number;\n * customFields: Record<string, any>;\n * }>\n * }\n */\nconst getCartItems = (\n items: UpdateProductsFromCart,\n currentCartItems: Array<\n CartModel['items'][number] & { customFields?: Record<string, any> }\n >\n) => {\n const itemsToAdd: Array<{\n sku?: string;\n parentSku?: string;\n quantity: number;\n optionsUIDs?: string[];\n enteredOptions?: { uid: string; value: string }[];\n customFields?: Record<string, any>;\n }> = [];\n // Items to remove from the cart will be items that have optionUIDs and\n // their optionUIDs are not the same as their matching entry in the current cart item identified by the uid\n const itemsToRemove: Array<string> = [];\n const itemsToUpdate: Array<{\n uid: string;\n quantity: number;\n giftOptions?: {\n gift_wrapping_id?: string | null;\n gift_message: {\n to: string;\n from: string;\n message: string;\n };\n };\n customFields?: Record<string, any>;\n }> = [];\n\n items.forEach((item) => {\n // Check if the item exists in the cart\n const currentItem = currentCartItems.find(\n (cartItem) => cartItem.uid === item.uid\n );\n\n if (currentItem) {\n if (item.optionsUIDs) {\n const currentItemOptions = Object.values(\n currentItem?.selectedOptionsUIDs ?? {}\n );\n\n // Check if options are exactly the same as current item\n const hasSameOptions =\n item.optionsUIDs.every((optionUID) =>\n currentItemOptions.includes(optionUID)\n ) && item.optionsUIDs.length === currentItemOptions.length;\n\n if (hasSameOptions) {\n // Same item, same options: update quantity directly\n itemsToUpdate.push({\n uid: item.uid,\n quantity: item.quantity,\n giftOptions: item.giftOptions,\n customFields: item.customFields,\n });\n } else {\n // Different options: check if there's another item in cart with these new options\n const existingItemWithNewOptions = currentCartItems.find(\n (cartItem) => {\n const cartItemOptions = Object.values(\n cartItem?.selectedOptionsUIDs ?? {}\n );\n return (\n cartItem.uid !== item.uid && // Different item\n cartItem.sku === currentItem.sku && // Same SKU\n item.optionsUIDs!.every((optionUID) =>\n cartItemOptions.includes(optionUID)\n ) &&\n item.optionsUIDs!.length === cartItemOptions.length\n );\n }\n );\n\n if (existingItemWithNewOptions) {\n // Merge: Update existing item with combined quantity and remove current item\n itemsToUpdate.push({\n uid: existingItemWithNewOptions.uid,\n quantity: existingItemWithNewOptions.quantity + item.quantity,\n giftOptions: item.giftOptions,\n customFields: item.customFields,\n });\n itemsToRemove.push(item.uid);\n } else {\n // Add new item and remove old one\n const { sku, topLevelSku: parentSku } = currentItem;\n const { optionsUIDs, enteredOptions, quantity, customFields } =\n item;\n\n itemsToAdd.push({\n sku,\n parentSku,\n quantity,\n optionsUIDs,\n enteredOptions,\n customFields,\n });\n\n itemsToRemove.push(item.uid);\n }\n }\n } else if (item.customFields) {\n const { sku, topLevelSku: parentSku } = currentItem;\n const { optionsUIDs, enteredOptions, quantity, customFields } = item;\n\n itemsToAdd.push({\n sku,\n parentSku,\n quantity,\n optionsUIDs,\n enteredOptions,\n customFields,\n });\n itemsToRemove.push(item.uid);\n } else {\n itemsToUpdate.push({\n uid: item.uid,\n quantity: item.quantity,\n giftOptions: item.giftOptions,\n customFields: item.customFields,\n });\n }\n } else {\n throw Error(\n `Invalid Cart Item UID: No matching cart entry found for ${item.uid}`\n );\n }\n });\n\n return {\n itemsToAdd,\n itemsToRemove,\n itemsToUpdate,\n };\n};\n\nconst DELETE_ITEM_QUANTITY = 0;\n\nexport const updateProductsFromCart = async (\n items: UpdateProductsFromCart\n): Promise<CartModel | null> => {\n const cartId = state.cartId;\n const cart = getPersistedCartData();\n\n if (!cartId) {\n return Promise.reject(new Error('Cart ID is not set'));\n }\n\n if (!cart) {\n return Promise.reject(new Error('Cart is not set'));\n }\n\n const { itemsToAdd, itemsToRemove, itemsToUpdate } = getCartItems(\n items,\n cart.items\n );\n\n // Array of promises to be resolved\n let results: Array<Promise<CartModel | null>> = [];\n\n // If there are items with options and matching cart items, add the products to the cart and remove the old one.\n // Note: The SKU must be the incoming parent sku and not the current cart item sku.\n if (itemsToAdd.length > 0) {\n results.push(\n fetchGraphQl(ADD_PRODUCTS_TO_CART_MUTATION, {\n variables: {\n cartId,\n cartItems: itemsToAdd.map(\n ({\n parentSku: sku,\n quantity,\n optionsUIDs: selected_options,\n enteredOptions: entered_options,\n customFields,\n }) => ({\n sku,\n quantity,\n selected_options,\n entered_options,\n ...(customFields ? customFields : {}),\n })\n ),\n },\n })\n .then(({ errors, data }) => {\n // Collect individual item errors from the response\n const updatedItemsErrors = collectCartItemErrors(\n data?.addProductsToCart?.cart?.itemsV2.items || [],\n items.map((item) => item.uid)\n );\n\n // handle errors\n const _errors = [\n ...(data?.addProductsToCart?.user_errors ?? []),\n ...(errors ?? []),\n ...updatedItemsErrors,\n ];\n\n if (_errors.length > 0) return handleFetchError(_errors);\n\n if (itemsToRemove.length > 0) {\n // remove the old item\n return updateProductQuantities(\n cartId,\n itemsToRemove.map((uid) => ({\n uid,\n quantity: DELETE_ITEM_QUANTITY, //Delete Item\n }))\n ).catch((error) => {\n return Promise.reject(\n new Error(`Failed to update products in cart: ${error}`)\n );\n });\n }\n return Promise.resolve(transformCart(data?.addProductsToCart?.cart));\n })\n .then((payload) => {\n // emit events\n events.emit('cart/updated', payload);\n events.emit('cart/data', payload);\n\n // Publish cart update events\n publishCartUpdateEvents(payload!, items, state.locale ?? 'en-US');\n\n return Promise.resolve(payload);\n })\n .catch((error) => {\n return Promise.reject(\n new Error(`Failed to add products to cart: ${error}`)\n );\n })\n );\n }\n\n if (itemsToUpdate.length > 0) {\n results.push(\n updateProductQuantities(cartId, itemsToUpdate).catch((error) => {\n return Promise.reject(new Error(error));\n })\n );\n }\n\n // Return the last promise in the results array\n return Promise.all(results).then((results) => results[results.length - 1]);\n};\n\nconst updateProductQuantities = async (\n cartId: string,\n items: UpdateProductsFromCart\n): Promise<CartModel | null> => {\n return fetchGraphQl(UPDATE_PRODUCTS_FROM_CART_MUTATION, {\n variables: {\n cartId,\n cartItems: items.map(({ uid, quantity, giftOptions }) => ({\n cart_item_uid: uid,\n quantity,\n ...giftOptions,\n })),\n },\n }).then(({ errors, data }) => {\n // Collect individual item errors from the response using the new function\n const updatedItemsErrors = collectCartItemErrors(\n data?.updateCartItems?.cart?.itemsV2.items || [],\n items.map((item) => item.uid)\n );\n\n // handle errors\n const _errors = [\n ...(data?.updateCartItems?.user_errors ?? []),\n ...(errors ?? []),\n ...updatedItemsErrors,\n ];\n\n // transform cart\n const payload =\n data?.updateCartItems && transformCart(data.updateCartItems.cart);\n\n // Emit data event\n if (payload) {\n events.emit('cart/data', payload);\n }\n\n if (_errors.length > 0) return handleFetchError(_errors);\n\n // No errors, emit updated event\n events.emit('cart/updated', payload);\n\n // emit product updated events\n if (payload) {\n const updatedItems = payload.items.filter(\n (item: CartModel['items'][number]) =>\n items.some((updateItem) => updateItem.uid === item.uid)\n );\n\n events.emit('cart/product/updated', updatedItems);\n }\n\n // data collection\n if (payload) {\n // Publish cart update events\n publishCartUpdateEvents(payload, items, state.locale ?? 'en-US');\n }\n\n return payload;\n });\n};\n"],"names":["ADD_PRODUCTS_TO_CART_MUTATION","CART_FRAGMENT","UPDATE_PRODUCTS_FROM_CART_MUTATION","collectCartItemErrors","cartItems","updatedItemUIDs","itemErrors","item","uid","_a","error","getCartItems","items","currentCartItems","itemsToAdd","itemsToRemove","itemsToUpdate","currentItem","cartItem","currentItemOptions","optionUID","existingItemWithNewOptions","cartItemOptions","sku","parentSku","optionsUIDs","enteredOptions","quantity","customFields","DELETE_ITEM_QUANTITY","updateProductsFromCart","cartId","state","cart","getPersistedCartData","results","fetchGraphQl","selected_options","entered_options","errors","data","updatedItemsErrors","_b","_errors","_c","handleFetchError","updateProductQuantities","transformCart","_d","payload","events","publishCartUpdateEvents","giftOptions","updatedItems","updateItem"],"mappings":"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"}
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name": "@dropins/storefront-cart", "version": "1.5.1-beta1", "@dropins/tools": "~1.4.0", "license": "SEE LICENSE IN LICENSE.md"}
1
+ {"name": "@dropins/storefront-cart", "version": "1.5.1-beta2", "@dropins/tools": "1.5.0-beta2", "license": "SEE LICENSE IN LICENSE.md"}