@dropins/storefront-cart 1.5.0-beta2 → 1.5.0
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.
- package/chunks/CartSummaryList.js +1 -1
- package/chunks/CartSummaryList.js.map +1 -1
- package/chunks/CartSummaryTable2.js +1 -1
- package/chunks/CartSummaryTable2.js.map +1 -1
- package/chunks/{WarningWithCircle.js → Trash.js} +2 -2
- package/chunks/Trash.js.map +1 -0
- package/containers/CartSummaryList/CartSummaryList.d.ts +34 -0
- package/containers/CartSummaryList.js +1 -1
- package/containers/CartSummaryTable.js +1 -1
- package/containers/MiniCart/MiniCart.d.ts +47 -0
- package/containers/MiniCart.js +1 -1
- package/containers/MiniCart.js.map +1 -1
- package/package.json +1 -1
- package/chunks/WarningWithCircle.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsx as r,jsxs as S,Fragment as R}from"@dropins/tools/preact-jsx-runtime.js";import*as B from"@dropins/tools/preact-compat.js";import{forwardRef as tn,useState as L,useEffect as W,useCallback as bt,useImperativeHandle as nn}from"@dropins/tools/preact-compat.js";import{classes as Q,VComponent as j,Slot as I}from"@dropins/tools/lib.js";import{E as en}from"./EmptyCart2.js";/* empty css */import{Divider as Ut,Skeleton as rn,SkeletonRow as an,InLineAlert as $t,CartList as V,Icon as D,Button as M,Accordion as cn,AccordionSection as on,CartItem as sn,Price as G,Image as ln}from"@dropins/tools/components.js";import"@dropins/tools/preact-hooks.js";import{g as zt}from"./persisted-data.js";import{events as Bt}from"@dropins/tools/event-bus.js";import{s as un}from"./resetCart.js";import{a as dn}from"./createGuestCart.js";import{u as Gt}from"./updateProductsFromCart.js";import{S as Rt,a as mn}from"./WarningWithCircle.js";import{S as gn}from"./ChevronDown.js";import{useText as fn}from"@dropins/tools/i18n.js";const hn=O=>B.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",...O},B.createElement("g",{id:"Large"},B.createElement("rect",{id:"Placement_area","data-name":"Placement area",width:24,height:24,fill:"#fff",opacity:0}),B.createElement("g",{id:"Chevron_right_icon","data-name":"Chevron right icon"},B.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"})))),Xt=({className:O,children:H,heading:N,footer:_,emptyCart:E,products:g,outOfStockMessage:v,variant:b="primary",loading:m=!0,...o})=>r("div",{...o,className:Q(["cart-cart-summary-list",O,`cart-cart-summary-list__background--${b}`]),children:m?r(yn,{}):S(R,{children:[(N||v)&&S("div",{"data-testid":"cart-summary-list-heading-wrapper",className:Q(["cart-cart-summary-list__heading",["cart-cart-summary-list__heading--full-width",!g]]),children:[N&&S(R,{children:[r(j,{node:N,className:"cart-cart-summary-list__heading-text"}),r(Ut,{variant:"primary",className:Q(["cart-cart-summary-list__heading-divider"])})]}),v&&r(j,{node:v,className:"cart-cart-summary-list__out-of-stock-message"})]}),r("div",{className:Q(["cart-cart-summary-list__content",["cart-cart-summary-list__content--empty",!g]]),children:g||r(j,{node:E,className:"cart-cart-summary-list__empty-cart"})}),_&&S(R,{children:[r(Ut,{variant:"primary",className:Q(["cart-cart-summary-list__footer-divider"])}),r(j,{node:_,className:"cart-cart-summary-list__footer-text"})]})]})}),yn=()=>r(rn,{"data-testid":"cart-summary-list-skeleton",className:"cart-cart-summary-list__skeleton",rowGap:"medium",children:r(an,{variant:"row",size:"xlarge",fullWidth:!0,lines:3,multilineGap:"small"})}),vn=tn(({initialData:O=null,hideHeading:H,hideFooter:N,routeProduct:_,routeEmptyCartCTA:E,routeCart:g,onItemUpdate:v,onItemRemove:b,maxItems:m,slots:o,attributesToHide:d=[],enableRemoveItem:X,enableUpdateItemQuantity:J,onItemsErrorsChange:K,accordion:Ft=!1,variant:Y="primary",isLoading:qt,showMaxItems:tt,showDiscount:nt,showSavings:et,quantityType:rt,dropdownOptions:it,undo:P=!1,__testRecentlyRemovedItems:at,...ct},Tt)=>{var Lt;const[U,Wt]=L(!O),[i,jt]=L(O),[p,Vt]=L(new Set),[z,ot]=L(new Map),[w,A]=L(at||[]);W(()=>{},[at,w]);const u=(Lt=un.config)==null?void 0:Lt.shoppingCartDisplaySetting,[x,Jt]=L(tt?!0:!m&&!tt),c=fn({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"}),F=(t,n)=>{Vt(e=>(n?e.add(t):e.delete(t),new Set(e)))},st=(t,n)=>{ot(e=>(n?e.set(t,n):e.delete(t),new Map(e)))};function Kt(t){const n=zt(),e=n==null?void 0:n.items.find(a=>a.uid===t);e&&A(a=>{const s=n.items.findIndex(l=>l.uid===t);return s!==-1&&!a.some(l=>l.item.uid===t)?(Bt.emit("cart/product/removed",{item:e,index:s}),[...a,{item:e,index:s,error:void 0,beingRemoved:!0}]):a})}const Z=(t,n)=>{F(t.uid,!0),ot(new Map),X&&n===0?(Kt(t.uid),Gt([{uid:t.uid,quantity:n}]).then(()=>{b==null||b({item:t})}).finally(()=>{F(t.uid,!1),A(e=>e.map(a=>a.item.uid===t.uid?{...a,beingRemoved:!1}:a))}).catch(e=>{console.warn(e)})):J&&Gt([{uid:t.uid,quantity:n}]).then(()=>{v==null||v({item:t})}).finally(()=>{F(t.uid,!1)}).catch(e=>{st(t.uid,e.message)})},lt=t=>{A(n=>n.filter(e=>e.item.uid!==t))},Yt=bt(()=>{Jt(t=>!t)},[]);W(()=>{const t=Bt.on("cart/data",n=>{jt(n),Wt(!!qt)},{eager:!0});return()=>{t==null||t.off()}},[]),W(()=>{P||A([])},[P]),W(()=>{K&&K(z)},[z,K]);const ut=(t,n)=>{if(d.includes("image"))return;const e={loading:n<4?"eager":"lazy",src:t.image.src,alt:t.image.alt,width:"300",height:"300",params:{width:300}},a=r(ln,{"data-testid":"cart-list-item-image",...e});return r(I,{name:"Thumbnail",slot:o==null?void 0:o.Thumbnail,context:{item:t,defaultImageProps:e},children:_?r("a",{href:_(t),children:a}):a})},dt=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 n={...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(n).length!==0)return n},gt=t=>{var n,e,a,s;return(u==null?void 0:u.price)==="INCLUDING_TAX"?t.discounted?{amount:t.regularPrice.value,currency:t.regularPrice.currency,style:{font:"inherit"},"data-testid":"including-tax-item-price"}:{amount:(n=t.taxedPrice)==null?void 0:n.value,currency:(e=t.taxedPrice)==null?void 0:e.currency,style:{font:"inherit"},"data-testid":"including-tax-item-price"}:{amount:(a=t.regularPrice)==null?void 0:a.value,currency:(s=t.regularPrice)==null?void 0:s.currency,style:{font:"inherit"},"data-testid":"regular-item-price"}},ft=t=>{var n,e;return{amount:(n=t.savingsAmount)==null?void 0:n.value,currency:(e=t.savingsAmount)==null?void 0:e.currency,style:{font:"inherit"},"data-testid":"item-savings-amount"}},ht=t=>(u==null?void 0:u.price)==="INCLUDING_EXCLUDING_TAX"?r(G,{amount:t.rowTotal.value,currency:t.rowTotal.currency,"data-testid":"excluding-tax-total","aria-label":c.regularPrice}):void 0,yt=t=>{var a,s,l,f,y,C,k,$,Qt,Et;const n={"aria-label":c.regularPrice},e=t.discounted?{}:null;return["INCLUDING_TAX","INCLUDING_EXCLUDING_TAX"].includes(u==null?void 0:u.price)?(n.amount=(a=t.rowTotalIncludingTax)==null?void 0:a.value,n.currency=(s=t.rowTotalIncludingTax)==null?void 0:s.currency,n.variant=t.discounted?"strikethrough":"default",n["data-testid"]="including-tax-item-total",e&&(n.amount=(l=t.total)==null?void 0:l.value,n.currency=(f=t.total)==null?void 0:f.currency,e.amount=(y=t.rowTotalIncludingTax)==null?void 0:y.value,e.currency=(C=t.rowTotalIncludingTax)==null?void 0:C.currency,e.sale=!0,e["aria-label"]=c.discountedPrice,e["data-testid"]="discount-total")):(n.amount=(k=t.total)==null?void 0:k.value,n.currency=($=t.total)==null?void 0:$.currency,n.variant=t.discounted?"strikethrough":"default",n["data-testid"]="regular-item-total",e&&(e.amount=(Qt=t.discountedTotal)==null?void 0:Qt.value,e.currency=(Et=t.discountedTotal)==null?void 0:Et.currency,e.sale=!0,e["aria-label"]=c.regularPrice,e["data-testid"]="discount-total")),{totalProps:n,discountProps:e}},vt=t=>{var y,C,k;if(d.includes("warning"))return;const n=z.get(t.uid),e=(y=z.get(t.uid))==null?void 0:y.includes("The requested qty is not available"),a=p.has(t.uid),s=t.insufficientQuantity&&t.stockLevel?t.stockLevel==="noNumber"?c.insufficientQuantityGeneral:c.insufficientQuantity.replace("{inventory}",(C=t.stockLevel)==null?void 0:C.toString()).replace("{count}",t.quantity.toString()):"",l=t.lowInventory&&t.onlyXLeftInStock&&c.lowInventory.replace("{count}",(k=t.onlyXLeftInStock)==null?void 0:k.toString()),f=!t.outOfStock&&n&&e?c.notAvailableMessage:n;return!a&&(n||t.insufficientQuantity||t.lowInventory)?S("span",{"data-testid":"item-warning",children:[r(D,{source:mn,size:"16"}),f||s||l]}):void 0},pt=t=>d!=null&&d.includes("alert")?void 0:!p.has(t.uid)&&t.outOfStock?S("span",{"data-testid":"item-alert",children:[r(D,{source:Rt,size:"16"}),c.outOfStockAlert]}):void 0,Ct=t=>r(I,{name:"ProductAttributes",slot:o==null?void 0:o.ProductAttributes,context:{item:t}}),kt=t=>{if(!d.includes("sku"))return r("span",{"data-testid":"cart-list-item-sku",children:t.sku})},It=t=>r(I,{name:"Footer",slot:o==null?void 0:o.Footer,context:{item:t,handleItemsLoading:F,handleItemsError:st,onItemUpdate:v}}),St=t=>i!=null&&i.totalQuantity?i.items.filter(t).map((n,e)=>{var f;const{totalProps:a,discountProps:s}=yt(n),l=r(sn,{updating:p==null?void 0:p.has(n.uid),loading:U,"data-testid":`cart-list-item-entry-${n.uid}`,image:ut(n,e),title:dt(n),sku:kt(n),price:d.includes("price")?void 0:r(G,{...gt(n)}),quantity:d.includes("quantity")?void 0:n.quantity,total:S(R,{children:[d.includes("total")?void 0:r(G,{...a}),d.includes("totalDiscount")?void 0:s&&r(G,{...s})]}),attributes:Ct(n),configurations:mt(n),totalExcludingTax:d.includes("totalExcludingTax")?void 0:ht(n),taxIncluded:(u==null?void 0:u.price)==="INCLUDING_TAX",taxExcluded:!d.includes("totalExcludingTax")&&(u==null?void 0:u.price)==="INCLUDING_EXCLUDING_TAX",warning:vt(n),alert:pt(n),quantityType:rt,dropdownOptions:it,onQuantity:J&&!p.has(n.uid)?y=>{Z(n,y)}:void 0,onRemove:X&&!p.has(n.uid)?()=>Z(n,0):void 0,discount:nt&&n.discounted&&n.discountPercentage?r("div",{"data-testid":"item-discount-percent",children:c.discountPercent.replace("{discount}",((f=n.discountPercentage)==null?void 0:f.toString())??"")}):void 0,savings:et&&n.discounted&&n.savingsAmount?S("div",{children:[r("span",{children:r(G,{...ft(n)})})," ",c.savingsAmount]}):void 0,footer:It(n)},n.uid);return r(I,{name:"CartItem",slot:o==null?void 0:o.CartItem,context:{item:n,index:e,enableUpdateItemQuantity:J,enableRemoveItem:X,itemsLoading:p,loading:U,attributesToHide:d,cartTaxesConfig:u,quantityType:rt,dropdownOptions:it,showDiscount:nt,showSavings:et,dictionary:c,getImage:ut,getTitle:dt,getSku:kt,getPriceProps:gt,getTotalPriceProps:yt,getProductAttributes:Ct,getConfiguration:mt,getTotalExcludingTax:ht,getWarning:vt,getAlert:pt,getFooter:It,getSavingsAmount:ft},children:l},n.uid)}):null,_t=r(I,{name:"Heading",slot:o==null?void 0:o.Heading,context:{count:i==null?void 0:i.totalQuantity},children:r("div",{"data-testid":"default-cart-heading",children:c.heading.replace("({count})",i!=null&&i.totalQuantity?`(${i==null?void 0:i.totalQuantity.toString()})`:"")})}),Zt=_t.props.children.props.children,Dt=()=>{const t=i==null?void 0:i.items.filter(n=>n.outOfStock);t==null||t.forEach(n=>{Z(n,0)})},Mt=St(t=>t.outOfStock||t.insufficientQuantity||!1),wt=i!=null&&i.hasOutOfStockItems?r($t,{"data-testid":"cart-out-of-stock-message",icon:r(D,{source:Rt,size:"16"}),itemList:r(V,{"data-testid":"out-of-stock-cart-items",children:Mt}),type:"warning",heading:c.outOfStockHeading,description:c.outOfStockDescription,variant:"primary",actionButtonPosition:"bottom",additionalActions:i!=null&&i.hasFullyOutOfStockItems&&X?[{label:c.removeAction,onClick:Dt}]:void 0}):void 0,h=St(t=>!t.outOfStock&&!t.insufficientQuantity),At=x?Math.max(m||5,5):Math.min((i==null?void 0:i.totalQuantity)||5,5),Ot=(i==null?void 0:i.totalQuantity)>At,Ht=Ot&&!x&&At!=m,q=i!=null&&i.totalQuantity&&h?r(I,{name:"Footer",slot:o==null?void 0:o.CartSummaryFooter,context:{displayMaxItems:x,routeCart:g},"data-testid":"cart-cart-summary-footer-slot",className:"cart-cart-summary-footer",children:Ot?Ht?r(M,{className:"cart-cart-summary-list-footer__action",onClick:Yt,"data-testid":"view-more-items-button",variant:"tertiary",children:c.viewMore}):g&&r(M,{className:"cart-cart-summary-list-footer__action",href:g(),variant:"tertiary","data-testid":"view-cart-or-less-items-button",children:c.viewAll}):g&&r(M,{className:"cart-cart-summary-list-footer__action",href:g(),variant:"tertiary","data-testid":"view-cart-button",children:c.viewAll})}):null,Nt=()=>{if(!(i!=null&&i.items))return null;const t=[],n=i.items,e=o==null?void 0:o.UndoBanner,a=x?Math.max(m||(i==null?void 0:i.totalQuantity),5):Math.min(m??5,5);for(let s=0;s<=a;s++)P&&w.filter(l=>l.index===s).forEach(({item:l,error:f,beingRemoved:y})=>{var k,$;const C=r($t,{type:f?"error":"info",heading:y?(k=c.itemBeingRemoved)==null?void 0:k.replace("{product}",l.name):($=c.itemRemoved)==null?void 0:$.replace("{product}",l.name),description:f||c.itemRemovedDescription,variant:"primary",actionButtonPosition:"bottom",additionalActions:y?[]:[{label:c.undoAction,onClick:()=>T(l.uid),"aria-label":`${c.undoAction} remove ${l.name}`},{label:c.dismissAction,onClick:()=>lt(l.uid),"aria-label":`${c.dismissAction} undo for ${l.name}`}]},`undo-banner-${l.uid}`);t.push(e?r(I,{name:"UndoBanner",slot:e,context:{item:l,loading:U,error:f,onUndo:()=>T(l.uid),onDismiss:()=>lt(l.uid)},children:C},`undo-banner-${l.uid}`):C)}),s<a&&s<n.length&&t.push((h==null?void 0:h[s])||null);return r(V,{"data-testid":"cart-list",children:t})},T=bt(async t=>{A(e=>e.map(a=>a.item.uid===t?{...a,loading:!0,error:void 0}:a));const n=w.find(e=>e.item.uid===t);if(n)try{await dn([{sku:n.item.sku,parentSku:n.item.topLevelSku,quantity:n.item.quantity,optionsUIDs:n.item.bundleOptionsUIDs||(n.item.selectedOptionsUIDs?Object.values(n.item.selectedOptionsUIDs):void 0),enteredOptions:n.item.customizableOptions?Object.entries(n.item.customizableOptions).map(([e,a])=>({uid:e,value:a})):void 0}]),A(e=>e.filter(a=>a.item.uid!==t))}catch(e){A(a=>a.map(s=>s.item.uid===t?{...s,error:(e==null?void 0:e.message)||"Failed to restore item."}:s))}},[w]);nn(Tt,()=>({handleUndo:T}),[T]);const Pt=r(R,{children:P&&w.length>0?Nt():r(I,{name:"EmptyCart",slot:o==null?void 0:o.EmptyCart,context:{},children:r(en,{"data-testid":"empty-cart",ctaLinkURL:E==null?void 0:E()})})}),xt=i!=null&&i.totalQuantity||P&&w.length>0?P?w.length>0?Nt():r(V,{"data-testid":"cart-list",children:h==null?void 0:h.slice(0,x?Math.max(m||(i==null?void 0:i.totalQuantity),5):Math.min(m??5,5))}):r(V,{"data-testid":"cart-list",children:h==null?void 0:h.slice(0,x?Math.max(m||(i==null?void 0:i.totalQuantity),5):Math.min(m??5,5))}):null;return Ft?r(cn,{"data-testid":"cart-summary-list-accordion",className:Q(["cart-cart-summary-list-accordion",`cart-cart-summary-list__background--${Y}`]),iconOpen:hn,iconClose:gn,children:r(on,{title:Zt,"data-testid":"cart-summary-list-accordion__section",open:!0,renderContentWhenClosed:!0,children:r(Xt,{...ct,"aria-expanded":!0,"aria-label":"TEST",className:"cart-cart-summary-list-accordion__list",loading:U,footer:N?void 0:q||(g?q:void 0),emptyCart:Pt,products:xt,outOfStockMessage:wt,variant:Y})})}):r(Xt,{...ct,heading:H?void 0:_t,footer:N?void 0:q||(g?q:void 0),loading:U,emptyCart:Pt,products:xt,outOfStockMessage:wt,variant:Y})});vn.getInitialData=async function(){return zt()};export{vn as C};
|
|
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};
|
|
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} 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} 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 };\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\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 });\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 // 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={getTitle(item)}\n sku={getSku(item)}\n price={\n attributesToHide.includes('price') ? undefined : (\n <Price {...getPriceProps(item)} />\n )\n }\n quantity={\n attributesToHide.includes('quantity')\n ? undefined\n : item.quantity\n }\n total={\n <>\n {attributesToHide.includes('total') ? undefined : (\n <Price {...totalProps} />\n )}\n {attributesToHide.includes('totalDiscount')\n ? undefined\n : discountProps && <Price {...discountProps} />}\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 \n {dictionary.savingsAmount}\n </div>\n ) : undefined\n }\n footer={getFooter(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","getCartItemEntries","filterCallback","defaultCartItem","CartItem","newQuantity","headingSection","handleRemoveOutOfStockItems","outOfStockItems","outOfStockEntries","InLineAlert","CartList","mainProductEntries","numOfVisibleItems","hasHiddenItems","canDisplayMoreItems","footerActions","Button","renderCartListWithUndoBanners","entries","items","UndoBanner","numItemsToShow","beingRemoved","defaultUndoBanner","handleUndo","removed","addProductsToCart","value","useImperativeHandle","EmptyCart","productEntries","Accordion","ChevronRight","ChevronDown","AccordionSection","CartSummaryListComponent"],"mappings":"sgCACA,MAAMA,GAAmBC,GAA0BC,EAAM,cAAc,MAAO,CAAE,GAAI,0BAA2B,YAAa,0CAA2C,MAAO,6BAA8B,MAAO,GAAI,OAAQ,GAAI,QAAS,YAAa,GAAGD,CAAO,EAAkBC,EAAM,cAAc,IAAK,CAAE,GAAI,OAAO,EAAoBA,EAAM,cAAc,OAAQ,CAAE,GAAI,iBAAkB,YAAa,iBAAkB,MAAO,GAAI,OAAQ,GAAI,KAAM,OAAQ,QAAS,CAAG,CAAA,EAAmBA,EAAM,cAAc,IAAK,CAAE,GAAI,qBAAsB,YAAa,sBAAwCA,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,GAAI,UAAW,EAAG,0CAA2C,UAAW,4BAA6B,KAAM,OAAQ,OAAQ,cAAc,CAAE,CAAC,CAAC,CAAC,ECiCnxBC,GAA2D,CAAC,CACvE,UAAAC,EACA,SAAAC,EACA,QAAAC,EACA,OAAAC,EACA,UAAAC,EACA,SAAAC,EACA,kBAAAC,EACA,QAAAC,EAAU,UACV,QAAAC,EAAU,GACV,GAAGX,CACL,IAEIY,EAAC,MAAA,CACE,GAAGZ,EACJ,UAAWa,EAAQ,CACjB,yBACAV,EACA,uCAAuCO,CAAO,EAAA,CAC/C,EAEA,SACCC,EAAAC,EAACE,GAAwB,CAAA,CAAA,EAGrBC,EAAAC,EAAA,CAAA,SAAA,EAAAX,GAAWI,IACXM,EAAC,MAAA,CACC,cAAY,oCACZ,UAAWF,EAAQ,CACjB,kCACA,CAAC,8CAA+C,CAACL,CAAQ,CAAA,CAC1D,EAEA,SAAA,CAAAH,GAEGU,EAAAC,EAAA,CAAA,SAAA,CAAAJ,EAACK,EAAA,CACC,KAAMZ,EACN,UAAU,sCAAA,CACZ,EACAO,EAACM,GAAA,CACC,QAAQ,UACR,UAAWL,EAAQ,CACjB,yCACD,CAAA,CAAA,CAAA,CACH,EACF,EAGDJ,GACCG,EAACK,EAAA,CACC,KAAMR,EACN,UAAU,8CAAA,CAAA,CACZ,CAAA,CAEJ,EAEFG,EAAC,MAAA,CACC,UAAWC,EAAQ,CACjB,kCACA,CAAC,yCAA0C,CAACL,CAAQ,CAAA,CACrD,EAEA,SACCA,GAAAI,EAACK,EAAA,CACC,KAAMV,EACN,UAAU,oCAAA,CAAA,CACZ,CAEJ,EAECD,GAEGS,EAAAC,EAAA,CAAA,SAAA,CAAAJ,EAACM,GAAA,CACC,QAAQ,UACR,UAAWL,EAAQ,CAAC,wCAAwC,CAAC,CAAA,CAC/D,EACAD,EAACK,EAAA,CACC,KAAMX,EACN,UAAU,qCAAA,CAAA,CACZ,CACF,CAAA,CAAA,CAEJ,CAAA,CAAA,CAEJ,EAIEQ,GAA6C,IAE/CF,EAACO,GAAA,CACC,cAAY,6BACZ,UAAU,mCACV,OAAO,SAEP,SAAAP,EAACQ,GAAA,CACC,QAAQ,MACR,KAAK,SACL,UAAW,GACX,MAAO,EACP,aAAa,OAAA,CAAA,CACf,CACF,ECJSlB,GAGTmB,GAIF,CACE,CACE,YAAAC,EAAc,KACd,YAAAC,EACA,WAAAC,EACA,aAAAC,EACA,kBAAAC,EACA,UAAAC,EACA,aAAAC,EACA,aAAAC,EACA,SAAAC,EACA,MAAAC,EACA,iBAAAC,EAAmB,CAAC,EACpB,iBAAAC,EACA,yBAAAC,EACA,oBAAAC,EACA,UAAAC,GAAY,GACZ,QAAA1B,EAAU,UACV,UAAA2B,GACA,aAAAC,GAEA,aAAAC,GACA,YAAAC,GACA,aAAAC,GACA,gBAAAC,GACA,KAAAC,EAAO,GACP,2BAAAC,GACA,GAAG5C,IAEL6C,KACG,QACH,KAAM,CAAClC,EAASmC,EAAU,EAAIC,EAAS,CAACzB,CAAW,EAE7C,CAAC0B,EAAeC,EAAgB,EAAIF,EACxCzB,CACF,EACM,CAAC4B,EAAcC,EAAc,EAAIJ,EAAsB,IAAI,GAAK,EAEhE,CAACK,EAAaC,EAAa,EAAIN,MAC/B,GACN,EAEM,CAACO,EAAsBC,CAAuB,EAAIR,EAQtDH,IAA8B,CAAA,CAAE,EAGlCY,EAAU,IAAM,CAOd,EACC,CAACZ,GAA4BU,CAAoB,CAAC,EAE/C,MAAAG,GAAkBC,GAAAC,GAAM,SAAN,YAAAD,GAAc,2BAEhC,CAACE,EAAiBC,EAAkB,EAAId,EAC5CT,GAAe,GAAO,CAACR,GAAY,CAACQ,EACtC,EAEMwB,EAAaC,GAAQ,CACzB,KAAM,qBACN,MAAO,sBACP,QAAS,oBACT,QAAS,wBACT,UAAW,0BACX,aAAc,6BACd,gBAAiB,gCACjB,OAAQ,uBACR,aAAc,6BACd,qBAAsB,qCACtB,4BAA6B,4CAC7B,kBAAmB,iCACnB,sBAAuB,iCACvB,gBAAiB,+BACjB,aAAc,gCACd,oBAAqB,oCACrB,SAAU,qBACV,QAAS,oBACT,gBAAiB,mCACjB,cAAe,8BACf,iBAAkB,iCAClB,YAAa,4BACb,uBAAwB,uCACxB,WAAY,2BACZ,cAAe,6BAAA,CAChB,EAEKC,EAAqB,CAACC,EAAaN,IAAmB,CAC1DR,GAAgBe,IACdP,EAAQO,EAAK,IAAID,CAAG,EAAIC,EAAK,OAAOD,CAAG,EAChC,IAAI,IAAIC,CAAI,EACpB,CACH,EAEMC,GAAmB,CAACF,EAAaG,IAAqB,CAC1Df,GAAea,IACbE,EAAUF,EAAK,IAAID,EAAKG,CAAO,EAAIF,EAAK,OAAOD,CAAG,EAC3C,IAAI,IAAIC,CAAI,EACpB,CACH,EAGA,SAASG,GAA0BJ,EAAa,CAC9C,MAAMK,EAAOC,GAAqB,EAC5BC,EAAOF,GAAA,YAAAA,EAAM,MAAM,KAAMG,GAAMA,EAAE,MAAQR,GAC3CO,GACFjB,EAAyBW,GAAS,CAC1B,MAAAQ,EAAQJ,EAAK,MAAM,UAAWG,GAAMA,EAAE,MAAQR,CAAG,EACnD,OAAAS,IAAU,IAAM,CAACR,EAAK,KAAMS,GAAMA,EAAE,KAAK,MAAQV,CAAG,GAEtDW,GAAO,KAAK,uBAAwB,CAAE,KAAAJ,EAAM,MAAAE,EAAO,EAC5C,CACL,GAAGR,EACH,CAAE,KAAAM,EAAM,MAAAE,EAAO,MAAO,OAAW,aAAc,EAAK,CACtD,GAEKR,CAAA,CACR,CACH,CAGI,MAAAW,EAA2B,CAC/BL,EACAM,IACG,CAEgBd,EAAAQ,EAAK,IAAK,EAAI,EAGnBnB,GAAA,IAAI,GAAK,EAEnBpB,GAAoB6C,IAAa,GAEnCT,GAA0BG,EAAK,GAAG,EAEXO,GAAA,CAAC,CAAE,IAAKP,EAAK,IAAK,SAAAM,CAAU,CAAA,CAAC,EACjD,KAAK,IAAM,CACKjD,GAAA,MAAAA,EAAA,CAAE,KAAA2C,GAAM,CACxB,EACA,QAAQ,IAAM,CACMR,EAAAQ,EAAK,IAAK,EAAK,EAClCjB,EAAyBW,GACvBA,EAAK,IAAKS,GACRA,EAAE,KAAK,MAAQH,EAAK,IAAM,CAAE,GAAGG,EAAG,aAAc,EAAA,EAAUA,CAAA,CAE9D,CAAA,CACD,EACA,MAAOK,GAAe,CACrB,QAAQ,KAAKA,CAAK,CAAA,CACnB,GAKD9C,GAAA6C,GAAuB,CAAC,CAAE,IAAKP,EAAK,IAAK,SAAAM,CAAU,CAAA,CAAC,EACjD,KAAK,IAAM,CACKlD,GAAA,MAAAA,EAAA,CAAE,KAAA4C,GAAM,CACxB,EACA,QAAQ,IAAM,CACMR,EAAAQ,EAAK,IAAK,EAAK,CAAA,CACnC,EACA,MAAOQ,GAAiB,CACNb,GAAAK,EAAK,IAAKQ,EAAM,OAAO,CAAA,CACzC,CAET,EAEMC,GAAiBhB,GAAgB,CACbV,EAACW,GAASA,EAAK,OAAQS,GAAMA,EAAE,KAAK,MAAQV,CAAG,CAAC,CAC1E,EAGMiB,GAAqBC,GAAY,IAAM,CACxBtB,GAACK,GAAS,CAACA,CAAI,CACpC,EAAG,EAAE,EAELV,EAAU,IAAM,CACd,MAAM4B,EAAgBR,GAAO,GAC3B,YACCS,GAAyB,CACxBpC,GAAiBoC,CAAoB,EAC1BvC,GAAA,CAAC,CAACT,EAAS,CACxB,EACA,CAAE,MAAO,EAAK,CAChB,EAEA,MAAO,IAAM,CACX+C,GAAA,MAAAA,EAAe,KACjB,CACF,EAAG,EAAE,EAGL5B,EAAU,IAAM,CACTb,GACHY,EAAwB,CAAA,CAAE,CAC5B,EACC,CAACZ,CAAI,CAAC,EAGTa,EAAU,IAAM,CACVrB,GACFA,EAAoBiB,CAAW,CACjC,EACC,CAACA,EAAajB,CAAmB,CAAC,EAG/B,MAAAmD,GAAW,CAACd,EAA6BE,IAAkB,CAC3D,GAAA1C,EAAiB,SAAS,OAAO,EAC5B,OAGT,MAAMuD,EAAgC,CACpC,QAASb,EAAQ,EAAI,QAAU,OAC/B,IAAKF,EAAK,MAAM,IAChB,IAAKA,EAAK,MAAM,IAChB,MAAO,MACP,OAAQ,MACR,OAAQ,CAAE,MAAO,GAAI,CACvB,EAEMgB,IACHC,GAAA,CAAM,cAAY,uBAAwB,GAAGF,EAAmB,EAGjE,OAAA3E,EAAC8E,EAAA,CACC,KAAK,YACL,KAAM3D,GAAA,YAAAA,EAAO,UACb,QAAS,CACP,KAAAyC,EACA,kBAAAe,CACF,EAEC,SAAA9D,EACEb,EAAA,IAAE,CAAA,KAAMa,EAAa+C,CAAI,EAAI,UAAe,CAAA,EAE7CgB,CAAA,CAEJ,CAEJ,EAEMG,GAAYnB,GAAgC,CAC5C,GAAA,CAAAxC,EAAiB,SAAS,MAAM,EAKjC,OAAApB,EAAA,OAAA,CAAK,cAAY,uBACf,aACE,IAAA,CAAE,KAAMa,EAAa+C,CAAI,EAAI,SAAAA,EAAK,KAAK,EAExCA,EAAK,KAET,CAEJ,EAEMoB,GAAoBpB,GAAgC,CACpD,GAAAxC,EAAiB,SAAS,gBAAgB,EACrC,OAGT,MAAM6D,EAAgB,CACpB,GAAGrB,EAAK,cACR,GAAGA,EAAK,gBACR,GAAGA,EAAK,oBACR,GAAIA,EAAK,UAAY,CAAE,CAACV,EAAW,SAAS,EAAGU,EAAK,SAAA,EAAc,KAClE,GAAIA,EAAK,gBAAkBA,EAAK,UAC5B,CACE,CAACV,EAAW,SAAS,EAAG,GAAGU,EAAK,SAAS,KAAKA,EAAK,cAAc,GAAA,EAEnE,KACJ,GAAIA,EAAK,OAAS,CAAE,CAACV,EAAW,MAAM,EAAGU,EAAK,MAAA,EAAW,KACzD,GAAIA,EAAK,aAAeA,EAAK,OACzB,CACE,CAACV,EAAW,MAAM,EAAG,GAAGU,EAAK,MAAM,KAAKA,EAAK,WAAW,GAAA,EAE1D,CAAC,EACL,GAAIA,EAAK,QAAU,CAAE,CAACV,EAAW,OAAO,EAAGU,EAAK,OAAA,EAAY,KAC5D,GAAIA,EAAK,OAASA,EAAK,MAAM,MACzBA,EAAK,MAAM,MAAQ,EACjB,CACE,CAACV,EAAW,MAAM,QAChB,UACAU,EAAK,MAAM,MAAM,SAAS,CAAA,CAC3B,EAAGA,EAAK,MAAM,MAAA,EAEjB,CACE,CAACV,EAAW,KAAK,QACf,UACAU,EAAK,MAAM,MAAM,SAAS,CAAA,CAC3B,EAAGA,EAAK,MAAM,MAAA,EAEnB,IACN,EAEA,GAAI,OAAO,KAAKqB,CAAa,EAAE,SAAW,EAInC,OAAAA,CACT,EAEMC,GAAiBtB,GAAgC,aACrD,OAAOf,GAAA,YAAAA,EAAiB,SAAU,gBAC9Be,EAAK,WACH,CACE,OAAQA,EAAK,aAAa,MAC1B,SAAUA,EAAK,aAAa,SAC5B,MAAO,CAAE,KAAM,SAAU,EACzB,cAAe,0BAAA,EAEjB,CACE,QAAQd,EAAAc,EAAK,aAAL,YAAAd,EAAiB,MACzB,UAAUqC,EAAAvB,EAAK,aAAL,YAAAuB,EAAiB,SAC3B,MAAO,CAAE,KAAM,SAAU,EACzB,cAAe,0BAAA,EAEnB,CACE,QAAQC,EAAAxB,EAAK,eAAL,YAAAwB,EAAmB,MAC3B,UAAUC,EAAAzB,EAAK,eAAL,YAAAyB,EAAmB,SAC7B,MAAO,CAAE,KAAM,SAAU,EACzB,cAAe,oBACjB,CACN,EAEMC,GAAoB1B,GAAgC,SACjD,MAAA,CACL,QAAQd,EAAAc,EAAK,gBAAL,YAAAd,EAAoB,MAC5B,UAAUqC,EAAAvB,EAAK,gBAAL,YAAAuB,EAAoB,SAC9B,MAAO,CAAE,KAAM,SAAU,EACzB,cAAe,qBACjB,CACF,EAEMI,GAAwB3B,IACrBf,GAAA,YAAAA,EAAiB,SAAU,0BAChC7C,EAACwF,EAAA,CACC,OAAQ5B,EAAK,SAAS,MACtB,SAAUA,EAAK,SAAS,SACxB,cAAY,sBACZ,aAAYV,EAAW,YAAA,CAAA,EAEvB,OAGAuC,GAAsB7B,GAAgC,2BAC1D,MAAM8B,EAAyB,CAC7B,aAAcxC,EAAW,YAC3B,EACMyC,EAAmC/B,EAAK,WAAa,CAAK,EAAA,KAG9D,MAAA,CAAC,gBAAiB,yBAAyB,EAAE,SAC3Cf,GAAA,YAAAA,EAAiB,KAAA,GAGR6C,EAAA,QAAY5C,EAAAc,EAAK,uBAAL,YAAAd,EAA2B,MACvC4C,EAAA,UAAcP,EAAAvB,EAAK,uBAAL,YAAAuB,EAA2B,SACpDO,EAAW,QAAa9B,EAAK,WAAa,gBAAkB,UAE5D8B,EAAW,aAAa,EAAI,2BAExBC,IACSD,EAAA,QAAYN,EAAAxB,EAAK,QAAL,YAAAwB,EAAY,MACxBM,EAAA,UAAcL,EAAAzB,EAAK,QAAL,YAAAyB,EAAY,SAEvBM,EAAA,QAAYC,EAAAhC,EAAK,uBAAL,YAAAgC,EAA2B,MACvCD,EAAA,UAAcE,EAAAjC,EAAK,uBAAL,YAAAiC,EAA2B,SACvDF,EAAc,KAAU,GACVA,EAAA,YAAY,EAAIzC,EAAW,gBAEzCyC,EAAc,aAAa,EAAI,oBAGtBD,EAAA,QAAYI,EAAAlC,EAAK,QAAL,YAAAkC,EAAY,MACxBJ,EAAA,UAAcK,EAAAnC,EAAK,QAAL,YAAAmC,EAAY,SACrCL,EAAW,QAAa9B,EAAK,WAAa,gBAAkB,UAE5D8B,EAAW,aAAa,EAAI,qBAExBC,IACYA,EAAA,QAAYK,GAAApC,EAAK,kBAAL,YAAAoC,GAAsB,MAClCL,EAAA,UAAcM,GAAArC,EAAK,kBAAL,YAAAqC,GAAsB,SAClDN,EAAc,KAAU,GACVA,EAAA,YAAY,EAAIzC,EAAW,aAEzCyC,EAAc,aAAa,EAAI,mBAI5B,CACL,WAAAD,EACA,cAAAC,CACF,CACF,EAEMO,GAActC,GAAgC,WAC9C,GAAAxC,EAAiB,SAAS,SAAS,EAC9B,OAGT,MAAMgD,EAAQ5B,EAAY,IAAIoB,EAAK,GAAG,EAChCuC,GAAgBrD,EAAAN,EACnB,IAAIoB,EAAK,GAAG,IADO,YAAAd,EAElB,SAAS,sCACPsD,EAAgB9D,EAAa,IAAIsB,EAAK,GAAG,EAEzCyC,EACJzC,EAAK,sBAAwBA,EAAK,WAC9BA,EAAK,aAAe,WAClBV,EAAW,4BACXA,EAAW,qBACR,QAAQ,eAAeiC,EAAAvB,EAAK,aAAL,YAAAuB,EAAiB,UAAU,EAClD,QAAQ,UAAWvB,EAAK,SAAS,SAAS,CAAC,EAChD,GAEA0C,EACJ1C,EAAK,cACLA,EAAK,kBACLV,EAAW,aAAa,QACtB,WACAkC,EAAAxB,EAAK,mBAAL,YAAAwB,EAAuB,UACzB,EAEImB,EACJ,CAAC3C,EAAK,YAAcQ,GAAS+B,EACzBjD,EAAW,oBACXkB,EAEC,MAAA,CAACgC,IACLhC,GAASR,EAAK,sBAAwBA,EAAK,cAC5CzD,EAAC,OAAK,CAAA,cAAY,eAChB,SAAA,GAACqG,EAAK,CAAA,OAAQC,GAAmB,KAAM,KAAM,EAC5CF,GAAwBF,GAA4BC,CAAA,CAAA,CACvD,EACE,MACN,EAEMI,GAAY9C,GACZxC,GAAA,MAAAA,EAAkB,SAAS,SACtB,OAIF,CAFekB,EAAa,IAAIsB,EAAK,GAAG,GAEtBA,EAAK,aAC3B,OAAA,CAAK,cAAY,aAChB,SAAA,GAAC4C,EAAK,CAAA,OAAQG,GAAY,KAAM,KAAM,EACrCzD,EAAW,eAAA,CAAA,CACd,EACE,OAGA0D,GAAwBhD,GAE1B5D,EAAC8E,EAAA,CACC,KAAK,oBACL,KAAM3D,GAAA,YAAAA,EAAO,kBACb,QAAS,CACP,KAAAyC,CAAA,CACF,CACF,EAIEiD,GAAUjD,GAAgC,CAC1C,GAAA,CAAAxC,EAAiB,SAAS,KAAK,EAG3B,OAAApB,EAAA,OAAA,CAAK,cAAY,qBAAsB,WAAK,IAAI,CAC1D,EAEM8G,GAAalD,GAEf5D,EAAC8E,EAAA,CACC,KAAK,SACL,KAAM3D,GAAA,YAAAA,EAAO,OACb,QAAS,CAAE,KAAAyC,EAAM,mBAAAR,EAAoB,iBAAAG,GAAkB,aAAAvC,CAAa,CAAA,CACtE,EAKE+F,GACJC,GAEO5E,GAAA,MAAAA,EAAe,cAClBA,EAAc,MAAM,OAAO4E,CAAc,EAAE,IAAI,CAACpD,EAAME,IAAU,OAC9D,KAAM,CAAE,WAAA4B,EAAY,cAAAC,GAAkBF,GAAmB7B,CAAI,EAEvDqD,EACJjH,EAACkH,GAAA,CACC,SAAU5E,GAAA,YAAAA,EAAc,IAAIsB,EAAK,KACjC,QAAA7D,EAEA,cAAa,wBAAwB6D,EAAK,GAAG,GAC7C,MAAOc,GAASd,EAAME,CAAK,EAC3B,MAAOiB,GAASnB,CAAI,EACpB,IAAKiD,GAAOjD,CAAI,EAChB,MACExC,EAAiB,SAAS,OAAO,EAAI,OAClCpB,EAAAwF,EAAO,CAAA,GAAGN,GAActB,CAAI,EAAG,EAGpC,SACExC,EAAiB,SAAS,UAAU,EAChC,OACAwC,EAAK,SAEX,MAEKzD,EAAAC,EAAA,CAAA,SAAA,CAAAgB,EAAiB,SAAS,OAAO,EAAI,SACnCoE,EAAA,CAAO,GAAGE,EAAY,EAExBtE,EAAiB,SAAS,eAAe,EACtC,OACAuE,GAAiB3F,EAACwF,EAAO,CAAA,GAAGG,CAAe,CAAA,CAAA,EACjD,EAEF,WAAYiB,GAAqBhD,CAAI,EACrC,eAAgBoB,GAAiBpB,CAAI,EACrC,kBACExC,EAAiB,SAAS,mBAAmB,EACzC,OACAmE,GAAqB3B,CAAI,EAE/B,aAAaf,GAAA,YAAAA,EAAiB,SAAU,gBACxC,YACE,CAACzB,EAAiB,SAAS,mBAAmB,IAC9CyB,GAAA,YAAAA,EAAiB,SAAU,0BAE7B,QAASqD,GAAWtC,CAAI,EACxB,MAAO8C,GAAS9C,CAAI,EACpB,aAAA/B,GACA,gBAAAC,GACA,WACER,GAA4B,CAACgB,EAAa,IAAIsB,EAAK,GAAG,EACjDuD,GAAgB,CACflD,EAAyBL,EAAMuD,CAAW,CAAA,EAE5C,OAEN,SACE9F,GAAoB,CAACiB,EAAa,IAAIsB,EAAK,GAAG,EAC1C,IAAMK,EAAyBL,EAAM,CAAC,EACtC,OAEN,SACEjC,IAAgBiC,EAAK,YAAcA,EAAK,mBACrC5D,EAAA,MAAI,CAAA,cAAY,wBACd,SAAAkD,EAAW,gBAAgB,QAC1B,eACAJ,EAAAc,EAAK,qBAAL,YAAAd,EAAyB,aAAc,EACzC,CAAA,CACF,EACE,OAEN,QACElB,IAAegC,EAAK,YAAcA,EAAK,gBACpC,MACC,CAAA,SAAA,CAAC5D,EAAA,QACC,SAACA,EAAAwF,EAAA,CAAO,GAAGF,GAAiB1B,CAAI,CAAG,CAAA,EACrC,EAAO,IAENV,EAAW,aAAA,CAAA,CACd,EACE,OAEN,OAAQ4D,GAAUlD,CAAI,CAAA,EA1EjBA,EAAK,GA2EZ,EAIA,OAAA5D,EAAC8E,EAAA,CAEC,KAAK,WACL,KAAM3D,GAAA,YAAAA,EAAO,SACb,QAAS,CACP,KAAAyC,EACA,MAAAE,EACA,yBAAAxC,EACA,iBAAAD,EACA,aAAAiB,EACA,QAAAvC,EACA,iBAAAqB,EACA,gBAAAyB,EACA,aAAAhB,GACA,gBAAAC,GACA,aAAAH,GACA,YAAAC,GACA,WAAAsB,EACA,SAAAwB,GACA,SAAAK,GACA,OAAA8B,GACA,cAAA3B,GACA,mBAAAO,GACA,qBAAAmB,GACA,iBAAA5B,GACA,qBAAAO,GACA,WAAAW,GACA,SAAAQ,GACA,UAAAI,GACA,iBAAAxB,EACF,EAEC,SAAA2B,CAAA,EA/BIrD,EAAK,GAgCZ,CAEH,CAAA,EACD,KAGAnE,GACJO,EAAC8E,EAAA,CACC,KAAK,UACL,KAAM3D,GAAA,YAAAA,EAAO,QACb,QAAS,CACP,MAAOiB,GAAA,YAAAA,EAAe,aACxB,EAEA,WAAC,MAAA,CAAI,cAAY,uBACd,WAAW,QAAQ,QAClB,YACAA,GAAA,MAAAA,EAAe,cACX,IAAIA,GAAA,YAAAA,EAAe,cAAc,UAAU,IAC3C,EAAA,CAER,CAAA,CAAA,CACF,EAIIgF,GAAiB3H,GAAQ,MAAM,SAAS,MAAM,SAG9C4H,GAA8B,IAAM,CAClC,MAAAC,EAAkBlF,GAAA,YAAAA,EAAe,MAAM,OAC1CwB,GAASA,EAAK,YAGA0D,GAAA,MAAAA,EAAA,QAAS1D,GAAS,CACjCK,EAAyBL,EAAM,CAAC,CAAA,EAEpC,EAEM2D,GAAoBR,GACvBnD,GAASA,EAAK,YAAcA,EAAK,sBAAwB,EAC5D,EAEM/D,GAAoBuC,GAAA,MAAAA,EAAe,mBACvCpC,EAACwH,GAAA,CACC,cAAY,4BACZ,OAAOhB,EAAA,CAAK,OAAQG,GAAY,KAAM,KAAM,EAC5C,WACGc,EAAS,CAAA,cAAY,0BACnB,SACHF,GAAA,EAEF,KAAK,UACL,QAASrE,EAAW,kBACpB,YAAaA,EAAW,sBACxB,QAAQ,UACR,qBAAqB,SACrB,kBACEd,GAAA,MAAAA,EAAe,yBAA2Bf,EACtC,CACE,CACE,MAAO6B,EAAW,aAClB,QAASmE,EAAA,CACX,EAEF,MAAA,CAAA,EAGN,OAGEK,EAAqBX,GACxBnD,GAAS,CAACA,EAAK,YAAc,CAACA,EAAK,oBACtC,EAEM+D,GAAoB3E,EACtB,KAAK,IAAI9B,GAAY,EAAG,CAAC,EACzB,KAAK,KAAIkB,GAAA,YAAAA,EAAe,gBAAiB,EAAG,CAAC,EAE3CwF,IAAiBxF,GAAA,YAAAA,EAAe,eAAgBuF,GAEhDE,GACJD,IAAkB,CAAC5E,GAAmB2E,IAAqBzG,EAEvD4G,EACJ1F,GAAA,MAAAA,EAAe,eAAiBsF,EAC9B1H,EAAC8E,EAAA,CACC,KAAK,SACL,KAAM3D,GAAA,YAAAA,EAAO,kBACb,QAAS,CAAE,gBAAA6B,EAAiB,UAAAjC,CAAU,EACtC,cAAY,gCACZ,UAAU,2BAET,YACC8G,GACE7H,EAAC+H,EAAA,CACC,UAAU,wCACV,QAASzD,GACT,cAAY,yBACZ,QAAQ,WAEP,SAAWpB,EAAA,QAAA,GAGdnC,GACEf,EAAC+H,EAAA,CACC,UAAU,wCACV,KAAMhH,EAAU,EAChB,QAAQ,WACR,cAAY,iCAEX,SAAWmC,EAAA,OAAA,GAKlBnC,GACEf,EAAC+H,EAAA,CACC,UAAU,wCACV,KAAMhH,EAAU,EAChB,QAAQ,WACR,cAAY,mBAEX,SAAWmC,EAAA,OAAA,CAAA,CACd,CAAA,EAIJ,KAEA8E,GAAgC,IAAM,CACtC,GAAA,EAAC5F,GAAA,MAAAA,EAAe,OAAc,OAAA,KAClC,MAAM6F,EAA4B,CAAC,EAC7BC,EAAQ9F,EAAc,MACtB+F,EAAahH,GAAA,YAAAA,EAAO,WAGpBiH,EAAiBpF,EACnB,KAAK,IAAK9B,IAAWkB,GAAA,YAAAA,EAAe,eAA0B,CAAC,EAC/D,KAAK,IAAIlB,GAAY,EAAG,CAAC,EAG7B,QAAS2C,EAAI,EAAGA,GAAKuE,EAAgBvE,IAE/B9B,GACFW,EACG,OAAQqB,GAAMA,EAAE,QAAUF,CAAC,EAC3B,QAAQ,CAAC,CAAE,KAAAD,EAAM,MAAAQ,EAAO,aAAAiE,KAAmB,SAC1C,MAAMC,EACJtI,EAACwH,GAAA,CAEC,KAAMpD,EAAQ,QAAU,OACxB,QACEiE,GACIvF,EAAAI,EAAW,mBAAX,YAAAJ,EAA6B,QAC3B,YACAc,EAAK,OAEPuB,EAAAjC,EAAW,cAAX,YAAAiC,EAAwB,QAAQ,YAAavB,EAAK,MAExD,YAAaQ,GAASlB,EAAW,uBACjC,QAAQ,UACR,qBAAqB,SACrB,kBACEmF,EACI,GACA,CACE,CACE,MAAOnF,EAAW,WAClB,QAAS,IAAMqF,EAAW3E,EAAK,GAAG,EAClC,aAAc,GAAGV,EAAW,UAAU,WAAWU,EAAK,IAAI,EAC5D,EACA,CACE,MAAOV,EAAW,cAClB,QAAS,IAAMmB,GAAcT,EAAK,GAAG,EACrC,aAAc,GAAGV,EAAW,aAAa,aAAaU,EAAK,IAAI,EAAA,CACjE,CACF,EA3BD,eAAeA,EAAK,GAAG,EA6B9B,EAGMqE,EAAA,KACNE,EACEnI,EAAC8E,EAAA,CACC,KAAK,aACL,KAAMqD,EACN,QAAS,CACP,KAAAvE,EACA,QAAA7D,EACA,MAAAqE,EACA,OAAQ,IAAMmE,EAAW3E,EAAK,GAAG,EACjC,UAAW,IAAMS,GAAcT,EAAK,GAAG,CACzC,EAGC,SAAA0E,CAAA,EAFI,eAAe1E,EAAK,GAAG,EAAA,EAK9B0E,CAEJ,CAAA,CACD,EAGDzE,EAAIuE,GAAkBvE,EAAIqE,EAAM,QAClCD,EAAQ,MAAKP,GAAA,YAAAA,EAAqB7D,KAAM,IAAI,EAGhD,SAAQ4D,EAAA,CAAS,cAAY,YAAa,SAAQQ,EAAA,CACpD,EAEMM,EAAahE,GACjB,MAAOlB,GAAgB,CACrBV,EAAyBW,GACvBA,EAAK,IAAKS,GACRA,EAAE,KAAK,MAAQV,EAAM,CAAE,GAAGU,EAAG,QAAS,GAAM,MAAO,QAAcA,CAAA,CAErE,EACM,MAAAyE,EAAU9F,EAAqB,KAAMqB,GAAMA,EAAE,KAAK,MAAQV,CAAG,EACnE,GAAKmF,EACD,GAAA,CACF,MAAMC,GAAkB,CACtB,CACE,IAAKD,EAAQ,KAAK,IAClB,UAAWA,EAAQ,KAAK,YACxB,SAAUA,EAAQ,KAAK,SACvB,YACEA,EAAQ,KAAK,oBACZA,EAAQ,KAAK,oBACV,OAAO,OAAOA,EAAQ,KAAK,mBAAmB,EAC9C,QACN,eAAgBA,EAAQ,KAAK,oBACzB,OAAO,QAAQA,EAAQ,KAAK,mBAAmB,EAAE,IAC/C,CAAC,CAACnF,EAAKqF,CAAK,KAAO,CAAE,IAAArF,EAAK,MAAAqF,CAAM,EAAA,EAElC,MAAA,CACN,CACD,EACD/F,EAAyBW,GACvBA,EAAK,OAAQS,GAAMA,EAAE,KAAK,MAAQV,CAAG,CACvC,QACOe,EAAY,CACnBzB,EAAyBW,GACvBA,EAAK,IAAKS,GACRA,EAAE,KAAK,MAAQV,EACX,CAAE,GAAGU,EAAG,OAAOK,GAAA,YAAAA,EAAO,UAAW,2BACjCL,CAAA,CAER,CAAA,CAEJ,EACA,CAACrB,CAAoB,CACvB,EAGAiG,GACE1G,GACA,KAAO,CACL,WAAAsG,CAAA,GAEF,CAACA,CAAU,CACb,EAGM,MAAA5I,KAEDS,EAAA,CAAA,SAAA2B,GAAQW,EAAqB,OAAS,EACrCsF,GAA8B,IAE7BlD,EAAA,CAAK,KAAK,YAAY,KAAM3D,GAAA,YAAAA,EAAO,UAAW,QAAS,GACtD,SAAAnB,EAAC4I,GAAA,CACC,cAAY,aACZ,WAAY9H,GAAA,YAAAA,GAAoB,CAClC,CAAA,CACF,CAAA,CAEJ,EAII+H,GACJzG,GAAA,MAAAA,EAAe,eACdL,GAAQW,EAAqB,OAAS,EACpCX,EAYGW,EAAqB,OAAS,EAChCsF,GAEC,EAAAhI,EAAAyH,EAAA,CAAS,cAAY,YACnB,SAAoBC,GAAA,YAAAA,EAAA,MACnB,EACA1E,EACI,KAAK,IACF9B,IAAWkB,GAAA,YAAAA,EAAe,eAC3B,CAEF,EAAA,KAAK,IAAIlB,GAAY,EAAG,CAAC,EAC/B,CACF,IAxBCuG,EAAS,CAAA,cAAY,YACnB,SAAoBC,GAAA,YAAAA,EAAA,MACnB,EACA1E,EACI,KAAK,IACF9B,IAAWkB,GAAA,YAAAA,EAAe,eAC3B,CAEF,EAAA,KAAK,IAAIlB,GAAY,EAAG,CAAC,EAC/B,CACF,EAgBA,KAEN,OAAOM,GACLxB,EAAC8I,GAAA,CACC,cAAY,8BACZ,UAAW7I,EAAQ,CACjB,mCACA,uCAAuCH,CAAO,EAAA,CAC/C,EACD,SAAUiJ,GACV,UAAWC,GAEX,SAAAhJ,EAACiJ,GAAA,CACC,MAAO7B,GACP,cAAY,uCACZ,KAAM,GACN,wBAAyB,GAEzB,SAAApH,EAACkJ,GAAA,CACE,GAAG9J,GACJ,gBAAe,GACf,aAAY,OACZ,UAAW,yCACX,QAAAW,EACA,OACEa,EACI,OACAkH,IAAkB/G,EAAY+G,EAAgB,QAEpD,UAAAnI,GACA,SAAUkJ,GACV,kBAAAhJ,GACA,QAAAC,CAAA,CAAA,CACF,CAAA,CACF,CAAA,EAGFE,EAACkJ,GAAA,CACE,GAAG9J,GACJ,QAASuB,EAAc,OAAYlB,GACnC,OACEmB,EACI,OACAkH,IAAkB/G,EAAY+G,EAAgB,QAEpD,QAAA/H,EACA,UAAAJ,GACA,SAAUkJ,GACV,kBAAAhJ,GACA,QAAAC,CAAA,CACF,CAAA,CAGN,EAEAR,GAAgB,eAAiB,gBAAkB,CACjD,OAAOqE,GAAqB,CAC9B","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 });\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 \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,4 +1,4 @@
|
|
|
1
1
|
/*! Copyright 2025 Adobe
|
|
2
2
|
All Rights Reserved. */
|
|
3
|
-
import{jsxs as m,jsx as a}from"@dropins/tools/preact-jsx-runtime.js";import{classes as D,VComponent as I,debounce as Ee,Slot as k}from"@dropins/tools/lib.js";import{Button as J,Icon as K,Image as $e,Price as E,Skeleton as De,SkeletonRow as Ae}from"@dropins/tools/components.js";/* empty css */import*as $ from"@dropins/tools/preact-compat.js";import{useState as Ce,useCallback as We,useMemo as Be}from"@dropins/tools/preact-compat.js";import{useState as ae,useCallback as Qe,useEffect as ze,useMemo as Ge}from"@dropins/tools/preact-hooks.js";import{useText as re}from"@dropins/tools/i18n.js";import{events as ve}from"@dropins/tools/event-bus.js";import{s as Ve}from"./resetCart.js";import{u as Ie}from"./updateProductsFromCart.js";import{g as ke}from"./persisted-data.js";import{a as He}from"./createGuestCart.js";import{E as Xe}from"./EmptyCart.js";import{S as Re,a as je}from"./WarningWithCircle.js";import{S as Fe}from"./Close.js";const Ze=n=>$.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",...n},$.createElement("path",{d:"M1 5H23",stroke:"currentColor",strokeWidth:1.5,strokeMiterlimit:10}),$.createElement("path",{d:"M17.3674 22H6.63446C5.67952 22 4.88992 21.2688 4.8379 20.3338L4 5H20L19.1621 20.3338C19.1119 21.2688 18.3223 22 17.3655 22H17.3674Z",stroke:"currentColor",strokeWidth:1.5,strokeMiterlimit:10}),$.createElement("path",{d:"M9.87189 2H14.1281C14.6085 2 15 2.39766 15 2.88889V5H9V2.88889C9 2.39912 9.39006 2 9.87189 2Z",stroke:"currentColor",strokeWidth:1.5,strokeMiterlimit:10}),$.createElement("path",{d:"M8.87402 8.58057L9.39348 17.682",stroke:"currentColor",strokeWidth:1.5,strokeMiterlimit:10}),$.createElement("path",{d:"M14.6673 8.58057L14.146 17.682",stroke:"currentColor",strokeWidth:1.5,strokeMiterlimit:10})),te=({entries:n,className:l,...s})=>{const e=re({itemLabel:"Cart.CartSummaryTable.item",priceLabel:"Cart.CartSummaryTable.price",qtyLabel:"Cart.CartSummaryTable.qty",subtotalLabel:"Cart.CartSummaryTable.subtotal",mobilePriceLabel:"Cart.CartSummaryTable.mobilePrice",mobileQtyLabel:"Cart.CartSummaryTable.mobileQty",mobileSubtotalLabel:"Cart.CartSummaryTable.mobileSubtotal"});return m("div",{...s,className:D(["cart-cart-summary-table",l]),children:[m("div",{className:"cart-cart-summary-table__header",children:[a("div",{className:"cart-cart-summary-table__header-item",children:e.itemLabel}),a("div",{className:"cart-cart-summary-table__header-price",children:e.priceLabel}),a("div",{className:"cart-cart-summary-table__header-qty",children:e.qtyLabel}),a("div",{className:"cart-cart-summary-table__header-subtotal",children:e.subtotalLabel})]}),a("div",{className:"cart-cart-summary-table__body",children:n.map(i=>i.undoBanner?a("div",{className:"cart-cart-summary-table__undo-banner",children:a(I,{node:i.undoBanner})},i.uid):m("div",{className:D(["cart-cart-summary-table__row",["cart-cart-summary-table__row--updating",i.updating],["cart-cart-summary-table__row--error",i.hasError]]),children:[a("div",{className:"cart-cart-summary-table__cell-item",children:a(I,{node:i.item})}),m("div",{className:"cart-cart-summary-table__cell-price",children:[a("span",{className:"cart-cart-summary-table__mobile-label",children:e.mobilePriceLabel}),a(I,{node:i.price})]}),m("div",{className:"cart-cart-summary-table__cell-qty",children:[a("span",{className:"cart-cart-summary-table__mobile-label",children:e.mobileQtyLabel}),a(I,{node:i.quantity})]}),m("div",{className:"cart-cart-summary-table__cell-subtotal",children:[a("span",{className:"cart-cart-summary-table__mobile-label",children:e.mobileSubtotalLabel}),a(I,{node:i.subtotal})]}),a("div",{className:"cart-cart-summary-table__item-footer",children:a(I,{className:"cart-cart-summary-table__item-actions",node:i.actions})})]},i.uid))})]})},Je=({className:n,productTitle:l,sku:s,image:e,configurations:i,alert:o,warning:p,...h})=>m("div",{...h,className:D(["cart-cart-summary-table__item",n]),children:[e&&a(I,{className:"cart-cart-summary-table__item-image-wrapper",node:e}),m("div",{className:"cart-cart-summary-table__item-details",children:[l&&a(I,{className:"cart-cart-summary-table__item-name",node:l}),s&&a(I,{className:"cart-cart-summary-table__sku",node:s}),o&&a(I,{className:"cart-cart-summary-table__item-quantity-alert-text",node:o}),p&&a(I,{className:"cart-cart-summary-table__item-quantity-warning-text",node:p}),i&&a(I,{className:"cart-cart-summary-table__item-configurations",node:i})]})]}),Ke=({dictionary:n,onQuantityUpdate:l,onItemRemove:s})=>{var T,x;const[e,i]=Ce(new Map),[o,p]=Ce(new Map),h=(x=(T=Ve)==null?void 0:T.config)==null?void 0:x.shoppingCartDisplaySetting,P=(h==null?void 0:h.price)==="INCLUDING_TAX",C=(h==null?void 0:h.price)==="INCLUDING_EXCLUDING_TAX",w=({item:t})=>{const c={...t.bundleOptions,...t.selectedOptions,...t.customizableOptions,...t.recipient?{[n.recipient]:t.recipient}:null,...t.recipientEmail&&t.recipient?{[n.recipient]:`${t.recipient} (${t.recipientEmail})`}:null,...t.sender?{[n.sender]:t.sender}:null,...t.senderEmail&&t.sender?{[n.sender]:`${t.sender} (${t.senderEmail})`}:{},...t.message?{[n.message]:t.message}:null,...t.links&&t.links.count?t.links.count>1?{[n.files.replace("{count}",t.links.count.toString())]:t.links.result}:{[n.file.replace("{count}",t.links.count.toString())]:t.links.result}:null};if(Object.keys(c).length!==0)return c},O=t=>{var c,u,d,b;return P?t.discounted?{amount:t.regularPrice.value,currency:t.regularPrice.currency,"data-testid":"discounted-regular-item-price"}:{amount:(c=t.taxedPrice)==null?void 0:c.value,currency:(u=t.taxedPrice)==null?void 0:u.currency,"data-testid":"taxed-item-price"}:{amount:(d=t.regularPrice)==null?void 0:d.value,currency:(b=t.regularPrice)==null?void 0:b.currency,"data-testid":"regular-item-price"}},M=t=>{var d,b,v,A,W,B,R,j,F,Q;const c={"aria-label":n.regularPrice},u=t.discounted?{}:null;return["INCLUDING_TAX","INCLUDING_EXCLUDING_TAX"].includes(h==null?void 0:h.price)?(c.amount=(d=t.rowTotalIncludingTax)==null?void 0:d.value,c.currency=(b=t.rowTotalIncludingTax)==null?void 0:b.currency,c.variant=t.discounted?"strikethrough":"default",c["data-testid"]="including-tax-item-total",u&&(c.amount=(v=t.total)==null?void 0:v.value,c.currency=(A=t.total)==null?void 0:A.currency,u.amount=(W=t.rowTotalIncludingTax)==null?void 0:W.value,u.currency=(B=t.rowTotalIncludingTax)==null?void 0:B.currency,u.sale=!0,u["aria-label"]=n.discountedPrice,u["data-testid"]="discount-total")):(c.amount=(R=t.total)==null?void 0:R.value,c.currency=(j=t.total)==null?void 0:j.currency,c.variant=t.discounted?"strikethrough":"default",c["data-testid"]="regular-item-total",u&&(u.amount=(F=t.discountedTotal)==null?void 0:F.value,u.currency=(Q=t.discountedTotal)==null?void 0:Q.currency,u.sale=!0,u["aria-label"]=n.regularPrice,u["data-testid"]="discount-total")),{subtotalProps:c,subtotalDiscountProps:u}},f=t=>{var b,v;const c=o.get(t.uid),u=t.insufficientQuantity&&t.stockLevel?t.stockLevel==="noNumber"?n.insufficientQuantityGeneral:n.insufficientQuantity.replace("{inventory}",(b=t.stockLevel)==null?void 0:b.toString()).replace("{count}",t.quantity.toString()):void 0,d=t.lowInventory&&t.onlyXLeftInStock&&n.lowInventory.replace("{count}",(v=t.onlyXLeftInStock)==null?void 0:v.toString());return c||u||d||void 0},q=We(async(t,c)=>{const u=(d,b)=>Ie([{uid:d.uid,quantity:b}]);if(!(isNaN(c)||t.quantity===c)){p(new Map);try{i(d=>{const b=new Map(d);return b.set(t.uid,{isUpdating:!0,updatedValue:c}),b}),await u(t,c),c===0?s==null||s(t):l==null||l(t,c)}catch(d){i(b=>{const v=new Map(b);return v.delete(t.uid),v}),p(b=>{const v=new Map(b);return v.set(t.uid,d.message),v})}}},[s,l]),S=Be(()=>Ee(q,500),[q]);return{showIncludedTaxPrice:P,showExcludingTaxPrice:C,itemsUpdating:e,itemUpdateErrors:o,getConfiguration:w,getPriceProps:O,getSubtotalProps:M,processQuantityChange:q,debouncedQuantityChange:S,setItemsUpdating:i,getWarningMessage:f,setItemUpdateError:(t,c)=>{p(u=>{const d=new Map(u);return c?d.set(t,c):d.delete(t),d})},handleRemoveItem:t=>(i(c=>{const u=new Map(c);return u.set(t.uid,{isUpdating:!0,updatedValue:0}),u}),Ie([{uid:t.uid,quantity:0}]).then(c=>(s==null||s(t),Promise.resolve(c)))),setItemUpdating:(t,c)=>{i(u=>{const d=new Map(u);return d.set(t,{isUpdating:c,updatedValue:c}),d})}}},Ye=({variant:n="primary",className:l,type:s="warning",additionalActions:e,onDismiss:i,heading:o,description:p,icon:h,itemList:P,actionButtonPosition:C,...w})=>{var M,f,q;const O=re({dismiss:"Dropin.InlineAlert.dismissLabel"});return m("div",{...w,className:D(["dropin-in-line-alert",`dropin-in-line-alert--${s}`,`dropin-in-line-alert--${n}`,l]),children:[m("div",{className:"dropin-in-line-alert__heading",children:[m("div",{className:"dropin-in-line-alert__title-container",children:[h&&a(I,{node:h,className:"dropin-in-line-alert__icon"}),a("span",{className:"dropin-in-line-alert__title",children:o})]}),m("div",{className:"dropin-in-line-alert__actions-container",children:[e&&(C==="top"||!C&&e.length<=1)&&a(J,{variant:"tertiary",className:"dropin-in-line-alert__additional-action",onClick:e.length>0?(M=e[0])==null?void 0:M.onClick:void 0,"aria-label":(f=e[0])==null?void 0:f.label,children:(q=e[0])==null?void 0:q.label}),i&&a(J,{icon:a(K,{source:Fe,size:"24",stroke:"2"}),className:"dropin-in-line-alert__dismiss-button",variant:"tertiary",onClick:i,"aria-label":O.dismiss})]})]}),p&&a("p",{className:"dropin-in-line-alert__description",children:p}),a("div",{className:"dropin-in-line-alert__item-list-container",children:P&&a(I,{node:P,className:D(["dropin-in-line-alert__item-list"])})}),e&&(C==="bottom"||!C&&e.length>1)&&a("div",{className:"dropin-in-line-alert__additional-actions-container",children:e.map(S=>a(J,{variant:"tertiary",className:"dropin-in-line-alert__additional-action",onClick:S.onClick,children:S.label},S.label))})]})},ea=()=>a(De,{"data-testid":"cart-summary-table-skeleton",className:"cart-cart-summary-table__skeleton",rowGap:"medium",children:a(Ae,{variant:"row",size:"xlarge",fullWidth:!0,lines:4,multilineGap:"small"})}),aa=({initialData:n=null,routeProduct:l,routeEmptyCartCTA:s,slots:e,className:i,allowQuantityUpdates:o=!0,allowRemoveItems:p=!0,onQuantityUpdate:h,onItemRemove:P,undo:C=!1,...w})=>{const[O,M]=ae(!n),[f,q]=ae(n),[S,V]=ae([]),N=re({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",includingTax:"Cart.CartItem.includingTax",excludingTax:"Cart.CartItem.excludingTax",remove:"Dropin.CartItem.remove.label",removeDefault:"Dropin.CartItem.removeDefault.label",quantity:"Dropin.CartItem.quantity.label",itemBeingRemoved:"Cart.CartItem.itemBeingRemoved",itemRemoved:"Cart.CartItem.itemRemoved",itemRemovedDescription:"Cart.CartItem.itemRemovedDescription",undoAction:"Cart.CartItem.undoAction",dismissAction:"Cart.CartItem.dismissAction"}),{showIncludedTaxPrice:H,showExcludingTaxPrice:X,itemsUpdating:T,itemUpdateErrors:x,getConfiguration:t,getPriceProps:c,getSubtotalProps:u,debouncedQuantityChange:d,setItemsUpdating:b,getWarningMessage:v,handleRemoveItem:A,setItemUpdating:W,setItemUpdateError:B}=Ke({dictionary:N,onQuantityUpdate:h,onItemRemove:P});function R(_){const r=ke(),g=r==null?void 0:r.items.find(y=>y.uid===_);g&&V(y=>{const L=r.items.findIndex(U=>U.uid===_);return L!==-1&&!y.some(U=>U.item.uid===_)?(ve.emit("cart/product/removed",{item:g,index:L}),[...y,{item:g,index:L,loading:!1,error:void 0}]):y})}const j=ta(S,V),F=ra(V),Q=Qe(_=>{C&&R(_.uid),A(_)},[C,A]);ze(()=>{const _=ve.on("cart/data",r=>{M(!0),q(r),b(new Map),M(!1)},{eager:!0});return()=>{_==null||_.off()}},[M,q,b]);const z=Ge(()=>{var _;return((_=f==null?void 0:f.items)==null?void 0:_.sort((r,g)=>x.has(r.uid)&&!x.has(g.uid)?-1:!x.has(r.uid)&&x.has(g.uid)?1:r.outOfStock&&!g.outOfStock?-1:!r.outOfStock&&g.outOfStock?1:0).map((r,g)=>{var ue,oe,de,me,pe,be,ge,he,ye,_e,fe;const y=T.has(r.uid),L=v(r),U=a(k,{name:"ProductTitle",slot:e==null?void 0:e.ProductTitle,context:{item:r},children:l?a("a",{href:l(r),children:r.name}):r.name}),Z={src:r.image.src,alt:r.image.alt,width:"300",height:"300",params:{width:300}},ne=a($e,{"data-testid":`cart-table-item-image-${r.sku}`,loading:g<4?"eager":"lazy",...Z}),we=a(k,{name:"Thumbnail",slot:e==null?void 0:e.Thumbnail,className:"cart-cart-summary-table__item-image-wrapper",context:{item:r,defaultImageProps:{...Z,loading:g<4?"eager":"lazy"},index:g},children:l?a("a",{href:l(r),children:ne}):ne}),Se=a(k,{name:"Sku",slot:e==null?void 0:e.Sku,context:{item:r},children:r.sku}),Te=r.outOfStock||e!=null&&e.ItemAlert?a(k,{name:"ItemAlert",slot:e==null?void 0:e.ItemAlert,context:{item:r},children:r.outOfStock&&m("div",{className:"cart-cart-summary-table__item-quantity-alert-wrapper","data-testid":`cart-table-item-quantity-alert-${r.uid}`,children:[a(K,{className:"cart-cart-summary-table__item-quantity-alert-icon",source:Re,size:"16"}),a("span",{className:"cart-cart-summary-table__item-quantity-alert-text",children:N.outOfStockAlert})]})}):void 0,Pe=L||e!=null&&e.ItemWarning?a(k,{name:"ItemWarning",slot:e==null?void 0:e.ItemWarning,context:{item:r},children:L&&m("div",{className:"cart-cart-summary-table__item-quantity-warning-wrapper","data-testid":`cart-table-item-quantity-warning-${r.uid}`,children:[a(K,{className:"cart-cart-summary-table__item-quantity-warning-icon",source:je,size:"16"}),a("span",{className:"cart-cart-summary-table__item-quantity-warning-text",children:L})]})}):void 0,Y=t({item:r}),qe=Y||e!=null&&e.Configurations?a(k,{name:"Configurations",slot:e==null?void 0:e.Configurations,context:{item:r},children:Y&&a("ul",{className:"cart-cart-summary-table__item-configurations","data-testid":`cart-table-item-configurations-${r.sku}`,children:Object.entries(Y).map(([G,ee])=>m("li",{className:"cart-cart-summary-table__item-configuration","data-testid":`cart-table-item-configuration-${G}`,children:[m("span",{className:"cart-cart-summary-table__item-configuration-label",children:[G,":"]}),a("span",{className:"cart-cart-summary-table__item-configuration-value",children:ee})]},G))})}):void 0,{subtotalProps:Le,subtotalDiscountProps:ie}=u(r),ce=(ue=T.get(r.uid))==null?void 0:ue.updatedValue,le=y&&!isNaN(ce)?ce:r.quantity,se=G=>{const ee=G.target,Ue=parseInt(ee.value,10);d(r,Ue)},Oe=T.has(r.uid)&&((oe=T.get(r.uid))==null?void 0:oe.updatedValue)===0,Me=a(k,{name:"Actions",slot:e==null?void 0:e.Actions,context:{item:r,itemsUpdating:T,setItemUpdating:W,setItemUpdateError:B},children:p&&!Oe&&a(J,{variant:"tertiary",size:"medium",className:"cart-cart-summary-table__item-remove-button","data-testid":`cart-table-item-remove-${r.uid}`,icon:a(K,{source:Ze,size:"32"}),onClick:()=>Q(r),"aria-label":((de=N.remove)==null?void 0:de.replace("{product}",r.name))||N.removeDefault})});return{key:r.uid,uid:r.uid,updating:y,hasError:r.outOfStock||x.has(r.uid),item:a(k,{name:"Item",slot:e==null?void 0:e.Item,context:{item:r},children:a(Je,{productTitle:U,image:we,sku:Se,configurations:qe,alert:Te,warning:Pe})}),price:m(k,{name:"Price",className:"cart-cart-summary-table__item-price",slot:e==null?void 0:e.Price,context:{item:r},children:[a(E,{...c(r)}),H&&m("span",{className:"cart-cart-summary-table__item-price-tax-label",children:[N.includingTax,": ",a(E,{amount:(me=r.taxedPrice)==null?void 0:me.value,currency:(pe=r.taxedPrice)==null?void 0:pe.currency})]}),X&&m("span",{className:"cart-cart-summary-table__item-price-tax-label",children:[N.excludingTax,": ",a(E,{amount:(be=r.regularPrice)==null?void 0:be.value,currency:(ge=r.regularPrice)==null?void 0:ge.currency})]})]}),quantity:a(k,{name:"Quantity",className:"cart-cart-summary-table__item-qty",slot:e==null?void 0:e.Quantity,context:{item:r,isUpdating:y,quantityInputValue:le,handleInputChange:se,itemUpdateErrors:x},children:o?a("input",{id:`cart-table-item-quantity-${r.uid}`,"data-testid":`cart-table-item-quantity-${r.uid}`,type:"number",min:"1",value:le,disabled:y,"aria-label":N.quantity,className:D(["cart-cart-summary-table__cell-qty-input","cart-cart-summary-table__cell-qty-updater",["cart-cart-summary-table__cell-qty-updater--disabled",y],["cart-cart-summary-table__cell-qty-updater--error",x.has(r.uid)]]),onChange:se}):a("span",{children:r.quantity})}),subtotal:m(k,{name:"Subtotal",className:"cart-cart-summary-table__item-subtotal",slot:e==null?void 0:e.Subtotal,context:{item:r},children:[a(E,{...Le}),ie&&a(E,{...ie}),H&&m("span",{className:"cart-cart-summary-table__item-subtotal-tax-label",children:[N.includingTax,": ",a(E,{amount:(he=r.rowTotalIncludingTax)==null?void 0:he.value,currency:(ye=r.rowTotalIncludingTax)==null?void 0:ye.currency})]}),X&&m("span",{className:"cart-cart-summary-table__item-subtotal-tax-label",children:[N.excludingTax,": ",a(E,{amount:(_e=r.rowTotal)==null?void 0:_e.value,currency:(fe=r.rowTotal)==null?void 0:fe.currency})]})]}),actions:Me}}))||[]},[f,T,o,l,e,x,N,t,p,d,v,c,u,W,B,H,X,Q]);if(O)return a(ea,{});const Ne=()=>{if(!(f!=null&&f.items))return null;const _=[],r=f.items;for(let g=0;g<=z.length;g++)C&&S.filter(y=>y.index===g).forEach(({item:y,error:L})=>{const U=na(y.uid,T),Z=sa({item:y,error:L},y,U,N,j,F,e);_.push({uid:`undo-banner-${y.uid}`,updating:!1,hasError:!1,item:a("div",{}),price:a("div",{}),quantity:a("div",{}),subtotal:a("div",{}),actions:a("div",{}),undoBanner:Z})}),g<z.length&&g<r.length&&_.push(z[g]);return a(te,{entries:_,className:i,...w})},xe=a(k,{name:"EmptyCart",slot:e==null?void 0:e.EmptyCart,context:{},children:a(Xe,{ctaLinkURL:s==null?void 0:s()})});return f!=null&&f.totalQuantity||C&&S.length>0?C?S.length>0?Ne():a(te,{entries:z,className:i,...w}):a(te,{entries:z,className:i,...w}):xe};aa.getInitialData=async function(){return ke()};const ta=(n,l)=>async s=>{l(i=>i.map(o=>o.item.uid===s?{...o,error:void 0}:o));const e=n.find(i=>i.item.uid===s);if(e)try{await He([{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(([i,o])=>({uid:i,value:o})):void 0}]),l(i=>i.filter(o=>o.item.uid!==s))}catch(i){l(o=>o.map(p=>p.item.uid===s?{...p,error:(i==null?void 0:i.message)||"Failed to restore item."}:p))}},ra=n=>l=>{n(s=>s.filter(e=>e.item.uid!==l))},na=(n,l)=>{var s;return l.has(n)&&((s=l.get(n))==null?void 0:s.updatedValue)===0},ia=(n,l,s,e,i,o)=>n?[]:[{label:l.undoAction,onClick:()=>{s(i)},"aria-label":`${l.undoAction} remove ${o}`},{label:l.dismissAction,onClick:()=>{e(i)},"aria-label":`${l.dismissAction} undo for ${o}`}],ca=(n,l)=>()=>n(l),la=(n,l)=>()=>n(l),sa=(n,l,s,e,i,o,p)=>{var w,O;const h=ia(s,e,i,o,n.item.uid,n.item.name),P=ca(i,n.item.uid),C=la(o,n.item.uid);return a(k,{name:"UndoBanner",slot:p==null?void 0:p.UndoBanner,context:{item:n.item,loading:s,error:n.error,onUndo:P,onDismiss:C},children:a(Ye,{type:n.error?"error":"info",heading:s?(w=e.itemBeingRemoved)==null?void 0:w.replace("{product}",l.name):(O=e.itemRemoved)==null?void 0:O.replace("{product}",n.item.name),description:n.error||e.itemRemovedDescription,variant:"primary",actionButtonPosition:"bottom",additionalActions:h},`undo-banner-${n.item.uid}`)},`undo-banner-${n.item.uid}`)};export{aa as C,ra as a,ia as b,ta as c,ca as d,la as e,sa as f,na as g};
|
|
3
|
+
import{jsxs as m,jsx as a}from"@dropins/tools/preact-jsx-runtime.js";import{classes as E,VComponent as I,debounce as $e,Slot as N}from"@dropins/tools/lib.js";import{Button as J,Icon as K,Image as De,Price as D,Skeleton as Ee,SkeletonRow as Me}from"@dropins/tools/components.js";/* empty css */import{useState as fe,useCallback as Ae,useMemo as Qe}from"@dropins/tools/preact-compat.js";import{useState as ee,useCallback as ze,useEffect as Be,useMemo as Ge}from"@dropins/tools/preact-hooks.js";import{useText as te}from"@dropins/tools/i18n.js";import{events as Ce}from"@dropins/tools/event-bus.js";import{s as We}from"./resetCart.js";import{u as ve}from"./updateProductsFromCart.js";import{g as Ie}from"./persisted-data.js";import{a as Ve}from"./createGuestCart.js";import{E as Xe}from"./EmptyCart.js";import{S as je,a as Re,b as He}from"./Trash.js";import{S as Fe}from"./Close.js";const ae=({entries:n,className:l,...s})=>{const e=te({itemLabel:"Cart.CartSummaryTable.item",priceLabel:"Cart.CartSummaryTable.price",qtyLabel:"Cart.CartSummaryTable.qty",subtotalLabel:"Cart.CartSummaryTable.subtotal",mobilePriceLabel:"Cart.CartSummaryTable.mobilePrice",mobileQtyLabel:"Cart.CartSummaryTable.mobileQty",mobileSubtotalLabel:"Cart.CartSummaryTable.mobileSubtotal"});return m("div",{...s,className:E(["cart-cart-summary-table",l]),children:[m("div",{className:"cart-cart-summary-table__header",children:[a("div",{className:"cart-cart-summary-table__header-item",children:e.itemLabel}),a("div",{className:"cart-cart-summary-table__header-price",children:e.priceLabel}),a("div",{className:"cart-cart-summary-table__header-qty",children:e.qtyLabel}),a("div",{className:"cart-cart-summary-table__header-subtotal",children:e.subtotalLabel})]}),a("div",{className:"cart-cart-summary-table__body",children:n.map(i=>i.undoBanner?a("div",{className:"cart-cart-summary-table__undo-banner",children:a(I,{node:i.undoBanner})},i.uid):m("div",{className:E(["cart-cart-summary-table__row",["cart-cart-summary-table__row--updating",i.updating],["cart-cart-summary-table__row--error",i.hasError]]),children:[a("div",{className:"cart-cart-summary-table__cell-item",children:a(I,{node:i.item})}),m("div",{className:"cart-cart-summary-table__cell-price",children:[a("span",{className:"cart-cart-summary-table__mobile-label",children:e.mobilePriceLabel}),a(I,{node:i.price})]}),m("div",{className:"cart-cart-summary-table__cell-qty",children:[a("span",{className:"cart-cart-summary-table__mobile-label",children:e.mobileQtyLabel}),a(I,{node:i.quantity})]}),m("div",{className:"cart-cart-summary-table__cell-subtotal",children:[a("span",{className:"cart-cart-summary-table__mobile-label",children:e.mobileSubtotalLabel}),a(I,{node:i.subtotal})]}),a("div",{className:"cart-cart-summary-table__item-footer",children:a(I,{className:"cart-cart-summary-table__item-actions",node:i.actions})})]},i.uid))})]})},Je=({className:n,productTitle:l,sku:s,image:e,configurations:i,alert:o,warning:b,...y})=>m("div",{...y,className:E(["cart-cart-summary-table__item",n]),children:[e&&a(I,{className:"cart-cart-summary-table__item-image-wrapper",node:e}),m("div",{className:"cart-cart-summary-table__item-details",children:[l&&a(I,{className:"cart-cart-summary-table__item-name",node:l}),s&&a(I,{className:"cart-cart-summary-table__sku",node:s}),o&&a(I,{className:"cart-cart-summary-table__item-quantity-alert-text",node:o}),b&&a(I,{className:"cart-cart-summary-table__item-quantity-warning-text",node:b}),i&&a(I,{className:"cart-cart-summary-table__item-configurations",node:i})]})]}),Ke=({dictionary:n,onQuantityUpdate:l,onItemRemove:s})=>{var T,k;const[e,i]=fe(new Map),[o,b]=fe(new Map),y=(k=(T=We)==null?void 0:T.config)==null?void 0:k.shoppingCartDisplaySetting,P=(y==null?void 0:y.price)==="INCLUDING_TAX",C=(y==null?void 0:y.price)==="INCLUDING_EXCLUDING_TAX",S=({item:t})=>{const c={...t.bundleOptions,...t.selectedOptions,...t.customizableOptions,...t.recipient?{[n.recipient]:t.recipient}:null,...t.recipientEmail&&t.recipient?{[n.recipient]:`${t.recipient} (${t.recipientEmail})`}:null,...t.sender?{[n.sender]:t.sender}:null,...t.senderEmail&&t.sender?{[n.sender]:`${t.sender} (${t.senderEmail})`}:{},...t.message?{[n.message]:t.message}:null,...t.links&&t.links.count?t.links.count>1?{[n.files.replace("{count}",t.links.count.toString())]:t.links.result}:{[n.file.replace("{count}",t.links.count.toString())]:t.links.result}:null};if(Object.keys(c).length!==0)return c},L=t=>{var c,u,d,p;return P?t.discounted?{amount:t.regularPrice.value,currency:t.regularPrice.currency,"data-testid":"discounted-regular-item-price"}:{amount:(c=t.taxedPrice)==null?void 0:c.value,currency:(u=t.taxedPrice)==null?void 0:u.currency,"data-testid":"taxed-item-price"}:{amount:(d=t.regularPrice)==null?void 0:d.value,currency:(p=t.regularPrice)==null?void 0:p.currency,"data-testid":"regular-item-price"}},U=t=>{var d,p,v,M,A,Q,j,R,H,z;const c={"aria-label":n.regularPrice},u=t.discounted?{}:null;return["INCLUDING_TAX","INCLUDING_EXCLUDING_TAX"].includes(y==null?void 0:y.price)?(c.amount=(d=t.rowTotalIncludingTax)==null?void 0:d.value,c.currency=(p=t.rowTotalIncludingTax)==null?void 0:p.currency,c.variant=t.discounted?"strikethrough":"default",c["data-testid"]="including-tax-item-total",u&&(c.amount=(v=t.total)==null?void 0:v.value,c.currency=(M=t.total)==null?void 0:M.currency,u.amount=(A=t.rowTotalIncludingTax)==null?void 0:A.value,u.currency=(Q=t.rowTotalIncludingTax)==null?void 0:Q.currency,u.sale=!0,u["aria-label"]=n.discountedPrice,u["data-testid"]="discount-total")):(c.amount=(j=t.total)==null?void 0:j.value,c.currency=(R=t.total)==null?void 0:R.currency,c.variant=t.discounted?"strikethrough":"default",c["data-testid"]="regular-item-total",u&&(u.amount=(H=t.discountedTotal)==null?void 0:H.value,u.currency=(z=t.discountedTotal)==null?void 0:z.currency,u.sale=!0,u["aria-label"]=n.regularPrice,u["data-testid"]="discount-total")),{subtotalProps:c,subtotalDiscountProps:u}},f=t=>{var p,v;const c=o.get(t.uid),u=t.insufficientQuantity&&t.stockLevel?t.stockLevel==="noNumber"?n.insufficientQuantityGeneral:n.insufficientQuantity.replace("{inventory}",(p=t.stockLevel)==null?void 0:p.toString()).replace("{count}",t.quantity.toString()):void 0,d=t.lowInventory&&t.onlyXLeftInStock&&n.lowInventory.replace("{count}",(v=t.onlyXLeftInStock)==null?void 0:v.toString());return c||u||d||void 0},q=Ae(async(t,c)=>{const u=(d,p)=>ve([{uid:d.uid,quantity:p}]);if(!(isNaN(c)||t.quantity===c)){b(new Map);try{i(d=>{const p=new Map(d);return p.set(t.uid,{isUpdating:!0,updatedValue:c}),p}),await u(t,c),c===0?s==null||s(t):l==null||l(t,c)}catch(d){i(p=>{const v=new Map(p);return v.delete(t.uid),v}),b(p=>{const v=new Map(p);return v.set(t.uid,d.message),v})}}},[s,l]),w=Qe(()=>$e(q,500),[q]);return{showIncludedTaxPrice:P,showExcludingTaxPrice:C,itemsUpdating:e,itemUpdateErrors:o,getConfiguration:S,getPriceProps:L,getSubtotalProps:U,processQuantityChange:q,debouncedQuantityChange:w,setItemsUpdating:i,getWarningMessage:f,setItemUpdateError:(t,c)=>{b(u=>{const d=new Map(u);return c?d.set(t,c):d.delete(t),d})},handleRemoveItem:t=>(i(c=>{const u=new Map(c);return u.set(t.uid,{isUpdating:!0,updatedValue:0}),u}),ve([{uid:t.uid,quantity:0}]).then(c=>(s==null||s(t),Promise.resolve(c)))),setItemUpdating:(t,c)=>{i(u=>{const d=new Map(u);return d.set(t,{isUpdating:c,updatedValue:c}),d})}}},Ye=({variant:n="primary",className:l,type:s="warning",additionalActions:e,onDismiss:i,heading:o,description:b,icon:y,itemList:P,actionButtonPosition:C,...S})=>{var U,f,q;const L=te({dismiss:"Dropin.InlineAlert.dismissLabel"});return m("div",{...S,className:E(["dropin-in-line-alert",`dropin-in-line-alert--${s}`,`dropin-in-line-alert--${n}`,l]),children:[m("div",{className:"dropin-in-line-alert__heading",children:[m("div",{className:"dropin-in-line-alert__title-container",children:[y&&a(I,{node:y,className:"dropin-in-line-alert__icon"}),a("span",{className:"dropin-in-line-alert__title",children:o})]}),m("div",{className:"dropin-in-line-alert__actions-container",children:[e&&(C==="top"||!C&&e.length<=1)&&a(J,{variant:"tertiary",className:"dropin-in-line-alert__additional-action",onClick:e.length>0?(U=e[0])==null?void 0:U.onClick:void 0,"aria-label":(f=e[0])==null?void 0:f.label,children:(q=e[0])==null?void 0:q.label}),i&&a(J,{icon:a(K,{source:Fe,size:"24",stroke:"2"}),className:"dropin-in-line-alert__dismiss-button",variant:"tertiary",onClick:i,"aria-label":L.dismiss})]})]}),b&&a("p",{className:"dropin-in-line-alert__description",children:b}),a("div",{className:"dropin-in-line-alert__item-list-container",children:P&&a(I,{node:P,className:E(["dropin-in-line-alert__item-list"])})}),e&&(C==="bottom"||!C&&e.length>1)&&a("div",{className:"dropin-in-line-alert__additional-actions-container",children:e.map(w=>a(J,{variant:"tertiary",className:"dropin-in-line-alert__additional-action",onClick:w.onClick,children:w.label},w.label))})]})},Ze=()=>a(Ee,{"data-testid":"cart-summary-table-skeleton",className:"cart-cart-summary-table__skeleton",rowGap:"medium",children:a(Me,{variant:"row",size:"xlarge",fullWidth:!0,lines:4,multilineGap:"small"})}),ea=({initialData:n=null,routeProduct:l,routeEmptyCartCTA:s,slots:e,className:i,allowQuantityUpdates:o=!0,allowRemoveItems:b=!0,onQuantityUpdate:y,onItemRemove:P,undo:C=!1,...S})=>{const[L,U]=ee(!n),[f,q]=ee(n),[w,W]=ee([]),x=te({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",includingTax:"Cart.CartItem.includingTax",excludingTax:"Cart.CartItem.excludingTax",remove:"Dropin.CartItem.remove.label",removeDefault:"Dropin.CartItem.removeDefault.label",quantity:"Dropin.CartItem.quantity.label",itemBeingRemoved:"Cart.CartItem.itemBeingRemoved",itemRemoved:"Cart.CartItem.itemRemoved",itemRemovedDescription:"Cart.CartItem.itemRemovedDescription",undoAction:"Cart.CartItem.undoAction",dismissAction:"Cart.CartItem.dismissAction"}),{showIncludedTaxPrice:V,showExcludingTaxPrice:X,itemsUpdating:T,itemUpdateErrors:k,getConfiguration:t,getPriceProps:c,getSubtotalProps:u,debouncedQuantityChange:d,setItemsUpdating:p,getWarningMessage:v,handleRemoveItem:M,setItemUpdating:A,setItemUpdateError:Q}=Ke({dictionary:x,onQuantityUpdate:y,onItemRemove:P});function j(h){const r=Ie(),g=r==null?void 0:r.items.find(_=>_.uid===h);g&&W(_=>{const O=r.items.findIndex($=>$.uid===h);return O!==-1&&!_.some($=>$.item.uid===h)?(Ce.emit("cart/product/removed",{item:g,index:O}),[..._,{item:g,index:O,loading:!1,error:void 0}]):_})}const R=aa(w,W),H=ta(W),z=ze(h=>{C&&j(h.uid),M(h)},[C,M]);Be(()=>{const h=Ce.on("cart/data",r=>{U(!0),q(r),p(new Map),U(!1)},{eager:!0});return()=>{h==null||h.off()}},[U,q,p]);const B=Ge(()=>{var h;return((h=f==null?void 0:f.items)==null?void 0:h.sort((r,g)=>k.has(r.uid)&&!k.has(g.uid)?-1:!k.has(r.uid)&&k.has(g.uid)?1:r.outOfStock&&!g.outOfStock?-1:!r.outOfStock&&g.outOfStock?1:0).map((r,g)=>{var se,ue,oe,de,me,be,pe,ge,ye,_e,he;const _=T.has(r.uid),O=v(r),$=a(N,{name:"ProductTitle",slot:e==null?void 0:e.ProductTitle,context:{item:r},children:l?a("a",{href:l(r),children:r.name}):r.name}),F={src:r.image.src,alt:r.image.alt,width:"300",height:"300",params:{width:300}},re=a(De,{"data-testid":`cart-table-item-image-${r.sku}`,loading:g<4?"eager":"lazy",...F}),ke=a(N,{name:"Thumbnail",slot:e==null?void 0:e.Thumbnail,className:"cart-cart-summary-table__item-image-wrapper",context:{item:r,defaultImageProps:{...F,loading:g<4?"eager":"lazy"},index:g},children:l?a("a",{href:l(r),children:re}):re}),Se=a(N,{name:"Sku",slot:e==null?void 0:e.Sku,context:{item:r},children:r.sku}),we=r.outOfStock||e!=null&&e.ItemAlert?a(N,{name:"ItemAlert",slot:e==null?void 0:e.ItemAlert,context:{item:r},children:r.outOfStock&&m("div",{className:"cart-cart-summary-table__item-quantity-alert-wrapper","data-testid":`cart-table-item-quantity-alert-${r.uid}`,children:[a(K,{className:"cart-cart-summary-table__item-quantity-alert-icon",source:je,size:"16"}),a("span",{className:"cart-cart-summary-table__item-quantity-alert-text",children:x.outOfStockAlert})]})}):void 0,Te=O||e!=null&&e.ItemWarning?a(N,{name:"ItemWarning",slot:e==null?void 0:e.ItemWarning,context:{item:r},children:O&&m("div",{className:"cart-cart-summary-table__item-quantity-warning-wrapper","data-testid":`cart-table-item-quantity-warning-${r.uid}`,children:[a(K,{className:"cart-cart-summary-table__item-quantity-warning-icon",source:Re,size:"16"}),a("span",{className:"cart-cart-summary-table__item-quantity-warning-text",children:O})]})}):void 0,Y=t({item:r}),Pe=Y||e!=null&&e.Configurations?a(N,{name:"Configurations",slot:e==null?void 0:e.Configurations,context:{item:r},children:Y&&a("ul",{className:"cart-cart-summary-table__item-configurations","data-testid":`cart-table-item-configurations-${r.sku}`,children:Object.entries(Y).map(([G,Z])=>m("li",{className:"cart-cart-summary-table__item-configuration","data-testid":`cart-table-item-configuration-${G}`,children:[m("span",{className:"cart-cart-summary-table__item-configuration-label",children:[G,":"]}),a("span",{className:"cart-cart-summary-table__item-configuration-value",children:Z})]},G))})}):void 0,{subtotalProps:qe,subtotalDiscountProps:ne}=u(r),ie=(se=T.get(r.uid))==null?void 0:se.updatedValue,ce=_&&!isNaN(ie)?ie:r.quantity,le=G=>{const Z=G.target,Ue=parseInt(Z.value,10);d(r,Ue)},Oe=T.has(r.uid)&&((ue=T.get(r.uid))==null?void 0:ue.updatedValue)===0,Le=a(N,{name:"Actions",slot:e==null?void 0:e.Actions,context:{item:r,itemsUpdating:T,setItemUpdating:A,setItemUpdateError:Q},children:b&&!Oe&&a(J,{variant:"tertiary",size:"medium",className:"cart-cart-summary-table__item-remove-button","data-testid":`cart-table-item-remove-${r.uid}`,icon:a(K,{source:He,size:"32"}),onClick:()=>z(r),"aria-label":((oe=x.remove)==null?void 0:oe.replace("{product}",r.name))||x.removeDefault})});return{key:r.uid,uid:r.uid,updating:_,hasError:r.outOfStock||k.has(r.uid),item:a(N,{name:"Item",slot:e==null?void 0:e.Item,context:{item:r},children:a(Je,{productTitle:$,image:ke,sku:Se,configurations:Pe,alert:we,warning:Te})}),price:m(N,{name:"Price",className:"cart-cart-summary-table__item-price",slot:e==null?void 0:e.Price,context:{item:r},children:[a(D,{...c(r)}),V&&m("span",{className:"cart-cart-summary-table__item-price-tax-label",children:[x.includingTax,": ",a(D,{amount:(de=r.taxedPrice)==null?void 0:de.value,currency:(me=r.taxedPrice)==null?void 0:me.currency})]}),X&&m("span",{className:"cart-cart-summary-table__item-price-tax-label",children:[x.excludingTax,": ",a(D,{amount:(be=r.regularPrice)==null?void 0:be.value,currency:(pe=r.regularPrice)==null?void 0:pe.currency})]})]}),quantity:a(N,{name:"Quantity",className:"cart-cart-summary-table__item-qty",slot:e==null?void 0:e.Quantity,context:{item:r,isUpdating:_,quantityInputValue:ce,handleInputChange:le,itemUpdateErrors:k},children:o?a("input",{id:`cart-table-item-quantity-${r.uid}`,"data-testid":`cart-table-item-quantity-${r.uid}`,type:"number",min:"1",value:ce,disabled:_,"aria-label":x.quantity,className:E(["cart-cart-summary-table__cell-qty-input","cart-cart-summary-table__cell-qty-updater",["cart-cart-summary-table__cell-qty-updater--disabled",_],["cart-cart-summary-table__cell-qty-updater--error",k.has(r.uid)]]),onChange:le}):a("span",{children:r.quantity})}),subtotal:m(N,{name:"Subtotal",className:"cart-cart-summary-table__item-subtotal",slot:e==null?void 0:e.Subtotal,context:{item:r},children:[a(D,{...qe}),ne&&a(D,{...ne}),V&&m("span",{className:"cart-cart-summary-table__item-subtotal-tax-label",children:[x.includingTax,": ",a(D,{amount:(ge=r.rowTotalIncludingTax)==null?void 0:ge.value,currency:(ye=r.rowTotalIncludingTax)==null?void 0:ye.currency})]}),X&&m("span",{className:"cart-cart-summary-table__item-subtotal-tax-label",children:[x.excludingTax,": ",a(D,{amount:(_e=r.rowTotal)==null?void 0:_e.value,currency:(he=r.rowTotal)==null?void 0:he.currency})]})]}),actions:Le}}))||[]},[f,T,o,l,e,k,x,t,b,d,v,c,u,A,Q,V,X,z]);if(L)return a(Ze,{});const Ne=()=>{if(!(f!=null&&f.items))return null;const h=[],r=f.items;for(let g=0;g<=B.length;g++)C&&w.filter(_=>_.index===g).forEach(({item:_,error:O})=>{const $=ra(_.uid,T),F=la({item:_,error:O},_,$,x,R,H,e);h.push({uid:`undo-banner-${_.uid}`,updating:!1,hasError:!1,item:a("div",{}),price:a("div",{}),quantity:a("div",{}),subtotal:a("div",{}),actions:a("div",{}),undoBanner:F})}),g<B.length&&g<r.length&&h.push(B[g]);return a(ae,{entries:h,className:i,...S})},xe=a(N,{name:"EmptyCart",slot:e==null?void 0:e.EmptyCart,context:{},children:a(Xe,{ctaLinkURL:s==null?void 0:s()})});return f!=null&&f.totalQuantity||C&&w.length>0?C?w.length>0?Ne():a(ae,{entries:B,className:i,...S}):a(ae,{entries:B,className:i,...S}):xe};ea.getInitialData=async function(){return Ie()};const aa=(n,l)=>async s=>{l(i=>i.map(o=>o.item.uid===s?{...o,error:void 0}:o));const e=n.find(i=>i.item.uid===s);if(e)try{await Ve([{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(([i,o])=>({uid:i,value:o})):void 0}]),l(i=>i.filter(o=>o.item.uid!==s))}catch(i){l(o=>o.map(b=>b.item.uid===s?{...b,error:(i==null?void 0:i.message)||"Failed to restore item."}:b))}},ta=n=>l=>{n(s=>s.filter(e=>e.item.uid!==l))},ra=(n,l)=>{var s;return l.has(n)&&((s=l.get(n))==null?void 0:s.updatedValue)===0},na=(n,l,s,e,i,o)=>n?[]:[{label:l.undoAction,onClick:()=>{s(i)},"aria-label":`${l.undoAction} remove ${o}`},{label:l.dismissAction,onClick:()=>{e(i)},"aria-label":`${l.dismissAction} undo for ${o}`}],ia=(n,l)=>()=>n(l),ca=(n,l)=>()=>n(l),la=(n,l,s,e,i,o,b)=>{var S,L;const y=na(s,e,i,o,n.item.uid,n.item.name),P=ia(i,n.item.uid),C=ca(o,n.item.uid);return a(N,{name:"UndoBanner",slot:b==null?void 0:b.UndoBanner,context:{item:n.item,loading:s,error:n.error,onUndo:P,onDismiss:C},children:a(Ye,{type:n.error?"error":"info",heading:s?(S=e.itemBeingRemoved)==null?void 0:S.replace("{product}",l.name):(L=e.itemRemoved)==null?void 0:L.replace("{product}",n.item.name),description:n.error||e.itemRemovedDescription,variant:"primary",actionButtonPosition:"bottom",additionalActions:y},`undo-banner-${n.item.uid}`)},`undo-banner-${n.item.uid}`)};export{ea as C,ta as a,na as b,aa as c,ia as d,ca as e,la as f,ra as g};
|
|
4
4
|
//# sourceMappingURL=CartSummaryTable2.js.map
|