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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/api.js +1 -0
  2. package/api.js.map +1 -0
  3. package/chunks/CartSummaryGrid.js +1 -0
  4. package/chunks/CartSummaryGrid.js.map +1 -0
  5. package/chunks/CartSummaryList.js +1 -0
  6. package/chunks/CartSummaryList.js.map +1 -0
  7. package/chunks/CartSummaryTable2.js +1 -0
  8. package/chunks/CartSummaryTable2.js.map +1 -0
  9. package/chunks/ChevronDown.js +1 -0
  10. package/chunks/ChevronDown.js.map +1 -0
  11. package/chunks/ChevronUp.js +1 -0
  12. package/chunks/ChevronUp.js.map +1 -0
  13. package/chunks/Coupon.js +1 -0
  14. package/chunks/Coupon.js.map +1 -0
  15. package/chunks/Coupons.js +1 -0
  16. package/chunks/Coupons.js.map +1 -0
  17. package/chunks/EmptyCart.js +1 -0
  18. package/chunks/EmptyCart.js.map +1 -0
  19. package/chunks/GiftCard.js +1 -0
  20. package/chunks/GiftCard.js.map +1 -0
  21. package/chunks/OrderSummary.js +1 -0
  22. package/chunks/OrderSummary.js.map +1 -0
  23. package/chunks/OrderSummaryLine.js +1 -0
  24. package/chunks/OrderSummaryLine.js.map +1 -0
  25. package/chunks/WarningWithCircle.js +1 -0
  26. package/chunks/WarningWithCircle.js.map +1 -0
  27. package/chunks/acdl.js +2 -1
  28. package/chunks/acdl.js.map +1 -0
  29. package/chunks/applyCouponsToCart.js +1 -0
  30. package/chunks/applyCouponsToCart.js.map +1 -0
  31. package/chunks/getEstimateShipping.js +1 -0
  32. package/chunks/getEstimateShipping.js.map +1 -0
  33. package/chunks/getEstimatedTotals.js +1 -0
  34. package/chunks/getEstimatedTotals.js.map +1 -0
  35. package/chunks/persisted-data.js +1 -0
  36. package/chunks/persisted-data.js.map +1 -0
  37. package/chunks/refreshCart.js +1 -0
  38. package/chunks/refreshCart.js.map +1 -0
  39. package/chunks/removeGiftCardFromCart.js +1 -0
  40. package/chunks/removeGiftCardFromCart.js.map +1 -0
  41. package/chunks/resetCart.js +1 -0
  42. package/chunks/resetCart.js.map +1 -0
  43. package/chunks/setGiftOptionsOnCart.js +1 -0
  44. package/chunks/setGiftOptionsOnCart.js.map +1 -0
  45. package/chunks/updateProductsFromCart.js +8 -7
  46. package/chunks/updateProductsFromCart.js.map +1 -0
  47. package/containers/CartSummaryGrid.js +1 -0
  48. package/containers/CartSummaryGrid.js.map +1 -0
  49. package/containers/CartSummaryList.js +1 -0
  50. package/containers/CartSummaryList.js.map +1 -0
  51. package/containers/CartSummaryTable.js +1 -0
  52. package/containers/CartSummaryTable.js.map +1 -0
  53. package/containers/Coupons.js +1 -0
  54. package/containers/Coupons.js.map +1 -0
  55. package/containers/EmptyCart.js +1 -0
  56. package/containers/EmptyCart.js.map +1 -0
  57. package/containers/EstimateShipping.js +1 -0
  58. package/containers/EstimateShipping.js.map +1 -0
  59. package/containers/GiftCards.js +1 -0
  60. package/containers/GiftCards.js.map +1 -0
  61. package/containers/GiftOptions.js +1 -0
  62. package/containers/GiftOptions.js.map +1 -0
  63. package/containers/MiniCart.js +1 -0
  64. package/containers/MiniCart.js.map +1 -0
  65. package/containers/OrderSummary.js +1 -0
  66. package/containers/OrderSummary.js.map +1 -0
  67. package/containers/OrderSummaryLine.js +1 -0
  68. package/containers/OrderSummaryLine.js.map +1 -0
  69. package/data/models/acdl-models.d.ts +18 -0
  70. package/fragments.js +1 -0
  71. package/fragments.js.map +1 -0
  72. package/package.json +1 -1
  73. package/render.js +1 -0
  74. package/render.js.map +1 -0
@@ -1,3 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
3
  import{jsx as t,jsxs as u,Fragment as A}from"@dropins/tools/preact-jsx-runtime.js";import{classes as We,Slot as Ze}from"@dropins/tools/lib.js";import{Modal as De,ContentGrid as Xe,ImageSwatch as Je,Button as se,Price as ce,Skeleton as Qe,SkeletonRow as Ye,Field as j,Checkbox as ae,Input as Me,TextArea as Ue,Accordion as Ne,AccordionSection as Pe,Icon as D,Card as Ve,ProgressSpinner as et}from"@dropins/tools/components.js";/* empty css */import*as X from"@dropins/tools/preact-compat.js";import{useRef as tt,useEffect as J,useState as M,useId as $e,useCallback as K,useMemo as le}from"@dropins/tools/preact-hooks.js";import{useText as Z}from"@dropins/tools/i18n.js";import{s as L}from"../chunks/resetCart.js";import{S as Re}from"../chunks/ChevronDown.js";import{S as Se}from"../chunks/ChevronUp.js";import{events as rt}from"@dropins/tools/event-bus.js";import{u as it}from"../chunks/updateProductsFromCart.js";import{s as nt}from"../chunks/setGiftOptionsOnCart.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/persisted-data.js";import"../chunks/refreshCart.js";import"../fragments.js";import"../chunks/acdl.js";const te=e=>X.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},X.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z",stroke:"currentColor"}),X.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M6.75 12.762L10.2385 15.75L17.25 9",stroke:"currentColor"})),de=e=>X.createElement("svg",{width:20,height:23,viewBox:"0 0 20 23",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},X.createElement("path",{d:"M10 6L10 21.5M10 6H12.25C13.4926 6 14.5 4.99264 14.5 3.75C14.5 2.50736 13.4926 1.5 12.25 1.5C11.0074 1.5 10 2.50736 10 3.75M10 6V3.75M10 6H7.75C6.50736 6 5.5 4.99264 5.5 3.75C5.5 2.50736 6.50736 1.5 7.75 1.5C8.99264 1.5 10 2.50736 10 3.75M3.25 10.75H16.75C17.9926 10.75 19 9.74264 19 8.5C19 7.25736 17.9926 6.25 16.75 6.25H3.25C2.00736 6.25 1 7.25736 1 8.5C1 9.74264 2.00736 10.75 3.25 10.75ZM4.75 21.5H15.25C16.4926 21.5 17.5 20.4926 17.5 19.25V13.25C17.5 12.0074 16.4926 11 15.25 11H4.75C3.50736 11 2.5 12.0074 2.5 13.25V19.25C2.5 20.4926 3.50736 21.5 4.75 21.5Z",stroke:"currentColor",strokeWidth:1.5}));function ot(e){const i=tt(null);return J(()=>{if(!e||!i.current)return;const l=i.current,d=l.querySelectorAll('a, button, input, textarea, select, details, [tabindex]:not([tabindex="-1"])');if(d.length===0)return;const r=d[0],f=d[d.length-1];function g(o){o.key==="Tab"&&(o.shiftKey&&document.activeElement===r?(o.preventDefault(),f.focus()):!o.shiftKey&&document.activeElement===f&&(o.preventDefault(),r.focus()))}return l.addEventListener("keydown",g),()=>{l.removeEventListener("keydown",g)}},[e]),i}const at=({view:e,showModal:i,productName:l,giftWrappingConfig:d,imageSwatchImageNode:r,setShowModal:f,updateGiftOptions:g})=>{var w;const o=ot(i),n=Z({modalTitle:"Cart.GiftOptions.modal.title",defaultTitle:"Cart.GiftOptions.modal.defaultTitle",modalWrappingText:"Cart.GiftOptions.modal.wrappingText",modalWrappingSubText:"Cart.GiftOptions.modal.wrappingSubText",modalConfirmButton:"Cart.GiftOptions.modal.modalConfirmButton",modalCancelButton:"Cart.GiftOptions.modal.modalCancelButton",ariaLabelModal:"Cart.GiftOptions.modal.ariaLabelModal",ariaLabelModalOpen:"Cart.GiftOptions.modal.ariaLabelModalOpen",ariaLabelModalClose:"Cart.GiftOptions.modal.ariaLabelModalClose",ariaLabelWrapping:"Cart.GiftOptions.modal.ariaLabelWrapping"}),[c,C]=M();if(J(()=>{const p=d.find(T=>T.selected)??d[0];C(p)},[d]),J(()=>{const p=document==null?void 0:document.querySelector(".cart-gift-options-view__modal-wrapper");p&&(p==null||p.focus())},[]),!i||!d.length)return null;const s=l?`${n.modalTitle} ${l}`:n.defaultTitle;return t("div",{ref:o,className:"cart-gift-options-view__modal-wrapper",tabIndex:0,"aria-label":`${n.ariaLabelModal} ${i?n.ariaLabelModalOpen:n.ariaLabelModalClose} ${l}`,children:u(De,{"data-testid":`gift-option-modal-${e}`,className:"cart-gift-options-view__modal",size:"medium",title:u(A,{children:[t("span",{children:s}),c&&((w=c==null?void 0:c.price)==null?void 0:w.value)>0?t(ce,{amount:c.price.value,currency:c.price.currency,weight:"normal"}):null]}),centered:!0,onClose:f,children:[u("div",{className:"cart-gift-options-view__modal-content",children:[t("span",{className:"cart-gift-options-view__modal-text",children:n.modalWrappingText}),t(Xe,{emptyGridContent:t(A,{}),maxColumns:6,columnWidth:"100px",className:"cart-gift-options-view__modal-grid",children:d.map(p=>t(Je,{groupAriaLabel:n.ariaLabelWrapping,selected:(c==null?void 0:c.uid)===(p==null?void 0:p.uid),onValue:()=>{C(p)},imageNode:r,name:"giftWrappingId",value:p.uid,src:p.image.url,alt:p.design,label:p.design,"data-testid":`gift-option-modal-image-${p.uid}`,className:"cart-gift-options-view__modal-grid-item"},p.uid))}),t("span",{className:"cart-gift-options-view__modal-sub-text",children:c==null?void 0:c.design})]}),t(se,{"data-testid":"gift-option-modal-confirm-button",type:"button",onClick:()=>{g("giftWrappingId",c==null?void 0:c.uid,{isGiftWrappingSelected:!0}),f()},children:n.modalConfirmButton}),t(se,{type:"button",variant:"secondary",onClick:f,"data-testid":"gift-option-modal-cancel-button",children:n.modalCancelButton})]})})},lt=()=>t(Qe,{children:t(Ye,{variant:"row",size:"small",fullWidth:!0,lines:1,multilineGap:"small"})}),st=({className:e,view:i,item:l,giftOptions:d,disabled:r,cartData:f,giftWrappingConfig:g,setShowModal:o,onInputChange:n,areGiftOptionsVisible:c})=>{var N,P,B,z;const C=$e(),s=Z({customize:`Cart.GiftOptions.${i}.customize`,giftReceiptIncludedTitle:`Cart.GiftOptions.${i}.giftReceiptIncluded.title`,giftReceiptIncludedText:`Cart.GiftOptions.${i}.giftReceiptIncluded.subtitle`,printedCardIncludedTitle:`Cart.GiftOptions.${i}.printedCardIncluded.title`,printedCardIncludedText:`Cart.GiftOptions.${i}.printedCardIncluded.subtitle`,giftOptionsWrapTitle:`Cart.GiftOptions.${i}.giftOptionsWrap.title`,giftOptionsWrapText:`Cart.GiftOptions.${i}.giftOptionsWrap.subtitle`,requiredFieldError:"Cart.GiftOptions.formText.requiredFieldError"}),w=l==null?void 0:l.productGiftWrapping,p=f==null?void 0:f.cartGiftWrapping,T=i==="product"?w:p,y=T==null?void 0:T.find(S=>S.uid===d.giftWrappingId),V=(y==null?void 0:y.design)??"",O=l==null?void 0:l.giftWrappingPrice,v=V?`${s.giftOptionsWrapText} ${V}`:"",F=+(((P=(N=L.config)==null?void 0:N.printedCardPrice)==null?void 0:P.value)??0)>0?(B=L.config)==null?void 0:B.printedCardPrice:null;let _=null;O!=null&&O.value?_=O:(z=y==null?void 0:y.price)!=null&&z.value&&(_=y.price);const W=S=>S?u("span",{children:[" (+",t(ce,{amount:S.value,currency:S.currency,weight:"normal"}),")"]}):null;return u("div",{className:We([e,[`${e}--hidden`,!c.isGiftOptionsVisible]]),children:[c.isGiftReceiptVisible?t(j,{disabled:r,className:"cart-gift-options-view__field-gift-receipt",children:t(ae,{id:`giftReceiptIncluded-${C}`,disabled:r,name:"giftReceiptIncluded",checked:d.giftReceiptIncluded,placeholder:s.giftReceiptIncludedTitle,label:s.giftReceiptIncludedTitle,description:s.giftReceiptIncludedText,onChange:n})}):null,c.isPrintedCartVisible?t(j,{disabled:r,className:"cart-gift-options-view__field-printed-card",children:t(ae,{id:`printedCardIncluded-${C}`,disabled:r,name:"printedCardIncluded",checked:d.printedCardIncluded,placeholder:s.printedCardIncludedTitle,label:u(A,{children:[s.printedCardIncludedTitle,W(F)]}),description:s.printedCardIncludedText,onChange:n})}):null,c.isGiftWrappingVisible?u(A,{children:[t(j,{disabled:r,className:"cart-gift-options-view__field-gift-wrap",children:t(ae,{id:`giftOptionsWrap-${C}`,disabled:r,name:"isGiftWrappingSelected",checked:d.isGiftWrappingSelected,placeholder:s.giftOptionsWrapTitle,label:u(A,{children:[s.giftOptionsWrapTitle,W(_)]}),description:v,onChange:n})}),t(se,{disabled:r||!g.length,type:"button","data-testid":`gift-option-customize-${i}`,variant:"tertiary",onClick:()=>o(!0),children:s.customize})]}):null]})},dt=({view:e,giftOptions:i,disabled:l,errorMessage:d,onInputChange:r,onBlur:f,isGiftMessageVisible:g})=>{const o=$e(),n=Z({formTitle:`Cart.GiftOptions.${e}.formContent.formTitle`,formTo:`Cart.GiftOptions.${e}.formContent.formTo`,formFrom:`Cart.GiftOptions.${e}.formContent.formFrom`,giftMessageTitle:`Cart.GiftOptions.${e}.formContent.giftMessageTitle`,formToPlaceholder:`Cart.GiftOptions.${e}.formContent.formToPlaceholder`,formFromPlaceholder:`Cart.GiftOptions.${e}.formContent.formFromPlaceholder`,formMessagePlaceholder:`Cart.GiftOptions.${e}.formContent.formMessagePlaceholder`});return g?u(A,{children:[t("span",{children:n.formTitle}),u("div",{children:[t("span",{children:n.formTo}),t(j,{disabled:l,error:d.recipientName,children:t(Me,{id:`recipientName-${o}`,disabled:l,type:"text",name:"recipientName",value:i.recipientName,placeholder:n.formToPlaceholder,onChange:r,onBlur:f})})]}),u("div",{children:[t("span",{children:n.formFrom}),t(j,{disabled:l,error:d.senderName,children:t(Me,{id:`senderName-${o}`,disabled:l,type:"text",name:"senderName",value:i.senderName,placeholder:n.formFromPlaceholder,onChange:r,onBlur:f})})]}),u("div",{children:[t("span",{children:n.giftMessageTitle}),t(j,{disabled:l,children:t(Ue,{id:`message-${o}`,errorMessage:d.message,disabled:l,name:"message",value:i.message,label:n.formMessagePlaceholder,onChange:r,onBlur:f})})]})]}):null},ct=({view:e,giftOptions:i,giftWrappingConfig:l,readOnlyFormOrderView:d})=>{const r=Z({readOnlyProductTitle:"Cart.GiftOptions.product.readOnlyFormView.title",wrapping:"Cart.GiftOptions.product.readOnlyFormView.wrapping",recipient:"Cart.GiftOptions.product.readOnlyFormView.recipient",sender:"Cart.GiftOptions.product.readOnlyFormView.sender",message:"Cart.GiftOptions.product.readOnlyFormView.message",readOnlyOrderTitle:"Cart.GiftOptions.order.readOnlyFormView.title",readOnlyOrderGiftReceiptTitle:"Cart.GiftOptions.order.readOnlyFormView.giftReceipt",readOnlyOrderGiftReceiptText:"Cart.GiftOptions.order.readOnlyFormView.giftReceiptText",readOnlyOrderGiftPrintCardTitle:"Cart.GiftOptions.order.readOnlyFormView.printCard",readOnlyOrderGiftPrintCardText:"Cart.GiftOptions.order.readOnlyFormView.printCardText",readOnlyOrderGiftWrapTitle:"Cart.GiftOptions.order.readOnlyFormView.giftWrap",readOnlyOrderGiftWrapOptionsText:"Cart.GiftOptions.order.readOnlyFormView.giftWrapOptions",readOnlyOrderFormTitle:"Cart.GiftOptions.order.readOnlyFormView.formTitle",readOnlyOrderFormTo:"Cart.GiftOptions.order.readOnlyFormView.formTo",readOnlyOrderFormFrom:"Cart.GiftOptions.order.readOnlyFormView.formFrom",readOnlyOrderFormMessageTitle:"Cart.GiftOptions.order.readOnlyFormView.formMessageTitle"}),{recipientName:f,senderName:g,message:o,giftReceiptIncluded:n,printedCardIncluded:c,isGiftWrappingSelected:C}=i,s=l==null?void 0:l.find(({uid:O})=>O===(i==null?void 0:i.giftWrappingId)),w=!!f||!!g||!!o,p=s==null?void 0:s.design,T=n||c||(s==null?void 0:s.selected),y=[{id:1,title:r.wrapping,message:C?p:""},{id:2,title:r.recipient,message:f},{id:3,title:r.sender,message:g},{id:4,title:r.message,message:o}],V=y.every(({message:O})=>!O);if(e==="product"&&!V)return t(Ne,{"data-testid":"gift-options-product",iconClose:Se,iconOpen:Re,actionIconPosition:"right",children:t(Pe,{title:r.readOnlyProductTitle,showIconLeft:!0,iconLeft:de,defaultOpen:!1,renderContentWhenClosed:!1,children:t("div",{children:y.filter(O=>O.message).map(O=>u("p",{children:[O.title," ",O.message]},O.id))})})});if(e==="order"&&(w||T)){const O=u("div",{className:"cart-gift-options-readonly__header",children:[t(D,{source:de,size:"24"}),t("span",{children:r.readOnlyOrderTitle})]}),v=u(A,{children:[n?u("div",{className:"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-receipt",children:[t(D,{source:te,size:"16"}),t("p",{children:r.readOnlyOrderGiftReceiptTitle}),t("p",{children:r.readOnlyOrderGiftReceiptText})]}):null,c?u("div",{className:"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--print-card",children:[t(D,{source:te,size:"16"}),t("p",{children:r.readOnlyOrderGiftPrintCardTitle}),t("p",{children:r.readOnlyOrderGiftPrintCardText})]}):null,s!=null&&s.selected?u("div",{className:"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-wrap",children:[t(D,{source:te,size:"16"}),u("p",{children:[r.readOnlyOrderGiftWrapTitle," (+",t(ce,{amount:s.price.value,currency:s.price.currency,weight:"normal"}),")"]}),t("p",{children:`${r.readOnlyOrderGiftWrapOptionsText} ${s==null?void 0:s.design}`})]}):null]}),F=w?u("div",{className:"cart-gift-options-readonly__form",children:[t("div",{children:r.readOnlyOrderFormTitle}),u("div",{children:[u("p",{children:[t("span",{children:r.readOnlyOrderFormTo}),t("span",{children:f})]}),u("p",{children:[t("span",{children:r.readOnlyOrderFormFrom}),t("span",{children:g})]})]}),u("div",{children:[t("p",{children:r.readOnlyOrderFormMessageTitle}),t("p",{children:o})]})]}):null;return u(Ve,{variant:d,children:[O,v,F]})}return null},ft=({item:e,view:i,loading:l,giftOptions:d,showModal:r,isEditable:f,errorsField:g,updateLoading:o,cartData:n,fieldsDisabled:c,isGiftOptionsApplied:C,giftWrappingConfig:s,readOnlyFormOrderView:w,isGiftMessageVisible:p,areGiftOptionsVisible:T,imageSwatchImageNode:y,onBlur:V,setShowModal:O,updateGiftOptions:v,onInputChange:F,handleFormMouseLeave:_})=>{const W=Z({accordionHeading:`Cart.GiftOptions.${i}.accordionHeading`}),N=K(P=>t(Ne,{"data-testid":"gift-options-product",iconClose:Se,iconOpen:Re,actionIconPosition:"right",children:t(Pe,{title:u("div",{className:"cart-gift-options-view__icon--success",children:[t("span",{children:W.accordionHeading}),C?t(D,{source:te,size:"16"}):null]}),ariaLabelTitle:W.accordionHeading,showIconLeft:!0,iconLeft:de,defaultOpen:C||P,renderContentWhenClosed:!1,children:u(A,{children:[t(st,{className:"cart-gift-options-view__top",view:i,item:e,giftOptions:d,disabled:c,onInputChange:F,cartData:n,giftWrappingConfig:s,setShowModal:O,areGiftOptionsVisible:T}),t("form",{className:"cart-gift-options-view__footer",onMouseLeave:_,children:t(dt,{view:i,giftOptions:d,disabled:c,errorMessage:g,onInputChange:F,onBlur:V,isGiftMessageVisible:p})})]})})}),[i,e,n,W,g,d,c,s,T,C,p,V,O,F,_]);return!T.isGiftOptionsVisible&&!p?null:u("div",{id:"cart-gift-options-view",className:We(["cart-gift-options-view",`cart-gift-options-view--${i}`,["cart-gift-options-view--loading",o]]),children:[o?t(et,{className:"cart-gift-options-view__spinner"}):null,l?t(lt,{}):u(A,{children:[f?null:t("div",{className:"cart-gift-options-view--readonly",children:t(ct,{view:i,giftOptions:d,giftWrappingConfig:s,readOnlyFormOrderView:w})}),r?t(at,{view:i,productName:e&&"name"in e?e==null?void 0:e.name:"",showModal:r,giftWrappingConfig:s,setShowModal:()=>O(!1),updateGiftOptions:v,imageSwatchImageNode:y}):null,i==="product"&&f?N(!1):null,i==="order"&&f?t(Ve,{variant:"secondary",children:N(!0)}):null]})]})},ee={recipientName:"",senderName:"",message:""},pt={giftReceiptIncluded:!1,printedCardIncluded:!1,isGiftWrappingSelected:!1},ke=(e,i)=>{var d,r;if(!i)return!!((d=L.config)!=null&&d.allowGiftMessageOnOrder);const l=((r=L.config)==null?void 0:r.allowGiftMessageOnOrderItems)??!1;return typeof(e==null?void 0:e.giftMessageAvailable)=="boolean"?e==null?void 0:e.giftMessageAvailable:l},ut=(e,i)=>{const{allowGiftWrappingOnOrder:l,allowGiftWrappingOnOrderItems:d,allowGiftMessageOnOrder:r,allowGiftMessageOnOrderItems:f,allowGiftReceipt:g,allowPrintedCard:o}=L.config||{},n=!f&&!d&&!ke(i,!0),c=!l&&!r&&!g&&!o;return!!(e==="product"&&n||e==="order"&&c)},gt=({item:e,view:i,dataSource:l,initialLoading:d,handleItemsLoading:r,handleItemsError:f,onItemUpdate:g,onGiftOptionsChange:o})=>{var pe,ue,ge,me,Oe,he;const n=i==="product",c=Z({requiredFieldError:"Cart.GiftOptions.formText.requiredFieldError"}),[C,s]=M(()=>d),[w,p]=M({isGiftReceiptVisible:!0,isPrintedCartVisible:!0,isGiftWrappingVisible:!0,isGiftOptionsVisible:!0}),[T,y]=M(!0),[V,O]=M(!1),[v,F]=M(!1),[_,W]=M(!1),[N,P]=M(!1),[B,z]=M(!1),[S,re]=M([]),[h,Q]=M(null),[Ie,ie]=M(ee),[G,fe]=M(()=>({giftWrappingId:"",...ee,...pt})),Y=((pe=G.recipientName)==null?void 0:pe.trim())&&((ue=G.senderName)==null?void 0:ue.trim())&&((ge=G.message)==null?void 0:ge.trim()),U=!((me=G.recipientName)!=null&&me.trim())&&!((Oe=G.senderName)!=null&&Oe.trim())&&!((he=G.message)!=null&&he.trim()),R=K(async a=>{switch(O(i==="order"),F(!0),i){case"product":{"uid"in e&&(r==null||r(e.uid,!0),f==null||f(e.uid));const{recipientName:m,senderName:x,message:b,giftWrappingId:E,isGiftWrappingSelected:k}=a,H={gift_message:{to:m??"",from:x??"",message:b??""},gift_wrapping_id:k?E:null};"uid"in e&&"quantity"in e&&await it([{uid:e.uid,quantity:e.quantity,giftOptions:H}]).then(()=>{g==null||g({item:e})}).finally(()=>{r==null||r(e.uid,!1),F(!1),W(!1),O(!1)}).catch($=>{console.warn($)})}break;case"order":await nt(a).finally(()=>{F(!1),W(!1),O(!1)});break;default:console.error('Incorrect "view" prop value provided for GiftOptions container (storefront-cart)');break}},[f,r,e,g,i]),ne=K((a,m,x={})=>{fe(b=>{const E=I=>I in b,k=I=>E(I)?b[I]:void 0;if(!(k(a)!==m||Object.keys(x).some(I=>k(I)!==x[I])))return o==null||o(b),b;const $={...b,[a]:m,...x};return!$.recipientName&&!$.senderName&&!$.message&&P(!0),(typeof m=="boolean"||["giftWrappingId","giftReceiptIncluded","printedCardIncluded"].includes(a))&&(P(!1),typeof o=="function"?o($):R($)),W(!0),o==null||o($),$})},[R,o]),Le=K(async()=>{v||typeof o!="function"&&(U&&N&&(ie(ee),P(!1),await R(G)),_&&Y&&(P(!0),await R(G)))},[R,G,_,U,N,v,o,Y]),Ae=K(async a=>{if(v||typeof o=="function")return;const{name:m,value:x}=a.target;ie(b=>({...b,[m]:x.trim()?"":c.requiredFieldError})),U&&N&&(ie(ee),P(!1),await R(G)),_&&Y&&await R(G)},[v,U,N,_,Y,c,R,G,o]),Ee=K(a=>{const m=a.target,x=m.name,b=m.type==="checkbox"?m.checked:m.value;ne(x,b)},[ne]);J(()=>{if(n)return;const a=rt.on(l==="cart"?"cart/data":"order/data",m=>{var E,k;Q(m);const x=(E=m==null?void 0:m.items)==null?void 0:E.some(({giftWrappingAvailable:H})=>H),b=(k=m==null?void 0:m.cartGiftWrapping)==null?void 0:k.some(H=>H.selected);!x&&b&&R({...G,giftWrappingId:"",isGiftWrappingSelected:!1})},{eager:!0});return()=>{a==null||a.off()}},[Q,R,l,G,n]);const oe=le(()=>{var Te,be,Fe,we,ve,_e;if(!h&&!e)return null;const a=n?(Te=e==null?void 0:e.productGiftWrapping)==null?void 0:Te.map(q=>{var xe;return{...q,price:e!=null&&e.giftWrappingPrice&&((xe=e==null?void 0:e.giftWrappingPrice)==null?void 0:xe.value)>0?e.giftWrappingPrice:q.price}}):(h==null?void 0:h.cartGiftWrapping)||[],m=a==null?void 0:a.find(q=>q.selected),x=(m==null?void 0:m.uid)??((be=a==null?void 0:a[0])==null?void 0:be.uid),b=!!m,E=n?e.giftMessage:h==null?void 0:h.giftMessage,k=h==null?void 0:h.printedCardIncluded,H=h==null?void 0:h.giftReceiptIncluded,$=ke(e,n),I=(Fe=L.config)==null?void 0:Fe.allowGiftWrappingOnOrder,ze=(we=L.config)==null?void 0:we.allowGiftReceipt,qe=(ve=L.config)==null?void 0:ve.allowPrintedCard,Ke=(_e=h==null?void 0:h.items)==null?void 0:_e.some(q=>q.giftWrappingAvailable),je=e==null?void 0:e.giftWrappingAvailable,Ce=n?!1:!!ze,Ge=n?!1:!!qe,ye=n?!!je&&!!a.length:!!I&&!!a.length&&!!Ke;return p({isGiftReceiptVisible:Ce,isPrintedCartVisible:Ge,isGiftWrappingVisible:ye,isGiftOptionsVisible:!(!Ce&&!Ge&&!ye)}),y($),{...e&&"uid"in e?{itemId:e.uid}:{},...n?{}:{printedCardIncluded:k,giftReceiptIncluded:H},...E,giftWrappingId:x,isGiftWrappingSelected:b,giftWrappingOptions:a}},[h,e,n]);J(()=>{if(!oe)return;const{giftWrappingOptions:a,...m}=oe;fe(m),a!=null&&a.length&&re(a),s(!1)},[oe]);const He=le(()=>Object.entries(G).filter(([a])=>a!=="itemId"&&a!=="giftWrappingId").some(([,a])=>!!a),[G]),Be=le(()=>{var a;return!C&&!!((a=L)!=null&&a.config)&&ut(i,e)},[e,C,i]);return{loading:C,giftOptions:G,showModal:B,errorsField:Ie,updateLoading:V,cartData:h,fieldsDisabled:v,isGiftOptionsApplied:He,giftWrappingConfig:S,setFieldsDisabled:F,handleFormMouseLeave:Le,onInputChange:Ee,updateGiftOptions:ne,setShowModal:z,handleBlur:Ae,isGiftMessageVisible:T,areGiftOptionsVisible:w,isGiftOptionsHidden:Be}},$t=({item:e,view:i="order",readOnlyFormOrderView:l="primary",dataSource:d="cart",isEditable:r=!0,initialLoading:f=!0,slots:g,handleItemsLoading:o,handleItemsError:n,onItemUpdate:c,onGiftOptionsChange:C})=>{const{isGiftMessageVisible:s,areGiftOptionsVisible:w,loading:p,giftOptions:T,showModal:y,errorsField:V,updateLoading:O,cartData:v,isGiftOptionsApplied:F,fieldsDisabled:_,giftWrappingConfig:W,handleFormMouseLeave:N,updateGiftOptions:P,setShowModal:B,onInputChange:z,handleBlur:S,isGiftOptionsHidden:re}=gt({item:e,view:i,dataSource:d,initialLoading:f,handleItemsLoading:o,handleItemsError:n,onItemUpdate:c,onGiftOptionsChange:C});return re?null:t(ft,{item:e,view:i,loading:p,onBlur:S,giftOptions:T,showModal:y,isEditable:r,errorsField:V,setShowModal:B,updateLoading:O,updateGiftOptions:P,cartData:v,isGiftOptionsApplied:F,fieldsDisabled:_,giftWrappingConfig:W,handleFormMouseLeave:N,readOnlyFormOrderView:l,onInputChange:z,isGiftMessageVisible:s,areGiftOptionsVisible:w,imageSwatchImageNode:g!=null&&g.SwatchImage?({imageSwatchContext:h,...Q})=>t(Ze,{name:"SwatchImage",slotTag:"span",contentTag:"span",slot:g.SwatchImage,context:{item:e,imageSwatchContext:h,defaultImageProps:Q}}):void 0})};export{$t as GiftOptions,$t as default};
4
+ //# sourceMappingURL=GiftOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GiftOptions.js","sources":["../../node_modules/@adobe-commerce/elsie/src/icons/CheckWithCircle.svg","../../node_modules/@adobe-commerce/elsie/src/icons/Gift.svg","/@dropins/storefront-cart/src/hooks/useFocusTrap.tsx","/@dropins/storefront-cart/src/components/GiftOptions/Elements/GiftOptionModal.tsx","/@dropins/storefront-cart/src/components/GiftOptions/Elements/GiftLoader.tsx","/@dropins/storefront-cart/src/components/GiftOptions/Elements/CheckboxGroup.tsx","/@dropins/storefront-cart/src/components/GiftOptions/Elements/FormFields.tsx","/@dropins/storefront-cart/src/components/GiftOptions/Elements/ReadOnlyFormView.tsx","/@dropins/storefront-cart/src/components/GiftOptions/GiftOptions.tsx","/@dropins/storefront-cart/src/lib/giftOptionsHelper.ts","/@dropins/storefront-cart/src/hooks/useGiftOptions.tsx","/@dropins/storefront-cart/src/containers/GiftOptions/GiftOptions.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgCheckWithCircle = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 24, height: 24, viewBox: \"0 0 24 24\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M0.75 12C0.75 5.78421 5.78421 0.75 12 0.75C18.2158 0.75 23.25 5.78421 23.25 12C23.25 18.2158 18.2158 23.25 12 23.25C5.78421 23.25 0.75 18.2158 0.75 12Z\", stroke: \"currentColor\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M6.75 12.762L10.2385 15.75L17.25 9\", stroke: \"currentColor\" }));\nexport default SvgCheckWithCircle;\n","import * as React from \"react\";\nconst SvgGift = (props) => /* @__PURE__ */ React.createElement(\"svg\", { width: 20, height: 23, viewBox: \"0 0 20 23\", fill: \"none\", xmlns: \"http://www.w3.org/2000/svg\", ...props }, /* @__PURE__ */ React.createElement(\"path\", { d: \"M10 6L10 21.5M10 6H12.25C13.4926 6 14.5 4.99264 14.5 3.75C14.5 2.50736 13.4926 1.5 12.25 1.5C11.0074 1.5 10 2.50736 10 3.75M10 6V3.75M10 6H7.75C6.50736 6 5.5 4.99264 5.5 3.75C5.5 2.50736 6.50736 1.5 7.75 1.5C8.99264 1.5 10 2.50736 10 3.75M3.25 10.75H16.75C17.9926 10.75 19 9.74264 19 8.5C19 7.25736 17.9926 6.25 16.75 6.25H3.25C2.00736 6.25 1 7.25736 1 8.5C1 9.74264 2.00736 10.75 3.25 10.75ZM4.75 21.5H15.25C16.4926 21.5 17.5 20.4926 17.5 19.25V13.25C17.5 12.0074 16.4926 11 15.25 11H4.75C3.50736 11 2.5 12.0074 2.5 13.25V19.25C2.5 20.4926 3.50736 21.5 4.75 21.5Z\", stroke: \"currentColor\", strokeWidth: 1.5 }));\nexport default SvgGift;\n","import { useEffect, useRef } from 'preact/hooks';\n\nexport function useFocusTrap(showModal: boolean) {\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (!showModal || !containerRef.current) return;\n\n const container = containerRef.current;\n\n const focusableElements = container.querySelectorAll<HTMLElement>(\n 'a, button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])'\n );\n\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0];\n const lastElement = focusableElements[focusableElements.length - 1];\n\n function handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Tab') {\n if (event.shiftKey && document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n } else if (!event.shiftKey && document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n }\n\n container.addEventListener('keydown', handleKeyDown);\n\n return () => {\n container.removeEventListener('keydown', handleKeyDown);\n };\n }, [showModal]);\n\n return containerRef;\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 { FunctionComponent, JSX, VNode } from 'preact';\nimport {\n Modal,\n Button,\n ImageSwatch,\n Price,\n ContentGrid,\n ImageNodeRenderProps,\n} from '@adobe-commerce/elsie/components';\nimport { useState, useEffect } from 'preact/hooks';\nimport { GiftWrappingConfigProps, GiftOptionsViewProps } from '@/cart/types';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { useFocusTrap } from '@/cart/hooks/useFocusTrap';\n\ninterface GiftOptionModalProps {\n giftWrappingConfig: GiftWrappingConfigProps[];\n showModal: boolean;\n productName: string;\n view: GiftOptionsViewProps;\n imageSwatchImageNode?: VNode | ((props: ImageNodeRenderProps) => JSX.Element);\n setShowModal: () => void;\n updateGiftOptions: (\n name: string,\n value?: string | boolean | number,\n extraGiftOptions?: Record<string, string | boolean | number>\n ) => void;\n}\n\nexport const GiftOptionModal: FunctionComponent<GiftOptionModalProps> = ({\n view,\n showModal,\n productName,\n giftWrappingConfig,\n imageSwatchImageNode,\n setShowModal,\n updateGiftOptions,\n}) => {\n const containerRef = useFocusTrap(showModal);\n\n const dictionary = useText({\n modalTitle: 'Cart.GiftOptions.modal.title',\n defaultTitle: 'Cart.GiftOptions.modal.defaultTitle',\n modalWrappingText: 'Cart.GiftOptions.modal.wrappingText',\n modalWrappingSubText: 'Cart.GiftOptions.modal.wrappingSubText',\n modalConfirmButton: 'Cart.GiftOptions.modal.modalConfirmButton',\n modalCancelButton: 'Cart.GiftOptions.modal.modalCancelButton',\n ariaLabelModal: 'Cart.GiftOptions.modal.ariaLabelModal',\n ariaLabelModalOpen: 'Cart.GiftOptions.modal.ariaLabelModalOpen',\n ariaLabelModalClose: 'Cart.GiftOptions.modal.ariaLabelModalClose',\n ariaLabelWrapping: 'Cart.GiftOptions.modal.ariaLabelWrapping',\n });\n\n const [giftWrappingItem, setGiftWrappingItem] =\n useState<GiftWrappingConfigProps>();\n\n useEffect(() => {\n const selectedGiftWrapping =\n giftWrappingConfig.find((item) => item.selected) ?? giftWrappingConfig[0];\n\n setGiftWrappingItem(selectedGiftWrapping);\n }, [giftWrappingConfig]);\n\n useEffect(() => {\n const focusElement = document?.querySelector(\n '.cart-gift-options-view__modal-wrapper'\n ) as HTMLElement;\n\n if (focusElement) focusElement?.focus();\n }, []);\n\n if (!showModal || !giftWrappingConfig.length) return null;\n\n const renderTitle = productName\n ? `${dictionary.modalTitle} ${productName}`\n : dictionary.defaultTitle;\n\n return (\n <div\n ref={containerRef}\n className=\"cart-gift-options-view__modal-wrapper\"\n tabIndex={0}\n aria-label={`${dictionary.ariaLabelModal} ${\n showModal\n ? dictionary.ariaLabelModalOpen\n : dictionary.ariaLabelModalClose\n } ${productName}`}\n >\n <Modal\n data-testid={`gift-option-modal-${view}`}\n className={'cart-gift-options-view__modal'}\n size={'medium'}\n title={\n <>\n <span>{renderTitle}</span>\n {giftWrappingItem && giftWrappingItem?.price?.value > 0 ? (\n <Price\n amount={giftWrappingItem.price.value}\n currency={giftWrappingItem.price.currency}\n weight=\"normal\"\n />\n ) : null}\n </>\n }\n centered={true}\n onClose={setShowModal}\n >\n <div className=\"cart-gift-options-view__modal-content\">\n <span className=\"cart-gift-options-view__modal-text\">\n {dictionary.modalWrappingText}\n </span>\n <ContentGrid\n emptyGridContent={<></>}\n maxColumns={6}\n columnWidth=\"100px\"\n className=\"cart-gift-options-view__modal-grid\"\n >\n {giftWrappingConfig.map((wrapItem) => (\n <ImageSwatch\n groupAriaLabel={dictionary.ariaLabelWrapping}\n selected={giftWrappingItem?.uid === wrapItem?.uid}\n onValue={() => {\n setGiftWrappingItem(wrapItem);\n }}\n imageNode={imageSwatchImageNode}\n name={'giftWrappingId'}\n value={wrapItem.uid}\n src={wrapItem.image.url}\n alt={wrapItem.design}\n label={wrapItem.design}\n key={wrapItem.uid}\n data-testid={`gift-option-modal-image-${wrapItem.uid}`}\n className={'cart-gift-options-view__modal-grid-item'}\n />\n ))}\n </ContentGrid>\n <span className=\"cart-gift-options-view__modal-sub-text\">\n {giftWrappingItem?.design}\n </span>\n </div>\n\n <Button\n data-testid=\"gift-option-modal-confirm-button\"\n type=\"button\"\n onClick={() => {\n updateGiftOptions('giftWrappingId', giftWrappingItem?.uid, {\n isGiftWrappingSelected: true,\n });\n setShowModal();\n }}\n >\n {dictionary.modalConfirmButton}\n </Button>\n <Button\n type=\"button\"\n variant=\"secondary\"\n onClick={setShowModal}\n data-testid=\"gift-option-modal-cancel-button\"\n >\n {dictionary.modalCancelButton}\n </Button>\n </Modal>\n </div>\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 { FunctionComponent } from 'preact';\nimport { Skeleton, SkeletonRow } from '@adobe-commerce/elsie/components';\n\nexport const GiftLoader: FunctionComponent = () => {\n return (\n <Skeleton>\n <SkeletonRow\n variant=\"row\"\n size=\"small\"\n fullWidth={true}\n lines={1}\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 { FunctionComponent } from 'preact';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Checkbox, Field, Button, Price } from '@adobe-commerce/elsie/components';\nimport {\n GiftOptionsViewProps,\n GiftWrappingConfigProps,\n GiftFormDataType,\n ProductGiftOptionsConfig,\n} from '@/cart/types';\nimport { CartModel, Item, Price as PriceType } from '@/cart/data/models';\nimport { state } from '@/cart/lib/state';\nimport { StateUpdater, Dispatch, useId } from 'preact/hooks';\n\ninterface CheckboxGroupProps {\n className: string;\n view: GiftOptionsViewProps;\n item: Item | ProductGiftOptionsConfig;\n giftOptions: GiftFormDataType;\n disabled: boolean;\n cartData: CartModel | null;\n giftWrappingConfig: GiftWrappingConfigProps[] | [];\n areGiftOptionsVisible: Record<string, boolean>;\n setShowModal: Dispatch<StateUpdater<boolean>>;\n onInputChange: (event: Event) => void;\n}\n\nexport const CheckboxGroup: FunctionComponent<CheckboxGroupProps> = ({\n className,\n view,\n item,\n giftOptions,\n disabled,\n cartData,\n giftWrappingConfig,\n setShowModal,\n onInputChange,\n areGiftOptionsVisible,\n}) => {\n const id = useId();\n const dictionary = useText({\n customize: `Cart.GiftOptions.${view}.customize`,\n giftReceiptIncludedTitle: `Cart.GiftOptions.${view}.giftReceiptIncluded.title`,\n giftReceiptIncludedText: `Cart.GiftOptions.${view}.giftReceiptIncluded.subtitle`,\n printedCardIncludedTitle: `Cart.GiftOptions.${view}.printedCardIncluded.title`,\n printedCardIncludedText: `Cart.GiftOptions.${view}.printedCardIncluded.subtitle`,\n giftOptionsWrapTitle: `Cart.GiftOptions.${view}.giftOptionsWrap.title`,\n giftOptionsWrapText: `Cart.GiftOptions.${view}.giftOptionsWrap.subtitle`,\n requiredFieldError: 'Cart.GiftOptions.formText.requiredFieldError',\n });\n\n const productGiftWrappingOptions = item?.productGiftWrapping;\n const orderGiftWrappingOptions = cartData?.cartGiftWrapping;\n const giftWrappingOptions =\n view === 'product' ? productGiftWrappingOptions : orderGiftWrappingOptions;\n\n const selectedGiftWrapping = giftWrappingOptions?.find(\n (el: GiftWrappingConfigProps) => el.uid === giftOptions.giftWrappingId\n );\n const selectedGiftWrappingLabel = selectedGiftWrapping?.design ?? '';\n\n // Product level configurations\n const productGiftWrappingPrice = item?.giftWrappingPrice;\n const renderSelectedGiftWrappingLabel = selectedGiftWrappingLabel\n ? `${dictionary.giftOptionsWrapText} ${selectedGiftWrappingLabel}`\n : '';\n\n const printedCardPrice =\n +(state.config?.printedCardPrice?.value ?? 0) > 0\n ? state.config?.printedCardPrice\n : null;\n\n let productWrappingPrice = null;\n\n // Product level configurations have higher priority\n if (productGiftWrappingPrice?.value) {\n productWrappingPrice = productGiftWrappingPrice;\n } else if (selectedGiftWrapping?.price?.value) {\n productWrappingPrice = selectedGiftWrapping.price;\n }\n\n const renderPrice = (price?: PriceType | null) => {\n if (!price) return null;\n\n return (\n <span>\n &nbsp;(+\n <Price amount={price.value} currency={price.currency} weight=\"normal\" />\n )\n </span>\n );\n };\n\n return (\n <div\n className={classes([\n className,\n [`${className}--hidden`, !areGiftOptionsVisible.isGiftOptionsVisible],\n ])}\n >\n {areGiftOptionsVisible.isGiftReceiptVisible ? (\n <Field\n disabled={disabled}\n className={'cart-gift-options-view__field-gift-receipt'}\n >\n <Checkbox\n id={`giftReceiptIncluded-${id}`}\n disabled={disabled}\n name={'giftReceiptIncluded'}\n checked={giftOptions.giftReceiptIncluded}\n placeholder={dictionary.giftReceiptIncludedTitle}\n label={dictionary.giftReceiptIncludedTitle}\n description={dictionary.giftReceiptIncludedText}\n onChange={onInputChange}\n />\n </Field>\n ) : null}\n {areGiftOptionsVisible.isPrintedCartVisible ? (\n <Field\n disabled={disabled}\n className={'cart-gift-options-view__field-printed-card'}\n >\n <Checkbox\n id={`printedCardIncluded-${id}`}\n disabled={disabled}\n name={'printedCardIncluded'}\n checked={giftOptions.printedCardIncluded}\n placeholder={dictionary.printedCardIncludedTitle}\n label={\n <>\n {dictionary.printedCardIncludedTitle}\n {renderPrice(printedCardPrice)}\n </>\n }\n description={dictionary.printedCardIncludedText}\n onChange={onInputChange}\n />\n </Field>\n ) : null}\n {areGiftOptionsVisible.isGiftWrappingVisible ? (\n <>\n <Field\n disabled={disabled}\n className={'cart-gift-options-view__field-gift-wrap'}\n >\n <Checkbox\n id={`giftOptionsWrap-${id}`}\n disabled={disabled}\n name={'isGiftWrappingSelected'}\n checked={giftOptions.isGiftWrappingSelected}\n placeholder={dictionary.giftOptionsWrapTitle}\n label={\n <>\n {dictionary.giftOptionsWrapTitle}\n {renderPrice(productWrappingPrice)}\n </>\n }\n description={renderSelectedGiftWrappingLabel}\n onChange={onInputChange}\n />\n </Field>\n\n <Button\n disabled={disabled || !giftWrappingConfig.length}\n type=\"button\"\n data-testid={`gift-option-customize-${view}`}\n variant=\"tertiary\"\n onClick={() => setShowModal(true)}\n >\n {dictionary.customize}\n </Button>\n </>\n ) : null}\n </div>\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 { FunctionComponent } from 'preact';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Field, Input, TextArea } from '@adobe-commerce/elsie/components';\nimport { GiftOptionsViewProps, GiftFormDataType } from '@/cart/types';\nimport { useId } from 'preact/hooks';\n\ninterface FormFieldsProps {\n view: GiftOptionsViewProps;\n giftOptions: GiftFormDataType;\n disabled: boolean;\n errorMessage: Record<string, string>;\n onInputChange: (value: Event) => void;\n onBlur: (event: Event) => void;\n isGiftMessageVisible: boolean;\n}\n\nexport const FormFields: FunctionComponent<FormFieldsProps> = ({\n view,\n giftOptions,\n disabled,\n errorMessage,\n onInputChange,\n onBlur,\n isGiftMessageVisible,\n}) => {\n const id = useId();\n const dictionary = useText({\n formTitle: `Cart.GiftOptions.${view}.formContent.formTitle`,\n formTo: `Cart.GiftOptions.${view}.formContent.formTo`,\n formFrom: `Cart.GiftOptions.${view}.formContent.formFrom`,\n giftMessageTitle: `Cart.GiftOptions.${view}.formContent.giftMessageTitle`,\n formToPlaceholder: `Cart.GiftOptions.${view}.formContent.formToPlaceholder`,\n formFromPlaceholder: `Cart.GiftOptions.${view}.formContent.formFromPlaceholder`,\n formMessagePlaceholder: `Cart.GiftOptions.${view}.formContent.formMessagePlaceholder`,\n });\n\n if (!isGiftMessageVisible) return null;\n\n return (\n <>\n <span>{dictionary.formTitle}</span>\n <div>\n <span>{dictionary.formTo}</span>\n <Field disabled={disabled} error={errorMessage.recipientName}>\n <Input\n id={`recipientName-${id}`}\n disabled={disabled}\n type=\"text\"\n name={'recipientName'}\n value={giftOptions.recipientName}\n placeholder={dictionary.formToPlaceholder}\n onChange={onInputChange}\n onBlur={onBlur}\n />\n </Field>\n </div>\n <div>\n <span>{dictionary.formFrom}</span>\n <Field disabled={disabled} error={errorMessage.senderName}>\n <Input\n id={`senderName-${id}`}\n disabled={disabled}\n type=\"text\"\n name={'senderName'}\n value={giftOptions.senderName}\n placeholder={dictionary.formFromPlaceholder}\n onChange={onInputChange}\n onBlur={onBlur}\n />\n </Field>\n </div>\n <div>\n <span>{dictionary.giftMessageTitle}</span>\n <Field disabled={disabled}>\n <TextArea\n id={`message-${id}`}\n errorMessage={errorMessage.message}\n disabled={disabled}\n name={'message'}\n value={giftOptions.message}\n label={dictionary.formMessagePlaceholder}\n onChange={onInputChange}\n onBlur={onBlur}\n />\n </Field>\n </div>\n </>\n );\n};\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport {\n Price,\n Icon,\n Card,\n Accordion,\n AccordionSection,\n} from '@adobe-commerce/elsie/components';\nimport {\n ChevronDown,\n ChevronUp,\n Gift,\n CheckWithCircle,\n} from '@adobe-commerce/elsie/icons';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport {\n GiftFormDataType,\n GiftWrappingConfigProps,\n GiftOptionsReadOnlyViewProps,\n GiftOptionsViewProps,\n} from '@/cart/types';\n\nexport interface ReadOnlyFormViewProps {\n view: GiftOptionsViewProps;\n giftOptions: GiftFormDataType;\n readOnlyFormOrderView: GiftOptionsReadOnlyViewProps;\n giftWrappingConfig: GiftWrappingConfigProps[] | [];\n}\n\nexport const ReadOnlyFormView: FunctionComponent<ReadOnlyFormViewProps> = ({\n view,\n giftOptions,\n giftWrappingConfig,\n readOnlyFormOrderView,\n}) => {\n const dictionary = useText({\n readOnlyProductTitle: 'Cart.GiftOptions.product.readOnlyFormView.title',\n wrapping: 'Cart.GiftOptions.product.readOnlyFormView.wrapping',\n recipient: 'Cart.GiftOptions.product.readOnlyFormView.recipient',\n sender: 'Cart.GiftOptions.product.readOnlyFormView.sender',\n message: 'Cart.GiftOptions.product.readOnlyFormView.message',\n\n readOnlyOrderTitle: 'Cart.GiftOptions.order.readOnlyFormView.title',\n readOnlyOrderGiftReceiptTitle:\n 'Cart.GiftOptions.order.readOnlyFormView.giftReceipt',\n readOnlyOrderGiftReceiptText:\n 'Cart.GiftOptions.order.readOnlyFormView.giftReceiptText',\n readOnlyOrderGiftPrintCardTitle:\n 'Cart.GiftOptions.order.readOnlyFormView.printCard',\n readOnlyOrderGiftPrintCardText:\n 'Cart.GiftOptions.order.readOnlyFormView.printCardText',\n readOnlyOrderGiftWrapTitle:\n 'Cart.GiftOptions.order.readOnlyFormView.giftWrap',\n readOnlyOrderGiftWrapOptionsText:\n 'Cart.GiftOptions.order.readOnlyFormView.giftWrapOptions',\n\n readOnlyOrderFormTitle: 'Cart.GiftOptions.order.readOnlyFormView.formTitle',\n readOnlyOrderFormTo: 'Cart.GiftOptions.order.readOnlyFormView.formTo',\n readOnlyOrderFormFrom: 'Cart.GiftOptions.order.readOnlyFormView.formFrom',\n readOnlyOrderFormMessageTitle:\n 'Cart.GiftOptions.order.readOnlyFormView.formMessageTitle',\n });\n\n const {\n recipientName,\n senderName,\n message,\n giftReceiptIncluded,\n printedCardIncluded,\n isGiftWrappingSelected,\n } = giftOptions;\n\n const giftWrapCart = giftWrappingConfig?.find(\n ({ uid }) => uid === giftOptions?.giftWrappingId\n );\n const isGiftMessageProvided = !!recipientName || !!senderName || !!message;\n const giftWrapProductSelectLabel = giftWrapCart?.design;\n const shouldRenderGiftOptions =\n giftReceiptIncluded || printedCardIncluded || giftWrapCart?.selected;\n\n const productGiftOptionsConfig = [\n {\n id: 1,\n title: dictionary.wrapping,\n message: isGiftWrappingSelected ? giftWrapProductSelectLabel : '',\n },\n {\n id: 2,\n title: dictionary.recipient,\n message: recipientName,\n },\n {\n id: 3,\n title: dictionary.sender,\n message: senderName,\n },\n {\n id: 4,\n title: dictionary.message,\n message,\n },\n ];\n\n const noProductGiftOptionsApplied = productGiftOptionsConfig.every(\n ({ message }) => !message\n );\n\n if (view === 'product' && !noProductGiftOptionsApplied) {\n return (\n <Accordion\n data-testid=\"gift-options-product\"\n iconClose={ChevronUp}\n iconOpen={ChevronDown}\n actionIconPosition=\"right\"\n >\n <AccordionSection\n title={dictionary.readOnlyProductTitle}\n showIconLeft={true}\n iconLeft={Gift}\n defaultOpen={false}\n renderContentWhenClosed={false}\n >\n <div>\n {productGiftOptionsConfig\n .filter((element) => element.message)\n .map((config) => {\n return (\n <p key={config.id}>\n {config.title} {config.message}\n </p>\n );\n })}\n </div>\n </AccordionSection>\n </Accordion>\n );\n }\n\n if (view === 'order' && (isGiftMessageProvided || shouldRenderGiftOptions)) {\n const renderHeader = (\n <div className=\"cart-gift-options-readonly__header\">\n <Icon source={Gift} size=\"24\" />\n <span>{dictionary.readOnlyOrderTitle}</span>\n </div>\n );\n\n const selectedGiftOptions = (\n <>\n {giftReceiptIncluded ? (\n <div className=\"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-receipt\">\n <Icon source={CheckWithCircle} size=\"16\" />\n <p>{dictionary.readOnlyOrderGiftReceiptTitle}</p>\n <p>{dictionary.readOnlyOrderGiftReceiptText}</p>\n </div>\n ) : null}\n {printedCardIncluded ? (\n <div className=\"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--print-card\">\n <Icon source={CheckWithCircle} size=\"16\" />\n <p>{dictionary.readOnlyOrderGiftPrintCardTitle}</p>\n <p>{dictionary.readOnlyOrderGiftPrintCardText}</p>\n </div>\n ) : null}\n {giftWrapCart?.selected ? (\n <div className=\"cart-gift-options-readonly__checkboxes cart-gift-options-readonly__checkboxes--gift-wrap\">\n <Icon source={CheckWithCircle} size=\"16\" />\n <p>\n {dictionary.readOnlyOrderGiftWrapTitle} (+\n <Price\n amount={giftWrapCart.price.value}\n currency={giftWrapCart.price.currency}\n weight=\"normal\"\n />\n )\n </p>\n <p>{`${dictionary.readOnlyOrderGiftWrapOptionsText} ${giftWrapCart?.design}`}</p>\n </div>\n ) : null}\n </>\n );\n\n const enteredGiftMessage = isGiftMessageProvided ? (\n <div className=\"cart-gift-options-readonly__form\">\n <div>{dictionary.readOnlyOrderFormTitle}</div>\n <div>\n <p>\n <span>{dictionary.readOnlyOrderFormTo}</span>\n <span>{recipientName}</span>\n </p>\n <p>\n <span>{dictionary.readOnlyOrderFormFrom}</span>\n <span>{senderName}</span>\n </p>\n </div>\n <div>\n <p>{dictionary.readOnlyOrderFormMessageTitle}</p>\n <p>{message}</p>\n </div>\n </div>\n ) : null;\n\n return (\n <Card variant={readOnlyFormOrderView}>\n {renderHeader}\n {selectedGiftOptions}\n {enteredGiftMessage}\n </Card>\n );\n }\n\n return null;\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 { useCallback, StateUpdater, Dispatch } from 'preact/hooks';\nimport { FunctionComponent, JSX, VNode } from 'preact';\nimport { GiftOptionModal } from './Elements/GiftOptionModal';\nimport { GiftLoader } from './Elements/GiftLoader';\nimport { CheckboxGroup } from './Elements/CheckboxGroup';\nimport { FormFields } from './Elements/FormFields';\nimport { ReadOnlyFormView } from './Elements/ReadOnlyFormView';\nimport { classes } from '@adobe-commerce/elsie/lib';\nimport {\n Accordion,\n AccordionSection,\n Card,\n Icon,\n ImageNodeRenderProps,\n ProgressSpinner,\n} from '@adobe-commerce/elsie/components';\nimport {\n ChevronDown,\n ChevronUp,\n CheckWithCircle,\n Gift,\n} from '@adobe-commerce/elsie/icons';\nimport {\n GiftWrappingConfigProps,\n GiftOptionsViewProps,\n GiftFormDataType,\n GiftOptionsReadOnlyViewProps,\n ProductGiftOptionsConfig,\n} from '@/cart/types';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { CartModel, Item } from '@/cart/data/models';\nimport '@/cart/components/GiftOptions/GiftOptions.css';\n\nexport interface GiftOptionsProps {\n readOnlyFormOrderView: GiftOptionsReadOnlyViewProps;\n cartData: CartModel | null;\n errorsField: Record<string, string>;\n isGiftMessageVisible: boolean;\n fieldsDisabled: boolean;\n loading: boolean;\n showModal: boolean;\n isEditable: boolean;\n isGiftOptionsApplied: boolean;\n updateLoading: boolean;\n areGiftOptionsVisible: Record<string, boolean>;\n view: GiftOptionsViewProps;\n giftOptions: GiftFormDataType;\n imageSwatchImageNode?: VNode | ((props: ImageNodeRenderProps) => JSX.Element);\n item: Item | ProductGiftOptionsConfig;\n giftWrappingConfig: GiftWrappingConfigProps[] | [];\n updateGiftOptions: (\n name: string,\n value?: string | boolean | number,\n extraGiftOptions?: Record<string, string | boolean | number>\n ) => void;\n setShowModal: Dispatch<StateUpdater<boolean>>;\n handleFormMouseLeave: () => void;\n onInputChange: (event: Event) => void;\n onBlur: (event: Event) => void;\n}\n\nexport const GiftOptions: FunctionComponent<GiftOptionsProps> = ({\n item,\n view,\n loading,\n giftOptions,\n showModal,\n isEditable,\n errorsField,\n updateLoading,\n cartData,\n fieldsDisabled,\n isGiftOptionsApplied,\n giftWrappingConfig,\n readOnlyFormOrderView,\n isGiftMessageVisible,\n areGiftOptionsVisible,\n imageSwatchImageNode,\n onBlur,\n setShowModal,\n updateGiftOptions,\n onInputChange,\n handleFormMouseLeave,\n}) => {\n const dictionary = useText({\n accordionHeading: `Cart.GiftOptions.${view}.accordionHeading`,\n });\n\n const renderAccordion = useCallback(\n (defaultOpen: boolean) => {\n return (\n <Accordion\n data-testid=\"gift-options-product\"\n iconClose={ChevronUp}\n iconOpen={ChevronDown}\n actionIconPosition=\"right\"\n >\n <AccordionSection\n title={\n <div className=\"cart-gift-options-view__icon--success\">\n <span>{dictionary.accordionHeading}</span>\n {isGiftOptionsApplied ? (\n <Icon source={CheckWithCircle} size=\"16\" />\n ) : null}\n </div>\n }\n ariaLabelTitle={dictionary.accordionHeading}\n showIconLeft={true}\n iconLeft={Gift}\n defaultOpen={isGiftOptionsApplied || defaultOpen}\n renderContentWhenClosed={false}\n >\n <>\n <CheckboxGroup\n className={'cart-gift-options-view__top'}\n view={view}\n item={item}\n giftOptions={giftOptions}\n disabled={fieldsDisabled}\n onInputChange={onInputChange}\n cartData={cartData}\n giftWrappingConfig={giftWrappingConfig}\n setShowModal={setShowModal}\n areGiftOptionsVisible={areGiftOptionsVisible}\n />\n <form\n className=\"cart-gift-options-view__footer\"\n onMouseLeave={handleFormMouseLeave}\n >\n <FormFields\n view={view}\n giftOptions={giftOptions}\n disabled={fieldsDisabled}\n errorMessage={errorsField}\n onInputChange={onInputChange}\n onBlur={onBlur}\n isGiftMessageVisible={isGiftMessageVisible}\n />\n </form>\n </>\n </AccordionSection>\n </Accordion>\n );\n },\n [\n view,\n item,\n cartData,\n dictionary,\n errorsField,\n giftOptions,\n fieldsDisabled,\n giftWrappingConfig,\n areGiftOptionsVisible,\n isGiftOptionsApplied,\n isGiftMessageVisible,\n onBlur,\n setShowModal,\n onInputChange,\n handleFormMouseLeave,\n ]\n );\n\n if (!areGiftOptionsVisible.isGiftOptionsVisible && !isGiftMessageVisible) {\n return null;\n }\n\n return (\n <div\n id=\"cart-gift-options-view\"\n className={classes([\n 'cart-gift-options-view',\n `cart-gift-options-view--${view}`,\n ['cart-gift-options-view--loading', updateLoading],\n ])}\n >\n {updateLoading ? (\n <ProgressSpinner className=\"cart-gift-options-view__spinner\" />\n ) : null}\n {!loading ? (\n <>\n {!isEditable ? (\n <div className={'cart-gift-options-view--readonly'}>\n <ReadOnlyFormView\n view={view}\n giftOptions={giftOptions}\n giftWrappingConfig={giftWrappingConfig}\n readOnlyFormOrderView={readOnlyFormOrderView}\n />\n </div>\n ) : null}\n {showModal ? (\n <GiftOptionModal\n view={view}\n productName={item && 'name' in item ? item?.name : ''}\n showModal={showModal}\n giftWrappingConfig={giftWrappingConfig}\n setShowModal={() => setShowModal(false)}\n updateGiftOptions={updateGiftOptions}\n imageSwatchImageNode={imageSwatchImageNode}\n />\n ) : null}\n {view === 'product' && isEditable ? renderAccordion(false) : null}\n {view === 'order' && isEditable ? (\n <Card variant={'secondary'}>{renderAccordion(true)}</Card>\n ) : null}\n </>\n ) : (\n <GiftLoader />\n )}\n </div>\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 { CartModel, Item } from '@/cart/data/models';\nimport { state } from '@/cart/lib/state';\nimport {\n GiftWrappingConfigProps,\n GiftOptionsViewProps,\n ProductGiftOptionsConfig,\n} from '@/cart/types';\n\n// This helper is specifically designed for small functions needed in useGiftOptions for formSections configuration manipulation.\nexport const DEFAULT_FORM_STATE = {\n recipientName: '',\n senderName: '',\n message: '',\n};\n\nexport const DEFAULT_CHECKBOXES_STATE = {\n giftReceiptIncluded: false,\n printedCardIncluded: false,\n isGiftWrappingSelected: false,\n};\n\nexport const shouldShowGiftMessage = (\n item: CartModel['items'][0] | ProductGiftOptionsConfig,\n isProductView: boolean\n) => {\n if (!isProductView) return !!state.config?.allowGiftMessageOnOrder;\n\n const allowGiftMessageOnOrderItems =\n state.config?.allowGiftMessageOnOrderItems ?? false;\n\n return typeof item?.giftMessageAvailable === 'boolean'\n ? item?.giftMessageAvailable\n : allowGiftMessageOnOrderItems;\n};\n\nexport const getSelectedGiftWrapping = (\n giftWrappingOptions: GiftWrappingConfigProps[] | []\n): GiftWrappingConfigProps | undefined => {\n const fallbackGiftWrappingData = {\n uid: '',\n design: '',\n selected: false,\n image: {\n url: '',\n design: '',\n },\n price: {\n currency: 'USD',\n value: 0,\n },\n };\n\n if (!giftWrappingOptions || giftWrappingOptions.length === 0) {\n return fallbackGiftWrappingData;\n }\n\n const isNotSelected = giftWrappingOptions?.every((wrap) => !wrap.selected);\n\n if (isNotSelected) {\n return giftWrappingOptions[0];\n }\n\n return giftWrappingOptions.find((wrap) => wrap.selected);\n};\n\nexport const areGiftOptionsDisabled = (\n view: GiftOptionsViewProps,\n item: Item | ProductGiftOptionsConfig\n) => {\n const {\n allowGiftWrappingOnOrder,\n allowGiftWrappingOnOrderItems,\n allowGiftMessageOnOrder,\n allowGiftMessageOnOrderItems,\n allowGiftReceipt,\n allowPrintedCard,\n } = state.config || {};\n\n const isGiftOptionsOnProductDisabled =\n !allowGiftMessageOnOrderItems &&\n !allowGiftWrappingOnOrderItems &&\n !shouldShowGiftMessage(item, true);\n\n const isGiftOptionsOnOrderDisabled =\n !allowGiftWrappingOnOrder &&\n !allowGiftMessageOnOrder &&\n !allowGiftReceipt &&\n !allowPrintedCard;\n\n if (view === 'product' && isGiftOptionsOnProductDisabled) {\n return true;\n }\n\n if (view === 'order' && isGiftOptionsOnOrderDisabled) {\n return true;\n }\n\n return false;\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 { useCallback, useEffect, useState, useMemo } from 'preact/hooks';\nimport { events } from '@adobe-commerce/event-bus';\nimport { CartModel, Item } from '@/cart/data/models';\nimport { setGiftOptionsOnCart, updateProductsFromCart } from '@/cart/api';\nimport {\n DEFAULT_FORM_STATE,\n DEFAULT_CHECKBOXES_STATE,\n shouldShowGiftMessage,\n areGiftOptionsDisabled,\n} from '@/cart/lib/giftOptionsHelper';\nimport {\n GiftOptionsDataSourcesProps,\n GiftOptionsViewProps,\n GiftWrappingConfigProps,\n GiftFormDataType,\n ProductGiftOptionsConfig,\n} from '@/cart/types';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { state } from '@/cart/lib/state';\n\nexport interface UseGiftOptionsProps {\n item: Item | ProductGiftOptionsConfig;\n view: GiftOptionsViewProps;\n dataSource: GiftOptionsDataSourcesProps;\n initialLoading: boolean;\n handleItemsLoading?: (uid: string, state: boolean) => void;\n handleItemsError?: (uid: string, message?: string) => void;\n onItemUpdate?: ({ item }: { item: Item }) => void;\n onGiftOptionsChange?: (data: GiftFormDataType) => void;\n}\n\nexport const useGiftOptions = ({\n item,\n view,\n dataSource,\n initialLoading,\n handleItemsLoading,\n handleItemsError,\n onItemUpdate,\n onGiftOptionsChange,\n}: UseGiftOptionsProps) => {\n const isProductView = view === 'product';\n\n const dictionary = useText({\n requiredFieldError: 'Cart.GiftOptions.formText.requiredFieldError',\n });\n\n const [loading, setLoading] = useState(() => initialLoading);\n const [areGiftOptionsVisible, setAreGiftOptionsVisible] = useState({\n isGiftReceiptVisible: true,\n isPrintedCartVisible: true,\n isGiftWrappingVisible: true,\n isGiftOptionsVisible: true,\n });\n const [isGiftMessageVisible, setIsGiftMessageVisible] = useState(true);\n const [updateLoading, setUpdateLoading] = useState(false);\n const [fieldsDisabled, setFieldsDisabled] = useState(false);\n const [isDataChanged, setIsDataChanged] = useState(false);\n const [isFormTouched, setIsFormTouched] = useState(false);\n const [showModal, setShowModal] = useState<boolean>(false);\n const [giftWrappingConfig, setGiftWrappingConfig] = useState<\n GiftWrappingConfigProps[] | []\n >([]);\n const [cartData, setCartData] = useState<CartModel | null>(null);\n const [errorsField, setErrorsField] =\n useState<typeof DEFAULT_FORM_STATE>(DEFAULT_FORM_STATE);\n const [giftOptions, setGiftOptions] = useState<GiftFormDataType>(() => ({\n giftWrappingId: '',\n ...DEFAULT_FORM_STATE,\n ...DEFAULT_CHECKBOXES_STATE,\n }));\n\n const isFormFilled =\n giftOptions.recipientName?.trim() &&\n giftOptions.senderName?.trim() &&\n giftOptions.message?.trim();\n\n const isFormEmpty =\n !giftOptions.recipientName?.trim() &&\n !giftOptions.senderName?.trim() &&\n !giftOptions.message?.trim();\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const applyGiftOptionsToCart = useCallback(\n async (updatedGiftOptions: GiftFormDataType) => {\n // Update loading state used to render loading indicator required only in order view\n setUpdateLoading(view === 'order');\n setFieldsDisabled(true);\n\n switch (view) {\n case 'product':\n {\n if ('uid' in item) {\n handleItemsLoading?.(item.uid, true);\n handleItemsError?.(item.uid);\n }\n\n const {\n recipientName,\n senderName,\n message,\n giftWrappingId,\n isGiftWrappingSelected,\n } = updatedGiftOptions;\n\n const giftOptions = {\n gift_message: {\n to: recipientName ?? '',\n from: senderName ?? '',\n message: message ?? '',\n },\n gift_wrapping_id: isGiftWrappingSelected ? giftWrappingId : null,\n };\n\n if ('uid' in item && 'quantity' in item) {\n await updateProductsFromCart([\n {\n uid: item.uid,\n quantity: item.quantity,\n giftOptions,\n },\n ])\n .then(() => {\n onItemUpdate?.({ item });\n })\n .finally(() => {\n handleItemsLoading?.(item.uid, false);\n setFieldsDisabled(false);\n setIsDataChanged(false);\n setUpdateLoading(false);\n })\n .catch((error: any) => {\n console.warn(error);\n });\n }\n }\n break;\n case 'order':\n await setGiftOptionsOnCart(updatedGiftOptions).finally(() => {\n setFieldsDisabled(false);\n setIsDataChanged(false);\n setUpdateLoading(false);\n });\n break;\n default:\n console.error(\n 'Incorrect \"view\" prop value provided for GiftOptions container (storefront-cart)'\n );\n break;\n }\n },\n [handleItemsError, handleItemsLoading, item, onItemUpdate, view]\n );\n\n const updateGiftOptions = useCallback(\n (\n name: string,\n value: string | boolean | number | undefined,\n extraGiftOptions: Record<string, string | boolean | number> = {}\n ) => {\n setGiftOptions((prevGiftOptions: GiftFormDataType) => {\n const isValidGiftFormKey = (\n key: string\n ): key is keyof GiftFormDataType => key in prevGiftOptions;\n\n const getPrevValue = (key: string) =>\n isValidGiftFormKey(key) ? prevGiftOptions[key] : undefined;\n\n const hasChanged =\n getPrevValue(name) !== value ||\n Object.keys(extraGiftOptions).some(\n (key) => getPrevValue(key) !== extraGiftOptions[key]\n );\n\n if (!hasChanged) {\n onGiftOptionsChange?.(prevGiftOptions);\n return prevGiftOptions;\n }\n\n const updatedGiftOptions = {\n ...prevGiftOptions,\n [name]: value,\n ...extraGiftOptions,\n };\n\n if (\n !updatedGiftOptions.recipientName &&\n !updatedGiftOptions.senderName &&\n !updatedGiftOptions.message\n ) {\n setIsFormTouched(true);\n }\n\n if (\n typeof value === 'boolean' ||\n [\n 'giftWrappingId',\n 'giftReceiptIncluded',\n 'printedCardIncluded',\n ].includes(name)\n ) {\n setIsFormTouched(false);\n typeof onGiftOptionsChange === 'function'\n ? onGiftOptionsChange(updatedGiftOptions)\n : applyGiftOptionsToCart(updatedGiftOptions);\n }\n\n setIsDataChanged(true);\n\n onGiftOptionsChange?.(updatedGiftOptions);\n return updatedGiftOptions;\n });\n },\n [applyGiftOptionsToCart, onGiftOptionsChange]\n );\n\n const handleFormMouseLeave = useCallback(\n async () => {\n // Fields disabled if other event handler already triggered\n if (fieldsDisabled) return;\n if (typeof onGiftOptionsChange === 'function') return;\n\n // Case when user removed all form fields - reset to initial state\n if (isFormEmpty && isFormTouched) {\n setErrorsField(DEFAULT_FORM_STATE);\n setIsFormTouched(false);\n await applyGiftOptionsToCart(giftOptions);\n }\n\n // Case when user edited one of form fields\n if (isDataChanged && isFormFilled) {\n setIsFormTouched(true);\n await applyGiftOptionsToCart(giftOptions);\n }\n },\n [\n applyGiftOptionsToCart,\n giftOptions,\n isDataChanged,\n isFormEmpty,\n isFormTouched,\n fieldsDisabled,\n onGiftOptionsChange,\n isFormFilled\n ]\n );\n\n const handleBlur = useCallback(\n async (event: Event) => {\n // Fields disabled if other event handler already triggered\n if (fieldsDisabled) return;\n if (typeof onGiftOptionsChange === 'function') return;\n\n const { name, value } = event.target as HTMLInputElement;\n\n setErrorsField((prevErrors: typeof DEFAULT_FORM_STATE) => ({\n ...prevErrors,\n [name]: value.trim() ? '' : dictionary.requiredFieldError,\n }));\n\n // Case when user removed all form fields - reset to initial state\n if (isFormEmpty && isFormTouched) {\n setErrorsField(DEFAULT_FORM_STATE);\n setIsFormTouched(false);\n await applyGiftOptionsToCart(giftOptions);\n }\n\n if (isDataChanged && isFormFilled) {\n await applyGiftOptionsToCart(giftOptions);\n }\n },\n [\n fieldsDisabled,\n isFormEmpty,\n isFormTouched,\n isDataChanged,\n isFormFilled,\n dictionary,\n applyGiftOptionsToCart,\n giftOptions,\n onGiftOptionsChange,\n ]\n );\n\n const onInputChange = useCallback(\n (event: Event) => {\n const target = event.target as HTMLInputElement;\n const name = target.name;\n const value = target.type === 'checkbox' ? target.checked : target.value;\n\n updateGiftOptions(name, value);\n },\n [updateGiftOptions]\n );\n\n useEffect(() => {\n if (isProductView) return;\n\n const dataEvent = events.on(\n // @ts-ignore\n dataSource === 'cart' ? 'cart/data' : 'order/data',\n (payload: CartModel) => {\n setCartData(payload);\n // Gift wrapping is allowed for the cart if at least one item has gift wrapping available\n const isCartGiftWrappingAllowed = payload?.items?.some(\n ({ giftWrappingAvailable }: { giftWrappingAvailable: boolean }) =>\n giftWrappingAvailable\n );\n const isCartGiftWrappingApplied = payload?.cartGiftWrapping?.some(\n (wrap: GiftWrappingConfigProps) => wrap.selected\n );\n\n // If gift wrapping is not allowed and it is applied, remove it\n if (!isCartGiftWrappingAllowed && isCartGiftWrappingApplied) {\n applyGiftOptionsToCart({\n ...giftOptions,\n giftWrappingId: '',\n isGiftWrappingSelected: false,\n });\n }\n },\n { eager: true }\n );\n return () => {\n dataEvent?.off();\n };\n }, [setCartData, applyGiftOptionsToCart, dataSource, giftOptions, isProductView]);\n\n const giftOptionsState: GiftFormDataType | null = useMemo(() => {\n if (!cartData && !item) return null;\n\n const giftWrappingOptions: GiftWrappingConfigProps[] = isProductView\n ? item?.productGiftWrapping?.map(\n (wrap: GiftWrappingConfigProps): GiftWrappingConfigProps => ({\n ...wrap,\n price:\n item?.giftWrappingPrice && item?.giftWrappingPrice?.value > 0\n ? item.giftWrappingPrice\n : wrap.price,\n })\n )\n : cartData?.cartGiftWrapping || [];\n\n const selectedWrap = giftWrappingOptions?.find((wrap) => wrap.selected);\n const selectedGiftWrappingId =\n selectedWrap?.uid ?? giftWrappingOptions?.[0]?.uid;\n\n const isGiftWrappingSelected = !!selectedWrap;\n\n const giftMessageConfig = isProductView\n ? item.giftMessage\n : cartData?.giftMessage;\n const printedCardIncluded = cartData?.printedCardIncluded;\n const giftReceiptIncluded = cartData?.giftReceiptIncluded;\n\n const giftMessageAvailable = shouldShowGiftMessage(item, isProductView);\n\n const allowGiftWrappingOnOrder = state.config?.allowGiftWrappingOnOrder;\n const allowGiftReceipt = state.config?.allowGiftReceipt;\n const allowPrintedCard = state.config?.allowPrintedCard;\n const isGiftWrappingAvailableForSome = cartData?.items?.some(\n (item: { giftWrappingAvailable: boolean }) => item.giftWrappingAvailable\n );\n const allowGiftWrappingOnProduct = item?.giftWrappingAvailable;\n const isGiftReceiptVisible = isProductView ? false : !!allowGiftReceipt;\n const isPrintedCartVisible = isProductView ? false : !!allowPrintedCard;\n const isGiftWrappingVisible = isProductView\n ? !!allowGiftWrappingOnProduct && !!giftWrappingOptions.length\n : !!allowGiftWrappingOnOrder &&\n !!giftWrappingOptions.length &&\n !!isGiftWrappingAvailableForSome;\n const checkBoxesIsHidden =\n !isGiftReceiptVisible && !isPrintedCartVisible && !isGiftWrappingVisible;\n\n setAreGiftOptionsVisible({\n isGiftReceiptVisible,\n isPrintedCartVisible,\n isGiftWrappingVisible,\n isGiftOptionsVisible: !checkBoxesIsHidden,\n });\n setIsGiftMessageVisible(giftMessageAvailable);\n\n return {\n ...(item && 'uid' in item ? { itemId: item.uid } : {}),\n ...(!isProductView\n ? {\n printedCardIncluded,\n giftReceiptIncluded,\n }\n : {}),\n ...giftMessageConfig,\n giftWrappingId: selectedGiftWrappingId,\n isGiftWrappingSelected,\n giftWrappingOptions,\n };\n }, [cartData, item, isProductView]);\n\n useEffect(() => {\n if (!giftOptionsState) return;\n\n const { giftWrappingOptions, ...giftOptionsFetchData } = giftOptionsState;\n\n setGiftOptions(giftOptionsFetchData);\n\n if (giftWrappingOptions?.length) {\n setGiftWrappingConfig(giftWrappingOptions);\n }\n\n setLoading(false);\n }, [giftOptionsState]);\n\n const isGiftOptionsApplied = useMemo(() => {\n return Object.entries(giftOptions)\n .filter(([key]) => key !== 'itemId' && key !== 'giftWrappingId')\n .some(([, value]) => Boolean(value));\n }, [giftOptions]);\n\n const isGiftOptionsHidden = useMemo(() => {\n return !loading && !!state?.config && areGiftOptionsDisabled(view, item);\n }, [item, loading, view]);\n\n return {\n loading,\n giftOptions,\n showModal,\n errorsField,\n updateLoading,\n cartData,\n fieldsDisabled,\n isGiftOptionsApplied,\n giftWrappingConfig,\n setFieldsDisabled,\n handleFormMouseLeave,\n onInputChange,\n updateGiftOptions,\n setShowModal,\n handleBlur,\n isGiftMessageVisible,\n areGiftOptionsVisible,\n isGiftOptionsHidden,\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 { GiftOptions as GiftOptionsComponent } from '@/cart/components';\nimport { Item } from '@/cart/data/models';\nimport { Container, Slot, SlotProps } from '@adobe-commerce/elsie/lib';\nimport { useGiftOptions } from '@/cart/hooks/useGiftOptions';\nimport {\n GiftOptionsViewProps,\n GiftOptionsDataSourcesProps,\n GiftFormDataType,\n ProductGiftOptionsConfig,\n GiftOptionsReadOnlyViewProps,\n} from '@/cart/types';\nimport { ImageNodeRenderProps, ImageProps } from '@adobe-commerce/elsie/components';\n\nexport interface GiftOptionsProps {\n item: Item | ProductGiftOptionsConfig;\n view?: GiftOptionsViewProps;\n readOnlyFormOrderView: GiftOptionsReadOnlyViewProps;\n dataSource?: GiftOptionsDataSourcesProps;\n isEditable?: boolean;\n initialLoading?: boolean;\n handleItemsLoading?: (uid: string, state: boolean) => void;\n handleItemsError?: (uid: string, message?: string) => void;\n onItemUpdate?: ({ item }: { item: Item }) => void;\n onGiftOptionsChange?: (data: GiftFormDataType) => void;\n slots?: {\n SwatchImage?: SlotProps<{ \n item: Item | ProductGiftOptionsConfig\n imageSwatchContext: ImageNodeRenderProps['imageSwatchContext']\n defaultImageProps: ImageProps\n }>;\n };\n}\n\nexport const GiftOptions: Container<GiftOptionsProps> = ({\n item,\n view = 'order',\n readOnlyFormOrderView = 'primary',\n dataSource = 'cart',\n isEditable = true,\n initialLoading = true,\n slots,\n handleItemsLoading,\n handleItemsError,\n onItemUpdate,\n onGiftOptionsChange,\n}: GiftOptionsProps) => {\n const {\n isGiftMessageVisible,\n areGiftOptionsVisible,\n loading,\n giftOptions,\n showModal,\n errorsField,\n updateLoading,\n cartData,\n isGiftOptionsApplied,\n fieldsDisabled,\n giftWrappingConfig,\n handleFormMouseLeave,\n updateGiftOptions,\n setShowModal,\n onInputChange,\n handleBlur,\n isGiftOptionsHidden,\n } = useGiftOptions({\n item,\n view,\n dataSource,\n initialLoading,\n handleItemsLoading,\n handleItemsError,\n onItemUpdate,\n onGiftOptionsChange,\n });\n\n if (isGiftOptionsHidden) {\n return null;\n }\n\n return (\n <GiftOptionsComponent\n item={item}\n view={view}\n loading={loading}\n onBlur={handleBlur}\n giftOptions={giftOptions}\n showModal={showModal}\n isEditable={isEditable}\n errorsField={errorsField}\n setShowModal={setShowModal}\n updateLoading={updateLoading}\n updateGiftOptions={updateGiftOptions}\n cartData={cartData}\n isGiftOptionsApplied={isGiftOptionsApplied}\n fieldsDisabled={fieldsDisabled}\n giftWrappingConfig={giftWrappingConfig}\n handleFormMouseLeave={handleFormMouseLeave}\n readOnlyFormOrderView={readOnlyFormOrderView}\n onInputChange={onInputChange}\n isGiftMessageVisible={isGiftMessageVisible}\n areGiftOptionsVisible={areGiftOptionsVisible}\n imageSwatchImageNode={\n slots?.SwatchImage ? ({ imageSwatchContext, ...defaultImageProps }) => (\n // No need to provide default content, as the slot will only be rendered if it's actually provided.\n <Slot \n name=\"SwatchImage\"\n slotTag='span'\n contentTag='span'\n slot={slots.SwatchImage} \n context={{ item, imageSwatchContext, defaultImageProps }} \n />\n ) : undefined\n }\n />\n );\n};\n"],"names":["SvgCheckWithCircle","props","React","SvgGift","useFocusTrap","showModal","containerRef","useRef","useEffect","container","focusableElements","firstElement","lastElement","handleKeyDown","event","GiftOptionModal","view","productName","giftWrappingConfig","imageSwatchImageNode","setShowModal","updateGiftOptions","dictionary","useText","giftWrappingItem","setGiftWrappingItem","useState","selectedGiftWrapping","item","focusElement","renderTitle","jsx","jsxs","Modal","Fragment","_a","Price","ContentGrid","wrapItem","ImageSwatch","Button","GiftLoader","Skeleton","SkeletonRow","CheckboxGroup","className","giftOptions","disabled","cartData","onInputChange","areGiftOptionsVisible","id","useId","productGiftWrappingOptions","orderGiftWrappingOptions","giftWrappingOptions","el","selectedGiftWrappingLabel","productGiftWrappingPrice","renderSelectedGiftWrappingLabel","printedCardPrice","_b","state","_c","productWrappingPrice","_d","renderPrice","price","classes","Field","Checkbox","FormFields","errorMessage","onBlur","isGiftMessageVisible","Input","TextArea","ReadOnlyFormView","readOnlyFormOrderView","recipientName","senderName","message","giftReceiptIncluded","printedCardIncluded","isGiftWrappingSelected","giftWrapCart","uid","isGiftMessageProvided","giftWrapProductSelectLabel","shouldRenderGiftOptions","productGiftOptionsConfig","noProductGiftOptionsApplied","Accordion","ChevronUp","ChevronDown","AccordionSection","Gift","element","config","renderHeader","Icon","selectedGiftOptions","CheckWithCircle","enteredGiftMessage","Card","GiftOptions","loading","isEditable","errorsField","updateLoading","fieldsDisabled","isGiftOptionsApplied","handleFormMouseLeave","renderAccordion","useCallback","defaultOpen","ProgressSpinner","DEFAULT_FORM_STATE","DEFAULT_CHECKBOXES_STATE","shouldShowGiftMessage","isProductView","allowGiftMessageOnOrderItems","areGiftOptionsDisabled","allowGiftWrappingOnOrder","allowGiftWrappingOnOrderItems","allowGiftMessageOnOrder","allowGiftReceipt","allowPrintedCard","isGiftOptionsOnProductDisabled","isGiftOptionsOnOrderDisabled","useGiftOptions","dataSource","initialLoading","handleItemsLoading","handleItemsError","onItemUpdate","onGiftOptionsChange","setLoading","setAreGiftOptionsVisible","setIsGiftMessageVisible","setUpdateLoading","setFieldsDisabled","isDataChanged","setIsDataChanged","isFormTouched","setIsFormTouched","setGiftWrappingConfig","setCartData","setErrorsField","setGiftOptions","isFormFilled","isFormEmpty","_e","_f","applyGiftOptionsToCart","updatedGiftOptions","giftWrappingId","updateProductsFromCart","error","setGiftOptionsOnCart","name","value","extraGiftOptions","prevGiftOptions","isValidGiftFormKey","key","getPrevValue","handleBlur","prevErrors","target","dataEvent","events","payload","isCartGiftWrappingAllowed","giftWrappingAvailable","isCartGiftWrappingApplied","wrap","giftOptionsState","useMemo","selectedWrap","selectedGiftWrappingId","giftMessageConfig","giftMessageAvailable","isGiftWrappingAvailableForSome","allowGiftWrappingOnProduct","isGiftReceiptVisible","isPrintedCartVisible","isGiftWrappingVisible","giftOptionsFetchData","isGiftOptionsHidden","slots","GiftOptionsComponent","imageSwatchContext","defaultImageProps","Slot"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1,3 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
3
  import{jsx as i,jsxs as m,Fragment as R}from"@dropins/tools/preact-jsx-runtime.js";import{useState as j,useEffect as w,useCallback as O}from"@dropins/tools/preact-compat.js";import{classes as h,VComponent as u,Slot as y}from"@dropins/tools/lib.js";import{g as B}from"../chunks/persisted-data.js";import{events as V}from"@dropins/tools/event-bus.js";import{Button as L,Price as N}from"@dropins/tools/components.js";/* empty css */import{useText as D}from"@dropins/tools/i18n.js";import"@dropins/tools/preact-hooks.js";import{s as b}from"../chunks/resetCart.js";import{p as $}from"../chunks/acdl.js";import{u as q}from"../chunks/updateProductsFromCart.js";import"../chunks/CartSummaryGrid.js";import{C as z}from"../chunks/CartSummaryList.js";import"../chunks/OrderSummary.js";import"../chunks/CartSummaryTable2.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/refreshCart.js";import"../fragments.js";import"../chunks/EmptyCart.js";import"../chunks/WarningWithCircle.js";import"../chunks/ChevronDown.js";import"../chunks/getEstimatedTotals.js";import"../chunks/OrderSummaryLine.js";import"../chunks/ChevronUp.js";import"../chunks/Coupon.js";import"../chunks/GiftCard.js";const J=({className:_,products:s,productListFooter:l,subtotal:e,subtotalExcludingTaxes:d,preCheckoutSection:n,ctas:o,...x})=>{const p=D({subtotal:"Cart.MiniCart.subtotal",subtotalExcludingTaxes:"Cart.MiniCart.subtotalExcludingTaxes"});return i("div",{...x,className:h(["cart-mini-cart",_]),children:s&&m(R,{children:[i("div",{className:"cart-mini-cart__products","data-testid":"mini-cart-products-wrapper",children:s}),l&&i("div",{className:h(["cart-mini-cart__productListFooter"]),"data-testid":"mini-cart-product-list-footer",children:i(u,{node:l})}),m("div",{className:"cart-mini-cart__footer","data-testid":"mini-cart-subtotals",children:[e&&m("div",{className:"cart-mini-cart__footer__estimated-total","data-testid":"mini-cart-subtotal",children:[p.subtotal,i(u,{node:e})]}),d&&m("div",{className:"cart-mini-cart__footer__estimated-total-excluding-taxes","data-testid":"mini-cart-subtotal-excluding-taxes",children:[p.subtotalExcludingTaxes,i(u,{node:d,className:h(["dropin-price-summary__price","dropin-price-summary__price--muted"])})]}),n&&i("div",{className:h(["cart-mini-cart__preCheckoutSection"]),"data-testid":"mini-cart-pre-checkout-section",children:i(u,{node:n})}),o&&i(u,{node:o,className:"cart-mini-cart__footer__ctas"})]})]})})},K=({children:_,initialData:s=null,hideFooter:l=!0,slots:e,routeProduct:d,routeCart:n,routeCheckout:o,routeEmptyCartCTA:x,showDiscount:p,showSavings:P,enableItemRemoval:S=!0,enableQuantityUpdate:T=!1,hideHeading:M=!1,...Q})=>{var v,k,I;const[t,U]=j(s),a=(v=b.config)==null?void 0:v.shoppingCartDisplaySetting;w(()=>{const r=V.on("cart/data",f=>{U(f)},{eager:!0});return()=>{r==null||r.off()}},[]);const g=D({cartLink:"Cart.MiniCart.cartLink",checkoutLink:"Cart.MiniCart.checkoutLink"}),C=(r,f)=>q([{uid:r,quantity:f}]),E=r=>C(r,0),c=t==null?void 0:t.hasOutOfStockItems,F=O(()=>{t&&!c&&$(t,b.locale)},[t,c]),G=i(y,{name:"ProductList",slot:e==null?void 0:e.ProductList,context:{itemQuantityUpdateHandler:C,itemRemoveHandler:E,totalQuantity:t==null?void 0:t.totalQuantity},children:i(z,{"data-testid":"default-cart-summary-list",routeProduct:d,routeEmptyCartCTA:x,initialData:t,maxItems:(k=b.config)==null?void 0:k.miniCartMaxItemsDisplay,showMaxItems:!!((I=b.config)!=null&&I.miniCartMaxItemsDisplay),hideHeading:M||!(t!=null&&t.totalQuantity),hideFooter:l,enableRemoveItem:S,enableUpdateItemQuantity:T,showDiscount:p,showSavings:P,slots:{Thumbnail:e==null?void 0:e.Thumbnail}})}),X=r=>i(y,{name:"ProductListFooter",slot:e==null?void 0:e.ProductListFooter,context:{data:r}}),A=r=>i(y,{name:"PreCheckoutSection",slot:e==null?void 0:e.PreCheckoutSection,context:{data:r}}),H=()=>(a==null?void 0:a.subtotal)==="INCLUDING_TAX"||(a==null?void 0:a.subtotal)==="INCLUDING_EXCLUDING_TAX"?{amount:t==null?void 0:t.subtotal.includingTax.value,currency:t==null?void 0:t.subtotal.includingTax.currency,"data-testid":"subtotal-including-tax",style:{font:"inherit"}}:{amount:t==null?void 0:t.subtotal.excludingTax.value,currency:t==null?void 0:t.subtotal.excludingTax.currency,"data-testid":"subtotal-excluding-tax",style:{font:"inherit"}};return i(J,{...Q,productListFooter:X(t),subtotal:t!=null&&t.totalQuantity?(t==null?void 0:t.subtotal)&&i(N,{...H()}):void 0,subtotalExcludingTaxes:t!=null&&t.totalQuantity?(t==null?void 0:t.subtotal)&&((a==null?void 0:a.subtotal)==="INCLUDING_EXCLUDING_TAX"?i(N,{amount:t==null?void 0:t.subtotal.excludingTax.value,currency:t==null?void 0:t.subtotal.excludingTax.currency,"data-testid":"subtotal-including-excluding-tax",style:{font:"inherit"}}):void 0):void 0,preCheckoutSection:A(t),ctas:t!=null&&t.totalQuantity?m("div",{children:[o&&i(L,{"data-testid":"route-checkout-button",variant:"primary",href:c?void 0:o(),disabled:c,"aria-disabled":c,onClick:F,children:g.checkoutLink}),n&&i(L,{"data-testid":"route-cart-button",variant:"tertiary",href:n(),children:g.cartLink})]}):void 0,products:G})};K.getInitialData=async function(){return B()};export{K as MiniCart,K as default};
4
+ //# sourceMappingURL=MiniCart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MiniCart.js","sources":["/@dropins/storefront-cart/src/components/MiniCart/MiniCart.tsx","/@dropins/storefront-cart/src/containers/MiniCart/MiniCart.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { VComponent, classes } from '@adobe-commerce/elsie/lib';\nimport { useText } from '@adobe-commerce/elsie/i18n';\n\nimport '@/cart/components/MiniCart/MiniCart.css';\n\nexport interface MiniCartProps extends HTMLAttributes<HTMLDivElement> {\n products?: VNode;\n productListFooter?: VNode;\n subtotal?: VNode;\n subtotalExcludingTaxes?: VNode;\n preCheckoutSection?: VNode;\n ctas?: VNode;\n}\n\nexport const MiniCart: FunctionComponent<MiniCartProps> = ({\n className,\n products,\n productListFooter,\n subtotal,\n subtotalExcludingTaxes,\n preCheckoutSection,\n ctas,\n ...props\n}) => {\n const dictionary = useText({\n subtotal: 'Cart.MiniCart.subtotal',\n subtotalExcludingTaxes: 'Cart.MiniCart.subtotalExcludingTaxes',\n });\n\n return (\n <div {...props} className={classes(['cart-mini-cart', className])}>\n {/* Content */}\n {products && (\n <>\n <div\n className=\"cart-mini-cart__products\"\n data-testid=\"mini-cart-products-wrapper\"\n >\n {products}\n </div>\n\n {/* Product List Footer */}\n {productListFooter && (\n <div\n className={classes(['cart-mini-cart__productListFooter'])}\n data-testid=\"mini-cart-product-list-footer\"\n >\n <VComponent node={productListFooter} />\n </div>\n )}\n\n <div\n className=\"cart-mini-cart__footer\"\n data-testid=\"mini-cart-subtotals\"\n >\n {/* Subtotal */}\n {subtotal && (\n <div\n className=\"cart-mini-cart__footer__estimated-total\"\n data-testid=\"mini-cart-subtotal\"\n >\n {dictionary.subtotal}\n <VComponent node={subtotal} />\n </div>\n )}\n {/* Subtotal Excluding Taxes */}\n {subtotalExcludingTaxes && (\n <div\n className=\"cart-mini-cart__footer__estimated-total-excluding-taxes\"\n data-testid=\"mini-cart-subtotal-excluding-taxes\"\n >\n {dictionary.subtotalExcludingTaxes}\n <VComponent\n node={subtotalExcludingTaxes}\n className={classes([\n 'dropin-price-summary__price',\n 'dropin-price-summary__price--muted',\n ])}\n />\n </div>\n )}\n\n {/* Pre-checkout section */}\n {preCheckoutSection && (\n <div\n className={classes(['cart-mini-cart__preCheckoutSection'])}\n data-testid=\"mini-cart-pre-checkout-section\"\n >\n <VComponent node={preCheckoutSection} />\n </div>\n )}\n\n {ctas && (\n <VComponent\n node={ctas}\n className=\"cart-mini-cart__footer__ctas\"\n />\n )}\n </div>\n </>\n )}\n </div>\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} from 'preact/compat';\nimport { Container, Slot, SlotProps } from '@adobe-commerce/elsie/lib';\nimport { CartModel } from '@/cart/data/models';\nimport { getPersistedCartData } from '@/cart/lib/persisted-data';\nimport { events } from '@adobe-commerce/event-bus';\nimport { MiniCart as MiniCartComponent } from '@/cart/components';\nimport { CartSummaryList } from '@/cart/containers';\nimport { useText } from '@adobe-commerce/elsie/i18n';\nimport { Button, ImageProps, Price } from '@adobe-commerce/elsie/components';\nimport { updateProductsFromCart } from '@/cart/api';\nimport { publishInitiateCheckoutEvent } from '@/cart/lib/acdl';\nimport { state } from '@/cart/lib/state';\n\nexport interface MiniCartProps extends HTMLAttributes<HTMLDivElement> {\n routeProduct?: (item: CartModel['items'][0]) => string;\n routeCart?: () => string;\n routeCheckout?: () => string;\n routeEmptyCartCTA?: () => string;\n slots?: {\n ProductList?: SlotProps;\n ProductListFooter?: SlotProps;\n PreCheckoutSection?: SlotProps;\n Thumbnail?: SlotProps<{ \n item: CartModel['items'][number], \n defaultImageProps: ImageProps \n }>;\n };\n hideFooter?: boolean;\n displayAllItems?: boolean;\n showDiscount?: boolean;\n showSavings?: boolean;\n enableItemRemoval?: boolean;\n enableQuantityUpdate?: boolean;\n hideHeading?: boolean;\n}\n\nexport const MiniCart: Container<MiniCartProps, CartModel | null> = ({\n children,\n initialData = null,\n hideFooter = true, // Default to true for MiniCart\n slots,\n routeProduct,\n routeCart,\n routeCheckout,\n routeEmptyCartCTA,\n showDiscount,\n showSavings,\n enableItemRemoval = true, // Default to true for MiniCart\n enableQuantityUpdate = false, // Default to false for MiniCart\n hideHeading = false, // Default to false for MiniCart\n ...props\n}) => {\n const [data, setData] = useState<CartModel | null>(initialData);\n const cartTaxesConfig = state.config?.shoppingCartDisplaySetting;\n\n useEffect(() => {\n const event = events.on(\n 'cart/data',\n (payload) => {\n setData(payload as CartModel);\n },\n { eager: true }\n );\n\n return () => {\n event?.off();\n };\n }, []);\n\n const dictionary = useText({\n cartLink: 'Cart.MiniCart.cartLink',\n checkoutLink: 'Cart.MiniCart.checkoutLink',\n });\n\n const handleItemQuantityUpdate = (uid: string, quantity: number) => {\n return updateProductsFromCart([{ uid, quantity }]);\n };\n\n const handleItemRemove = (uid: string) => handleItemQuantityUpdate(uid, 0);\n\n const checkoutLinkDisabled = data?.hasOutOfStockItems;\n\n const handleInitiateCheckout = useCallback(() => {\n if (data && !checkoutLinkDisabled) {\n publishInitiateCheckoutEvent(data, state.locale);\n }\n }, [data, checkoutLinkDisabled]);\n\n const productList = (\n <Slot\n name=\"ProductList\"\n slot={slots?.ProductList}\n context={{\n itemQuantityUpdateHandler: handleItemQuantityUpdate,\n itemRemoveHandler: handleItemRemove,\n totalQuantity: data?.totalQuantity,\n }}\n >\n <CartSummaryList\n data-testid=\"default-cart-summary-list\"\n routeProduct={routeProduct}\n routeEmptyCartCTA={routeEmptyCartCTA}\n initialData={data}\n maxItems={state.config?.miniCartMaxItemsDisplay}\n showMaxItems={!!state.config?.miniCartMaxItemsDisplay}\n hideHeading={hideHeading || !data?.totalQuantity}\n hideFooter={hideFooter}\n enableRemoveItem={enableItemRemoval}\n enableUpdateItemQuantity={enableQuantityUpdate}\n showDiscount={showDiscount}\n showSavings={showSavings}\n slots={{\n Thumbnail: slots?.Thumbnail,\n }}\n />\n </Slot>\n );\n\n const getProductListFooter = (data: CartModel | null) => {\n return (\n <Slot\n name=\"ProductListFooter\"\n slot={slots?.ProductListFooter}\n context={{\n data,\n }}\n />\n );\n };\n\n const getPreCheckoutSection = (data: CartModel | null) => {\n return (\n <Slot\n name=\"PreCheckoutSection\"\n slot={slots?.PreCheckoutSection}\n context={{\n data,\n }}\n />\n );\n };\n\n const getSubtotalPriceProps = () =>\n cartTaxesConfig?.subtotal === 'INCLUDING_TAX' ||\n cartTaxesConfig?.subtotal === 'INCLUDING_EXCLUDING_TAX'\n ? {\n amount: data?.subtotal.includingTax.value,\n currency: data?.subtotal.includingTax.currency,\n 'data-testid': 'subtotal-including-tax',\n style: { font: 'inherit' },\n }\n : {\n amount: data?.subtotal.excludingTax.value,\n currency: data?.subtotal.excludingTax.currency,\n 'data-testid': 'subtotal-excluding-tax',\n style: { font: 'inherit' },\n };\n\n return (\n <MiniCartComponent\n {...props}\n productListFooter={getProductListFooter(data)}\n subtotal={\n !data?.totalQuantity\n ? undefined\n : data?.subtotal && <Price {...getSubtotalPriceProps()} />\n }\n subtotalExcludingTaxes={\n !data?.totalQuantity\n ? undefined\n : data?.subtotal &&\n (cartTaxesConfig?.subtotal === 'INCLUDING_EXCLUDING_TAX' ? (\n <Price\n amount={data?.subtotal.excludingTax.value}\n currency={data?.subtotal.excludingTax.currency}\n data-testid=\"subtotal-including-excluding-tax\"\n style={{ font: 'inherit' }}\n />\n ) : undefined)\n }\n preCheckoutSection={getPreCheckoutSection(data)}\n ctas={\n !data?.totalQuantity ? undefined : (\n <div>\n {routeCheckout && (\n <Button\n data-testid=\"route-checkout-button\"\n variant=\"primary\"\n href={checkoutLinkDisabled ? undefined : routeCheckout()}\n disabled={checkoutLinkDisabled}\n aria-disabled={checkoutLinkDisabled}\n onClick={handleInitiateCheckout}\n >\n {dictionary.checkoutLink}\n </Button>\n )}\n {routeCart && (\n <Button\n data-testid=\"route-cart-button\"\n variant=\"tertiary\"\n href={routeCart()}\n >\n {dictionary.cartLink}\n </Button>\n )}\n </div>\n )\n }\n products={productList}\n />\n );\n};\n\nMiniCart.getInitialData = async function () {\n return getPersistedCartData();\n};\n"],"names":["MiniCart","className","products","productListFooter","subtotal","subtotalExcludingTaxes","preCheckoutSection","ctas","props","dictionary","useText","jsx","classes","jsxs","Fragment","VComponent","children","initialData","hideFooter","slots","routeProduct","routeCart","routeCheckout","routeEmptyCartCTA","showDiscount","showSavings","enableItemRemoval","enableQuantityUpdate","hideHeading","data","setData","useState","cartTaxesConfig","_a","state","useEffect","event","events","payload","handleItemQuantityUpdate","uid","quantity","updateProductsFromCart","handleItemRemove","checkoutLinkDisabled","handleInitiateCheckout","useCallback","publishInitiateCheckoutEvent","productList","Slot","CartSummaryList","_b","_c","getProductListFooter","getPreCheckoutSection","getSubtotalPriceProps","MiniCartComponent","Price","Button","getPersistedCartData"],"mappings":"mrCAiCO,MAAMA,EAA6C,CAAC,CACzD,UAAAC,EACA,SAAAC,EACA,kBAAAC,EACA,SAAAC,EACA,uBAAAC,EACA,mBAAAC,EACA,KAAAC,EACA,GAAGC,CACL,IAAM,CACJ,MAAMC,EAAaC,EAAQ,CACzB,SAAU,yBACV,uBAAwB,sCAAA,CACzB,EAED,OACGC,EAAA,MAAA,CAAK,GAAGH,EAAO,UAAWI,EAAQ,CAAC,iBAAkBX,CAAS,CAAC,EAE7D,SAAAC,GAEGW,EAAAC,EAAA,CAAA,SAAA,CAAAH,EAAC,MAAA,CACC,UAAU,2BACV,cAAY,6BAEX,SAAAT,CAAA,CACH,EAGCC,GACCQ,EAAC,MAAA,CACC,UAAWC,EAAQ,CAAC,mCAAmC,CAAC,EACxD,cAAY,gCAEZ,SAAAD,EAACI,EAAW,CAAA,KAAMZ,CAAmB,CAAA,CAAA,CACvC,EAGFU,EAAC,MAAA,CACC,UAAU,yBACV,cAAY,sBAGX,SAAA,CACCT,GAAAS,EAAC,MAAA,CACC,UAAU,0CACV,cAAY,qBAEX,SAAA,CAAWJ,EAAA,SACZE,EAACI,EAAW,CAAA,KAAMX,CAAU,CAAA,CAAA,CAAA,CAC9B,EAGDC,GACCQ,EAAC,MAAA,CACC,UAAU,0DACV,cAAY,qCAEX,SAAA,CAAWJ,EAAA,uBACZE,EAACI,EAAA,CACC,KAAMV,EACN,UAAWO,EAAQ,CACjB,8BACA,oCACD,CAAA,CAAA,CAAA,CACH,CAAA,CACF,EAIDN,GACCK,EAAC,MAAA,CACC,UAAWC,EAAQ,CAAC,oCAAoC,CAAC,EACzD,cAAY,iCAEZ,SAAAD,EAACI,EAAW,CAAA,KAAMT,CAAoB,CAAA,CAAA,CACxC,EAGDC,GACCI,EAACI,EAAA,CACC,KAAMR,EACN,UAAU,8BAAA,CAAA,CACZ,CAAA,CAAA,CAEJ,CAAA,CACF,CAEJ,CAAA,CAEJ,EChEaP,EAAuD,CAAC,CACnE,SAAAgB,EACA,YAAAC,EAAc,KACd,WAAAC,EAAa,GACb,MAAAC,EACA,aAAAC,EACA,UAAAC,EACA,cAAAC,EACA,kBAAAC,EACA,aAAAC,EACA,YAAAC,EACA,kBAAAC,EAAoB,GACpB,qBAAAC,EAAuB,GACvB,YAAAC,EAAc,GACd,GAAGpB,CACL,IAAM,WACJ,KAAM,CAACqB,EAAMC,CAAO,EAAIC,EAA2Bd,CAAW,EACxDe,GAAkBC,EAAAC,EAAM,SAAN,YAAAD,EAAc,2BAEtCE,EAAU,IAAM,CACd,MAAMC,EAAQC,EAAO,GACnB,YACCC,GAAY,CACXR,EAAQQ,CAAoB,CAC9B,EACA,CAAE,MAAO,EAAK,CAChB,EAEA,MAAO,IAAM,CACXF,GAAA,MAAAA,EAAO,KACT,CACF,EAAG,EAAE,EAEL,MAAM3B,EAAaC,EAAQ,CACzB,SAAU,yBACV,aAAc,4BAAA,CACf,EAEK6B,EAA2B,CAACC,EAAaC,IACtCC,EAAuB,CAAC,CAAE,IAAAF,EAAK,SAAAC,CAAU,CAAA,CAAC,EAG7CE,EAAoBH,GAAgBD,EAAyBC,EAAK,CAAC,EAEnEI,EAAuBf,GAAA,YAAAA,EAAM,mBAE7BgB,EAAyBC,EAAY,IAAM,CAC3CjB,GAAQ,CAACe,GACkBG,EAAAlB,EAAMK,EAAM,MAAM,CACjD,EACC,CAACL,EAAMe,CAAoB,CAAC,EAEzBI,EACJrC,EAACsC,EAAA,CACC,KAAK,cACL,KAAM9B,GAAA,YAAAA,EAAO,YACb,QAAS,CACP,0BAA2BoB,EAC3B,kBAAmBI,EACnB,cAAed,GAAA,YAAAA,EAAM,aACvB,EAEA,SAAAlB,EAACuC,EAAA,CACC,cAAY,4BACZ,aAAA9B,EACA,kBAAAG,EACA,YAAaM,EACb,UAAUsB,EAAAjB,EAAM,SAAN,YAAAiB,EAAc,wBACxB,aAAc,CAAC,GAACC,EAAAlB,EAAM,SAAN,MAAAkB,EAAc,yBAC9B,YAAaxB,GAAe,EAACC,GAAA,MAAAA,EAAM,eACnC,WAAAX,EACA,iBAAkBQ,EAClB,yBAA0BC,EAC1B,aAAAH,EACA,YAAAC,EACA,MAAO,CACL,UAAWN,GAAA,YAAAA,EAAO,SAAA,CACpB,CAAA,CACF,CACF,EAGIkC,EAAwBxB,GAE1BlB,EAACsC,EAAA,CACC,KAAK,oBACL,KAAM9B,GAAA,YAAAA,EAAO,kBACb,QAAS,CACP,KAAAU,CAAA,CACF,CACF,EAIEyB,EAAyBzB,GAE3BlB,EAACsC,EAAA,CACC,KAAK,qBACL,KAAM9B,GAAA,YAAAA,EAAO,mBACb,QAAS,CACP,KAAAU,CAAA,CACF,CACF,EAIE0B,EAAwB,KAC5BvB,GAAA,YAAAA,EAAiB,YAAa,kBAC9BA,GAAA,YAAAA,EAAiB,YAAa,0BAC1B,CACE,OAAQH,GAAA,YAAAA,EAAM,SAAS,aAAa,MACpC,SAAUA,GAAA,YAAAA,EAAM,SAAS,aAAa,SACtC,cAAe,yBACf,MAAO,CAAE,KAAM,SAAU,CAAA,EAE3B,CACE,OAAQA,GAAA,YAAAA,EAAM,SAAS,aAAa,MACpC,SAAUA,GAAA,YAAAA,EAAM,SAAS,aAAa,SACtC,cAAe,yBACf,MAAO,CAAE,KAAM,SAAU,CAC3B,EAGJ,OAAAlB,EAAC6C,EAAA,CACE,GAAGhD,EACJ,kBAAmB6C,EAAqBxB,CAAI,EAC5C,SACGA,GAAA,MAAAA,EAAM,eAEHA,GAAA,YAAAA,EAAM,WAAalB,EAAA8C,EAAA,CAAO,GAAGF,EAAyB,CAAA,CAAA,EADtD,OAGN,uBACG1B,GAAA,MAAAA,EAAM,eAEHA,GAAA,YAAAA,EAAM,aACLG,GAAA,YAAAA,EAAiB,YAAa,0BAC7BrB,EAAC8C,EAAA,CACC,OAAQ5B,GAAA,YAAAA,EAAM,SAAS,aAAa,MACpC,SAAUA,GAAA,YAAAA,EAAM,SAAS,aAAa,SACtC,cAAY,mCACZ,MAAO,CAAE,KAAM,SAAU,CAAA,CAEzB,EAAA,QATJ,OAWN,mBAAoByB,EAAsBzB,CAAI,EAC9C,KACGA,GAAA,MAAAA,EAAM,gBACJ,MACE,CAAA,SAAA,CACCP,GAAAX,EAAC+C,EAAA,CACC,cAAY,wBACZ,QAAQ,UACR,KAAMd,EAAuB,OAAYtB,EAAc,EACvD,SAAUsB,EACV,gBAAeA,EACf,QAASC,EAER,SAAWpC,EAAA,YAAA,CACd,EAEDY,GACCV,EAAC+C,EAAA,CACC,cAAY,oBACZ,QAAQ,WACR,KAAMrC,EAAU,EAEf,SAAWZ,EAAA,QAAA,CAAA,CACd,EAEJ,EAvBqB,OA0BzB,SAAUuC,CAAA,CACZ,CAEJ,EAEAhD,EAAS,eAAiB,gBAAkB,CAC1C,OAAO2D,EAAqB,CAC9B"}
@@ -1,3 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
3
  import{O as k,O as n}from"../chunks/OrderSummary.js";import"@dropins/tools/preact-jsx-runtime.js";import"@dropins/tools/preact-compat.js";import"@dropins/tools/lib.js";import"@dropins/tools/event-bus.js";import"../chunks/persisted-data.js";import"../chunks/resetCart.js";import"@dropins/tools/fetch-graphql.js";import"../chunks/getEstimatedTotals.js";import"../chunks/refreshCart.js";import"../fragments.js";import"../chunks/acdl.js";import"@dropins/tools/preact-hooks.js";import"@dropins/tools/components.js";/* empty css */import"../chunks/OrderSummaryLine.js";import"../chunks/ChevronUp.js";import"../chunks/ChevronDown.js";import"@dropins/tools/i18n.js";import"../chunks/Coupon.js";import"../chunks/GiftCard.js";export{k as OrderSummary,n as default};
4
+ //# sourceMappingURL=OrderSummary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrderSummary.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -1,3 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
3
  import{O,O as d}from"../chunks/OrderSummaryLine.js";import"@dropins/tools/preact-jsx-runtime.js";import"@dropins/tools/lib.js";import"@dropins/tools/components.js";/* empty css */import"@dropins/tools/preact-compat.js";import"@dropins/tools/preact-hooks.js";export{O as OrderSummaryLine,d as default};
4
+ //# sourceMappingURL=OrderSummaryLine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrderSummaryLine.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -75,10 +75,16 @@ export type ShoppingCartItem = {
75
75
  id: string;
76
76
  prices: {
77
77
  price: Price;
78
+ discount?: Price;
78
79
  };
79
80
  product: Product;
80
81
  configurableOptions?: Array<ConfigurableOption>;
82
+ bundleOptions?: Array<BundleOption>;
83
+ customizableOptions?: Array<CustomizableOption>;
81
84
  quantity: number;
85
+ selectedOptions?: {
86
+ [key: string]: any;
87
+ };
82
88
  };
83
89
  export type ConfigurableOption = {
84
90
  id: number;
@@ -86,4 +92,16 @@ export type ConfigurableOption = {
86
92
  valueId: number;
87
93
  valueLabel: string;
88
94
  };
95
+ export type BundleOption = {
96
+ id: string;
97
+ optionLabel: string;
98
+ valueId: number;
99
+ valueLabel: string;
100
+ };
101
+ export type CustomizableOption = {
102
+ id: string;
103
+ optionLabel: string;
104
+ valueId: number;
105
+ valueLabel: string;
106
+ };
89
107
  //# sourceMappingURL=acdl-models.d.ts.map
package/fragments.js CHANGED
@@ -401,3 +401,4 @@ const e=`
401
401
  ${l}
402
402
  ${t}
403
403
  `;export{t as APPLIED_GIFT_CARDS_FRAGMENT,n as AVAILABLE_GIFT_WRAPPING_FRAGMENT,u as CART_FRAGMENT,l as CART_ITEM_FRAGMENT,a as DOWNLOADABLE_CART_ITEMS_FRAGMENT,r as GIFT_MESSAGE_FRAGMENT,i as GIFT_WRAPPING_FRAGMENT};
404
+ //# sourceMappingURL=fragments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fragments.js","sources":["/@dropins/storefront-cart/src/api/graphql/PriceRangeFragment.ts","/@dropins/storefront-cart/src/api/graphql/CustomizableOptionsFragment.ts","/@dropins/storefront-cart/src/api/graphql/DownloadableCartItemsFragment.ts","/@dropins/storefront-cart/src/api/graphql/GiftFragment.ts","/@dropins/storefront-cart/src/api/graphql/CartItemFragment.ts","/@dropins/storefront-cart/src/api/graphql/CartFragment.ts"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const PRICE_RANGE_FRAGMENT = /* GraphQL */ `\n fragment PRICE_RANGE_FRAGMENT on PriceRange {\n minimum_price {\n regular_price {\n value\n currency\n }\n final_price {\n value\n currency\n }\n discount {\n percent_off\n amount_off\n }\n }\n maximum_price {\n regular_price {\n value\n currency\n }\n final_price {\n value\n currency\n }\n discount {\n percent_off\n amount_off\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const CUSTOMIZABLE_OPTIONS_FRAGMENT = /* GraphQL */ `\n fragment CUSTOMIZABLE_OPTIONS_FRAGMENT on SelectedCustomizableOption {\n type\n customizable_option_uid\n label\n is_required\n values {\n label\n value\n price {\n type\n units\n value\n }\n }\n }\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nexport const DOWNLOADABLE_CART_ITEMS_FRAGMENT = /* GraphQL */ `\n fragment DOWNLOADABLE_CART_ITEMS_FRAGMENT on DownloadableCartItem {\n links {\n sort_order\n title\n }\n customizable_options {\n ...CUSTOMIZABLE_OPTIONS_FRAGMENT\n }\n }\n`;\n","export const APPLIED_GIFT_CARDS_FRAGMENT = `\n fragment APPLIED_GIFT_CARDS_FRAGMENT on AppliedGiftCard {\n __typename\n code\n applied_balance {\n value\n currency\n }\n current_balance {\n value\n currency\n }\n expiration_date\n }\n`;\n\nexport const GIFT_MESSAGE_FRAGMENT = `\n fragment GIFT_MESSAGE_FRAGMENT on GiftMessage {\n __typename\n from\n to\n message\n }\n`;\n\nexport const GIFT_WRAPPING_FRAGMENT = `\n fragment GIFT_WRAPPING_FRAGMENT on GiftWrapping {\n __typename\n uid\n design\n image {\n url\n }\n price {\n value\n currency\n }\n }\n`;\n\nexport const AVAILABLE_GIFT_WRAPPING_FRAGMENT = `\n fragment AVAILABLE_GIFT_WRAPPING_FRAGMENT on GiftWrapping {\n __typename\n uid\n design\n image {\n url\n label\n }\n price {\n currency\n value\n }\n }\n`;\n\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { PRICE_RANGE_FRAGMENT } from './PriceRangeFragment';\nimport { CUSTOMIZABLE_OPTIONS_FRAGMENT } from './CustomizableOptionsFragment';\nimport { DOWNLOADABLE_CART_ITEMS_FRAGMENT } from './DownloadableCartItemsFragment';\nimport {\n GIFT_MESSAGE_FRAGMENT,\n GIFT_WRAPPING_FRAGMENT,\n AVAILABLE_GIFT_WRAPPING_FRAGMENT,\n} from './GiftFragment';\n\nexport const CART_ITEM_FRAGMENT = /* GraphQL */ `\n fragment CART_ITEM_FRAGMENT on CartItemInterface {\n __typename\n uid\n quantity\n is_available\n not_available_message\n errors {\n code\n message\n }\n\n prices {\n price {\n value\n currency\n }\n discounts {\n amount {\n value\n currency\n }\n label\n }\n total_item_discount {\n value\n currency\n }\n row_total {\n value\n currency\n }\n row_total_including_tax {\n value\n currency\n }\n price_including_tax {\n value\n currency\n }\n fixed_product_taxes {\n amount {\n value\n currency\n }\n label\n }\n original_item_price {\n value\n currency\n }\n original_row_total {\n value\n currency\n }\n }\n\n product {\n name\n sku\n quantity\n gift_message_available\n gift_wrapping_available\n gift_wrapping_price {\n currency\n value\n }\n thumbnail {\n url\n label\n }\n url_key\n canonical_url\n categories {\n url_path\n url_key\n name\n }\n custom_attributesV2(filters: { is_visible_on_front: true }) {\n items {\n code\n ... on AttributeValue {\n value\n }\n ... on AttributeSelectedOptions {\n selected_options {\n value\n label\n }\n }\n }\n }\n only_x_left_in_stock\n stock_status\n price_range {\n ...PRICE_RANGE_FRAGMENT\n }\n }\n ... on SimpleCartItem {\n available_gift_wrapping {\n ...AVAILABLE_GIFT_WRAPPING_FRAGMENT\n }\n gift_message {\n ...GIFT_MESSAGE_FRAGMENT\n }\n gift_wrapping {\n ...GIFT_WRAPPING_FRAGMENT\n }\n customizable_options {\n ...CUSTOMIZABLE_OPTIONS_FRAGMENT\n }\n }\n ... on ConfigurableCartItem {\n available_gift_wrapping {\n ...AVAILABLE_GIFT_WRAPPING_FRAGMENT\n }\n gift_message {\n ...GIFT_MESSAGE_FRAGMENT\n }\n gift_wrapping {\n ...GIFT_WRAPPING_FRAGMENT\n }\n configurable_options {\n configurable_product_option_uid\n option_label\n value_label\n configurable_product_option_value_uid\n }\n configured_variant {\n uid\n sku\n only_x_left_in_stock\n stock_status\n thumbnail {\n label\n url\n }\n price_range {\n ...PRICE_RANGE_FRAGMENT\n }\n }\n customizable_options {\n ...CUSTOMIZABLE_OPTIONS_FRAGMENT\n }\n }\n ...DOWNLOADABLE_CART_ITEMS_FRAGMENT\n ... on BundleCartItem {\n available_gift_wrapping {\n ...AVAILABLE_GIFT_WRAPPING_FRAGMENT\n }\n gift_message {\n ...GIFT_MESSAGE_FRAGMENT\n }\n gift_wrapping {\n ...GIFT_WRAPPING_FRAGMENT\n }\n bundle_options {\n uid\n label\n values {\n uid\n label\n }\n }\n }\n ... on GiftCardCartItem {\n message\n recipient_email\n recipient_name\n sender_email\n sender_name\n amount {\n currency\n value\n }\n is_available\n }\n }\n\n ${PRICE_RANGE_FRAGMENT}\n ${CUSTOMIZABLE_OPTIONS_FRAGMENT}\n ${DOWNLOADABLE_CART_ITEMS_FRAGMENT}\n ${GIFT_WRAPPING_FRAGMENT}\n ${GIFT_MESSAGE_FRAGMENT}\n ${AVAILABLE_GIFT_WRAPPING_FRAGMENT}\n`;\n","/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { CART_ITEM_FRAGMENT } from './CartItemFragment';\nimport { APPLIED_GIFT_CARDS_FRAGMENT } from '../fragments';\n\nexport const CART_FRAGMENT = /* GraphQL */ `\n fragment CART_FRAGMENT on Cart {\n id\n total_quantity\n is_virtual\n applied_gift_cards {\n ...APPLIED_GIFT_CARDS_FRAGMENT\n }\n gift_receipt_included\n printed_card_included\n gift_message {\n ...GIFT_MESSAGE_FRAGMENT\n }\n gift_wrapping {\n ...GIFT_WRAPPING_FRAGMENT\n }\n available_gift_wrappings {\n ...AVAILABLE_GIFT_WRAPPING_FRAGMENT\n }\n prices {\n gift_options {\n gift_wrapping_for_items {\n currency\n value\n }\n gift_wrapping_for_items_incl_tax {\n currency\n value\n }\n gift_wrapping_for_order {\n currency\n value\n }\n gift_wrapping_for_order_incl_tax {\n currency\n value\n }\n printed_card {\n currency\n value\n }\n printed_card_incl_tax {\n currency\n value\n }\n }\n subtotal_with_discount_excluding_tax {\n currency\n value\n }\n subtotal_including_tax {\n currency\n value\n }\n subtotal_excluding_tax {\n currency\n value\n }\n grand_total {\n currency\n value\n }\n grand_total_excluding_tax {\n currency\n value\n }\n applied_taxes {\n label\n amount {\n value\n currency\n }\n }\n discounts {\n amount {\n value\n currency\n }\n label\n coupon {\n code\n }\n applied_to\n }\n }\n applied_coupons {\n code\n }\n itemsV2(\n pageSize: $pageSize\n currentPage: $currentPage\n sort: $itemsSortInput\n ) {\n items {\n ...CART_ITEM_FRAGMENT\n }\n }\n shipping_addresses {\n country {\n code\n }\n region {\n code\n }\n postcode\n }\n }\n\n ${CART_ITEM_FRAGMENT}\n ${APPLIED_GIFT_CARDS_FRAGMENT}\n`;\n"],"names":["PRICE_RANGE_FRAGMENT","CUSTOMIZABLE_OPTIONS_FRAGMENT","DOWNLOADABLE_CART_ITEMS_FRAGMENT","APPLIED_GIFT_CARDS_FRAGMENT","GIFT_MESSAGE_FRAGMENT","GIFT_WRAPPING_FRAGMENT","AVAILABLE_GIFT_WRAPPING_FRAGMENT","CART_ITEM_FRAGMENT","CART_FRAGMENT"],"mappings":"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"}
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name": "@dropins/storefront-cart", "version": "1.4.0-beta1", "@dropins/tools": "~1.2.1", "license": "SEE LICENSE IN LICENSE.md"}
1
+ {"name": "@dropins/storefront-cart", "version": "1.4.0-beta2", "@dropins/tools": "1.3.0-beta3", "license": "SEE LICENSE IN LICENSE.md"}
package/render.js CHANGED
@@ -3,3 +3,4 @@ All Rights Reserved. */
3
3
  (function(e,r){try{if(typeof document<"u"){const t=document.createElement("style"),o=r.styleId;for(const a in r.attributes)t.setAttribute(a,r.attributes[a]);t.setAttribute("data-dropin",o),t.appendChild(document.createTextNode(e));const i=document.querySelector('style[data-dropin="sdk"]');if(i)i.after(t);else{const a=document.querySelector('link[rel="stylesheet"], style');a?a.before(t):document.head.append(t)}}}catch(t){console.error("dropin-styles (injectCodeFunction)",t)}})(`.cart-cart-summary-table__item{display:grid;grid-template-columns:repeat(3,1fr);align-items:start;gap:var(--spacing-small)}.cart-cart-summary-table__item-details{display:flex;flex-direction:column;gap:var(--spacing-xsmall);grid-column:2 / span 2}.cart-cart-summary-table__item-image-wrapper{grid-column:1 / span 1}.cart-cart-summary-table__item-image-wrapper img{width:100%;height:auto;object-fit:cover}.cart-cart-summary-table__item-name{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing);color:var(--color-neutral-800)}.cart-cart-summary-table__item-name a{text-decoration:none;color:inherit}.cart-cart-summary-table__item-name a:hover{text-decoration:underline}.cart-cart-summary-table__sku{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);color:var(--color-neutral-700)}.cart-cart-summary-table__item-configurations{padding:0;margin:0;list-style:none;font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing)}.cart-cart-summary-table__item-configuration{display:flex;gap:var(--spacing-xsmall)}.cart-cart-summary-table__item-configuration-label{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);color:var(--color-neutral-700)}.cart-cart-summary-table__item-configuration-value{font:var(--type-details-caption-2-font);font-weight:var(--type-details-caption-2-font-weight);letter-spacing:var(--type-details-caption-2-letter-spacing);color:var(--color-neutral-800)}.cart-cart-summary-table__item-quantity-alert-text,.cart-cart-summary-table__item-quantity-warning-text{text-align:left;color:var(--color-alert-800);font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.cart-cart-summary-table__item-qty{display:flex;flex-direction:column;gap:var(--spacing-xsmall);align-items:end}@container cart-summary-table (width < 768px){.cart-cart-summary-table__item-qty{align-items:start}}.cart-cart-summary-table__item-quantity-alert-wrapper,.cart-cart-summary-table__item-quantity-warning-wrapper{display:flex;align-items:center;gap:var(--spacing-xsmall);color:var(--color-alert-800)}.cart-cart-summary-table__item-quantity-alert-icon,.cart-cart-summary-table__item-quantity-warning-icon{fill:var(--color-warning-800);color:var(--color-neutral-50);flex-basis:16px}.cart-cart-summary-table__item-remove-button{display:flex;align-items:center;justify-content:center}
4
4
  .cart-empty-cart{container-type:inline-size;container-name:cart}.cart-empty-cart__wrapper .dropin-card--secondary{display:grid;grid-auto-rows:min-content;justify-content:center;text-align:center}@container cart (width < 737px){.cart-empty-cart__wrapper .dropin-card{border:unset;border-style:hidden}}.cart-estimate-shipping{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-xsmall);align-items:flex-end;color:var(--color-neutral-800)}.cart-estimate-shipping__label,.cart-estimate-shipping__price{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.cart-estimate-shipping__label--muted{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-700)}.cart-estimate-shipping__price--muted{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.cart-estimate-shipping__price{text-align:right}a.cart-estimate-shippingLink{text-decoration:underline}.cart-estimate-shipping__label--bold,.cart-estimate-shipping__price--bold{font:var(--type-body-1-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing)}.cart-estimate-shipping__caption{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);grid-column:span 2;color:var(--color-neutral-700)}.cart-estimate-shipping--zip,.cart-estimate-shipping--state{background-color:var(--color-neutral-50)}.cart-estimate-shipping--edit{display:grid;grid-column:1 / span 2;gap:var(--spacing-small);padding-top:var(--spacing-small)}a.cart-estimate-shipping__link{text-decoration:underline}.cart-estimate-shipping--hide{display:none!important}.cart-estimate-shipping--edit button{width:var(--spacing-huge);justify-self:end}.cart-estimate-shipping--loading{opacity:.4;pointer-events:none}.cart-mini-cart{display:flex;flex-direction:column;height:100%;padding:var(--spacing-small) var(--spacing-small) var(--spacing-medium);box-sizing:border-box}.cart-mini-cart__empty-cart{width:100%;max-width:800px;height:100%;display:flex;flex-direction:column;justify-content:center;align-self:center}.cart-mini-cart__heading{display:grid;row-gap:var(--spacing-xsmall);font:var(--type-headline-2-default-font);letter-spacing:var(--type-headline-2-default-letter-spacing)}.cart-mini-cart__heading-divider{width:100%;margin:var(--spacing-xxsmall) 0 0 0}.cart-mini-cart__products{flex:1;overflow-y:auto;max-height:100%;padding-bottom:var(--spacing-medium)}.cart-mini-cart__products .cart-cart-summary-list__heading{padding:0}.cart-mini-cart__products .dropin-cart-item__configurations li{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.cart-mini-cart__footer{display:grid;grid-auto-flow:row;gap:var(--spacing-small);padding-top:var(--spacing-small);row-gap:var(--spacing-xsmall)}.cart-mini-cart__footer__estimated-total{font:var(--type-body-1-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing);display:grid;grid-template:max-content / 1fr auto;gap:var(--spacing-xsmall)}.cart-mini-cart__footer__estimated-total-excluding-taxes{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);display:grid;grid-template:max-content / 1fr auto;gap:var(--spacing-xsmall);color:var(--color-neutral-700)}.cart-mini-cart__productListFooter,.cart-mini-cart__preCheckoutSection{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-800)}.cart-mini-cart__footer__ctas{display:grid;grid-auto-flow:row;gap:var(--spacing-xsmall);padding-top:var(--spacing-small)}.cart-cart-summary-grid{container-type:inline-size;container-name:cart-summary-grid;max-width:inherit}.cart-cart-summary-grid__content{display:grid;flex-wrap:wrap;gap:var(--spacing-small);grid-template-columns:repeat(6,1fr);margin:auto}.cart-cart-summary-grid__item-container{aspect-ratio:auto 3/4;display:inline-block}.cart-cart-summary-grid__item-container img{height:auto;max-width:100%}.cart-cart-summary-grid__item-container a:focus{display:block}.cart-cart-summary-grid__content--empty{grid-template-columns:repeat(1,1fr)}.cart-cart-summary-grid__empty-cart{align-self:center;justify-self:center;max-width:800px;width:100%}@container cart-summary-grid (width < 360px){.cart-cart-summary-grid__content{grid-template-columns:repeat(4,1fr);gap:var(--spacing-xsmall)}.cart-cart-summary-grid__content--empty{grid-template-columns:repeat(1,1fr)}}.cart-cart-summary-list{container-type:inline-size;container-name:cart-summary-list}.cart-cart-summary-list__background--secondary{background-color:var(--color-neutral-200)}.cart-cart-summary-list__heading{display:grid;row-gap:var(--spacing-xsmall);padding:var(--spacing-medium) 0 0 0;font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);color:var(--color-neutral-800)}.cart-cart-summary-list__heading--full-width{width:100%}.cart-cart-summary-list__heading-divider{width:100%;margin:var(--spacing-xxsmall) 0 var(--spacing-medium) 0}.cart-cart-summary-list__content{display:grid;grid-template-columns:1fr;padding:0}.cart-cart-summary-list__out-of-stock-message{margin:calc(-1 * var(--spacing-xsmall)) 0 var(--spacing-medium) 0}.cart-cart-summary-list__empty-cart{justify-self:center;align-self:center;width:100%;max-width:800px}.cart-cart-summary-list-footer__action,.cart-cart-summary-list-footer__action:focus .cart-cart-summary-list-footer__action:active,.cart-cart-summary-list-footer__action:link{font:var(--type-body-2-strong-font);margin:0 auto;width:auto;margin-top:var(--spacing-medium);margin-bottom:var(--spacing-medium)}.cart-cart-summary-list-footer__action:hover{text-decoration:underline;text-underline-offset:var(--spacing-xxsmall);background:transparent;color:var(--color-brand-700)}.cart-cart-summary-list-footer__action:visited{background-color:none}.cart-cart-summary-list-accordion{border-left:var(--shape-border-width-2) solid var(--color-neutral-400);border-right:var(--shape-border-width-2) solid var(--color-neutral-400)}.cart-cart-summary-list-accordion__section{margin:var(--spacing-medium)}@container cart-summary-list (width >= 768px){.cart-cart-summary-list__out-of-stock-message{margin:calc(-1 * var(--spacing-small)) 0 var(--spacing-xxbig) 0}}@container cart-summary-list (width >= 1024px){.cart-cart-summary-list__content,.cart-cart-summary-list__heading{grid-column:1 / span 8}.cart-cart-summary-list__heading--full-width,.cart-cart-summary-list__content--empty{grid-column:1 / span 12}.cart-cart-summary-list__content{padding:0}}.cart-order-summary{display:grid;position:relative;grid-auto-flow:row;padding:var(--spacing-medium)}.cart-order-summary__primary{background-color:var(--color-neutral-200)}.cart-order-summary__secondary{background-color:var(--color-neutral-50)}.cart-order-summary__content{display:grid;gap:var(--spacing-xsmall);margin-top:var(--spacing-small)}.cart-order-summary__heading{display:grid;font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-2-strong-letter-spacing);color:var(--color-neutral-800);gap:var(--spacing-small)}.cart-order-summary__discount .cart-order-summary__label,.cart-order-summary__discount .cart-order-summary__price,.cart-order-summary__applied-gift-cards .cart-order-summary__price{color:var(--color-warning-800)}.cart-order-summary__coupon__code{display:flex;align-items:center;font:var(--type-details-overline-font);letter-spacing:var(--type-details-overline-letter-spacing);color:var(--color-neutral-700);gap:var(--spacing-xsmall);grid-column:span 2}.cart-order-summary__taxes .dropin-divider:last-child{margin-bottom:0}.cart-order-summary__total{margin-top:var(--spacing-medium)}.cart-order-summary__divider-primary,.cart-order-summary__divider-secondary{width:100%;margin:0}.cart-order-summary__divider-secondary{margin:0}.cart-order-summary__taxEntry.cart-order-summary__entry{margin-top:0}.cart-order-summary__entry,.cart-order-summary__taxEntry{display:grid;grid-template-columns:1fr 1fr;gap:var(--spacing-xxsmall);align-items:center;color:var(--color-neutral-800)}.cart-order-summary__caption{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);grid-column:span 2;color:var(--color-neutral-700)}.cart-order-summary__primaryAction{margin-top:var(--spacing-small);grid-template-columns:1fr}.cart-order-summary__shipping--edit{display:grid;grid-column:1 / span 2;gap:var(--spacing-small);padding-top:var(--spacing-small);padding-left:var(--spacing-small)}a.cart-order-summary__shippingLink{text-decoration:underline}.cart-order-summary__shipping--hide{display:none!important}.cart-order-summary__shipping--edit button{width:var(--spacing-huge);justify-self:end}.cart-order-summary__shipping--zip,.cart-order-summary__shipping--state{background-color:var(--color-neutral-50)}.cart-order-summary__taxes .dropin-accordion-section__content-container{gap:var(--spacing-small);margin:var(--spacing-small) 0}.cart-order-summary--loading{opacity:.4;pointer-events:none}.cart-order-summary__spinner{margin:0 auto;position:absolute;z-index:999;left:0;right:0;top:calc(50% - (var(--size) / 2));bottom:0}.cart-order-summary__content:has(.cart-order-summary__coupons .dropin-accordion):has(.cart-order-summary__gift-cards .dropin-accordion):has(.cart-order-summary__coupons+.cart-order-summary__gift-cards) .cart-order-summary__coupons .dropin-accordion hr:last-child{opacity:0;margin-bottom:0}.cart-order-summary__content:has(.cart-order-summary__coupons .dropin-accordion):has(.cart-order-summary__gift-cards .dropin-accordion):has(.cart-order-summary__coupons+.cart-order-summary__gift-cards) .cart-order-summary__gift-cards .dropin-accordion hr:first-child{margin-top:calc(var(--spacing-xsmall) * -1)}.cart-order-summary__applied-gift-cards .cart-order-summary__coupon__code,.cart-order-summary__applied-gift-cards .cart-order-summary__caption{display:flex;justify-content:flex-start;align-items:end;gap:0 var(--spacing-xsmall)}.coupon-code-form__action{display:flex}.coupon-code-form__action .dropin-input-container{flex-grow:1;margin-right:var(--spacing-small)}.cart-coupons__accordion-section .dropin-accordion-section__content-container{gap:var(--spacing-small)}.coupon-code-form__codes{background-color:var(--color-neutral-50)}.coupon-code-form__error{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);color:var(--color-alert-500);margin-top:calc(var(--spacing-xsmall) * -1)}.coupon-code-form__applied{display:flex;align-items:center;justify-content:flex-start;flex-wrap:wrap;gap:var(--spacing-small)}.coupon-code-form__applied-item{box-sizing:border-box;display:grid;grid-template-columns:1fr auto;gap:0 var(--spacing-small)}.coupon-code-form__applied-item button{all:unset;margin:0;padding:0;display:flex;justify-content:center;align-items:center;background-color:transparent;border-color:transparent;cursor:pointer}.coupon-code-form__applied .dropin-tag-container{background-color:var(--color-neutral-400);color:var(--color-neutral-800);font:var(--type-button-2-font);letter-spacing:var(--type-button-2-letter-spacing)}.cart-gift-cards .dropin-accordion-section__title-container svg:first-of-type path{transform-box:fill-box;transform-origin:center;transform:translateY(4px)}.cart-order-summary__label,.cart-order-summary__price{font:var(--type-body-1-default-font);letter-spacing:var(--type-body-1-default-letter-spacing)}.cart-order-summary__price{text-align:right;text-transform:uppercase}.cart-order-summary__label--muted{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing);color:var(--color-neutral-700)}.cart-order-summary__price--muted{font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.cart-order-summary__label--bold,.cart-order-summary__price--bold{font:var(--type-body-1-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing)}.cart-gift-options-view{position:relative}.cart-gift-options-view textarea{border:var(--shape-border-width-1) solid var(--color-neutral-600)}.cart-gift-options-view.cart-gift-options-view--product .dropin-accordion-section__heading{grid-template-columns:auto 1fr}.cart-gift-options-view.cart-gift-options-view--product .dropin-accordion-section__flex,.cart-gift-options-view.cart-gift-options-view--product .dropin-accordion-section__heading,.cart-gift-options-view.cart-gift-options-view--product .dropin-accordion-section__title-container,.cart-gift-options-view.cart-gift-options-view--product .cart-gift-options-view__icon--success{margin-top:0}.cart-gift-options-view.cart-gift-options-view--order .dropin-accordion-section__title-container,.cart-gift-options-view.cart-gift-options-view--order .dropin-accordion-section__title-container .dropin-accordion-section__title{width:100%}.cart-gift-options-view.cart-gift-options-view--order .dropin-accordion-section__title-container svg{min-width:24px}#cart-gift-options-view.cart-gift-options-view .dropin-accordion-section__content-container{display:block!important;margin-bottom:0;gap:0}.cart-gift-options-view .dropin-accordion-section__heading{align-items:flex-end}.cart-gift-options-view .cart-gift-options-view__top{display:grid;grid-template-columns:1fr;gap:var(--grid-1-gutters) 0;width:100%;align-items:start;margin-top:var(--spacing-small);margin-bottom:var(--spacing-medium)}.cart-gift-options-view .cart-gift-options-view__top.cart-gift-options-view__top--hidden{display:none}.cart-gift-options-view .cart-gift-options-view__field-gift-wrap{margin-top:0;grid-column:1 / -1}.cart-gift-options-view .cart-gift-options-view__top .dropin-field:nth-child(3){grid-column:1 / -1}.cart-gift-options-view .cart-gift-options-view__top .dropin-checkbox__label.dropin-checkbox__label--medium{margin-right:var(--spacing-xsmall)}@media (max-width: 768px){.cart-gift-options-view .cart-gift-options-view__top{display:flex;flex-direction:column}}.cart-gift-options-view .cart-gift-options-view__top .dropin-field:nth-child(2){grid-column:1;margin-top:0}.cart-gift-options-view .cart-gift-options-view__top .dropin-field div{margin-top:0}.cart-gift-options-view .cart-gift-options-view__top button{font:var(--type-body-2-strong-font);padding:0;margin:0;text-decoration:underline;grid-column:2;align-self:start}.cart-gift-options-view .cart-gift-options-view__footer{display:grid;grid-template-columns:1fr 1fr;gap:var(--grid-1-gutters);margin-top:var(--spacing-xsmall)}.cart-gift-options-view .cart-gift-options-view__footer>:first-child{grid-column:span 2;font:var(--type-body-2-strong-font);color:var(--color-neutral-800)}.cart-gift-options-view .cart-gift-options-view__footer>:nth-child(4){grid-column:span 2}.cart-gift-options-view .cart-gift-options-view__footer div>span{font:var(--type-details-caption-1-font);color:var(--color-neutral-800);display:inline-block;margin-bottom:var(--spacing-xsmall)}.cart-gift-options-view .cart-gift-options-view__footer .dropin-textarea__label--floating.dropin-textarea__label--floating--error{padding-top:0;color:var(--color-neutral-700);font:var(--type-body-2-default-font)}.cart-gift-options-view .dropin-textarea__label--floating--text.dropin-textarea__label--floating--error{color:var(--color-alert-800);font:var(--type-details-caption-2-font)}.cart-gift-options-view .dropin-textarea.dropin-textarea--error{border:var(--shape-border-width-2) solid var(--color-alert-500)}.cart-gift-options-view .cart-gift-options-view__modal{width:100%;max-width:735px;margin:auto}.cart-gift-options-view.cart-gift-options-view--product .dropin-modal.dropin-modal--dim{margin:0}.cart-gift-options-view.cart-gift-options-view--product .dropin-modal.dropin-modal--dim .cart-gift-options-view__modal{margin-top:var(--spacing-huge)}.cart-gift-options-view.cart-gift-options-view--product .dropin-modal__header.dropin-modal__header-title{display:grid;grid-template-columns:1fr auto}.cart-gift-options-view__modal .dropin-modal__header-title-content{display:block}.cart-gift-options-view__modal .dropin-modal__header-title-content span{display:block;word-wrap:break-word;overflow-wrap:break-word}.cart-gift-options-view__modal .dropin-modal__header-title-content span:first-child{font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing)}.cart-gift-options-view__modal .dropin-modal__header-title-content .dropin-price{font:var(--type-headline-2-strong-font);letter-spacing:var(--type-headline-2-strong-letter-spacing)}.cart-gift-options-view__modal .dropin-iconButton{text-align:right}.cart-gift-options-view__modal .dropin-modal__content.dropin-modal__body--centered{margin:0}.cart-gift-options-view__modal .cart-gift-options-view__modal-content span{display:block;text-align:left;font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.cart-gift-options-view__modal .cart-gift-options-view__modal-content span:last-child{margin-top:var(--spacing-xsmall);font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.cart-gift-options-view__modal .dropin-content-grid.cart-gift-options-view__modal-grid{margin-top:0;overflow:auto}.cart-gift-options-view__modal .dropin-content-grid__content{margin-top:0;padding:var(--spacing-xsmall);gap:var(--spacing-xsmall)}.cart-gift-options-view__modal .cart-gift-options-view__modal-content{margin-bottom:var(--spacing-big)}.cart-gift-options-view__modal button{width:100%;display:block;text-align:center}.cart-gift-options-view__modal button:nth-child(2){margin-bottom:var(--spacing-xsmall)}.cart-gift-options-view .dropin-divider{display:none}.cart-gift-options-view .cart-gift-options-view__footer div{margin:0}.cart-gift-options-view .cart-gift-options-view__icon--success{display:grid;grid-template-columns:auto 1fr;gap:0 var(--spacing-xsmall);align-items:center}.cart-gift-options-view .cart-gift-options-view__icon--success svg{fill:var(--color-informational-800);margin-left:auto}.cart-gift-options-view .cart-gift-options-view__icon--success svg path:first-of-type{stroke:var(--color-informational-800)}.cart-gift-options-view .cart-gift-options-view__icon--success svg path:last-of-type{stroke:var(--color-neutral-50)}.cart-gift-options-view .dropin-textarea{padding:var(--spacing-xxsmall) var(--spacing-small);min-height:40px;height:40px}.cart-gift-options-view textarea:focus::placeholder{color:transparent}.dropin-textarea:not(:placeholder-shown)+.dropin-textarea__label--floating,.dropin-textarea:focus+.dropin-textarea__label--floating{display:none;opacity:0;z-index:-1}.cart-gift-options-view .dropin-textarea__label--floating{top:10px}.cart-gift-options-view__spinner{position:absolute;margin:0 auto;z-index:999;left:0;right:0;top:calc(50% - (var(--size) / 2));bottom:0}.cart-gift-options-view--loading{opacity:.4;pointer-events:none}.cart-gift-options-view .cart-gift-options-view--readonly .dropin-card.dropin-card--primary{border-radius:0}.cart-gift-options-view .cart-gift-options-view--readonly .cart-gift-options-readonly__header>span{color:var(--color-neutral-800);font:var(--type-body-1-strong-font);letter-spacing:var(--type-body-1-strong-letter-spacing);cursor:pointer}.cart-gift-options-view.cart-gift-options-view--product .cart-gift-options-view--readonly p{margin:var(--spacing-xxsmall) 0;font:var(--type-body-2-strong-font);color:var(--color-neutral-800)}.cart-gift-options-view.cart-gift-options-view--order .cart-gift-options-view--readonly .dropin-card__content{gap:var(--spacing-small)}.cart-gift-options-view.cart-gift-options-view--order .cart-gift-options-view--readonly .cart-gift-options-readonly__header{display:flex;align-items:center;gap:var(--spacing-xsmall)}.cart-gift-options-view.cart-gift-options-view--order .cart-gift-options-view--readonly .cart-gift-options-readonly__checkboxes{display:grid;grid-template-columns:auto 1fr;gap:0 var(--spacing-xsmall);align-items:center}.cart-gift-options-view.cart-gift-options-view--order .cart-gift-options-view--readonly p{margin:0;padding:0}.cart-gift-options-view.cart-gift-options-view--order .cart-gift-options-view--readonly .cart-gift-options-readonly__checkboxes svg{grid-column:1;grid-row:1;fill:var(--color-positive-800);color:var(--color-neutral-50)}.cart-gift-options-view.cart-gift-options-view--order .cart-gift-options-view--readonly .cart-gift-options-readonly__checkboxes svg>path:first-of-type{stroke:var(--color-positive-800)}.cart-gift-options-view.cart-gift-options-view--order .cart-gift-options-view--readonly .cart-gift-options-readonly__checkboxes p{grid-column:2;grid-row:1;color:var(--color-neutral-800);font:var(--type-body-2-default-font);letter-spacing:var(--type-body-2-default-letter-spacing)}.cart-gift-options-view.cart-gift-options-view--order .cart-gift-options-view--readonly .cart-gift-options-readonly__checkboxes p:last-child{grid-column:2;grid-row:2;color:var(--color-neutral-700);font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing)}.cart-gift-options-view.cart-gift-options-view--order .cart-gift-options-view--readonly .cart-gift-options-readonly__form{display:flex;flex-direction:column;gap:var(--spacing-small) 0;font:var(--type-body-2-strong-font);letter-spacing:var(--type-body-2-strong-letter-spacing);color:var(--color-neutral-800)}.cart-gift-options-view.cart-gift-options-view--order .cart-gift-options-view--readonly .cart-gift-options-readonly__form div:nth-child(2){display:grid;grid-template-columns:repeat(2,1fr);gap:var(--grid-1-gutters);justify-content:start}.cart-gift-options-view.cart-gift-options-view--order .cart-gift-options-view--readonly .cart-gift-options-readonly__form div:nth-child(2) p span{display:block;margin-bottom:var(--spacing-xsmall)}.cart-gift-options-view.cart-gift-options-view--order .cart-gift-options-view--readonly .cart-gift-options-readonly__form div:nth-child(2) p span:first-child{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing)}.cart-gift-options-view.cart-gift-options-view--order .cart-gift-options-view--readonly .cart-gift-options-readonly__form div:last-child p:first-child{font:var(--type-details-caption-1-font);letter-spacing:var(--type-details-caption-1-letter-spacing);margin-bottom:var(--spacing-xsmall)}.cart-gift-options-view__modal-wrapper .dropin-modal__header.dropin-modal__header-title{display:grid;grid-template-columns:1fr auto}.cart-cart-summary-table{container-type:inline-size;container-name:cart-summary-table;width:100%}.cart-cart-summary-table__header{display:grid;grid-template-columns:3fr 1fr 1fr 1fr;gap:var(--spacing-small);padding:var(--spacing-small);border-bottom:var(--shape-border-width-1) solid var(--color-neutral-300);font:var(--type-body-1-emphasized-font);letter-spacing:var(--type-body-1-emphasized-letter-spacing);color:var(--color-neutral-800)}.cart-cart-summary-table__header-price,.cart-cart-summary-table__header-qty,.cart-cart-summary-table__header-subtotal{text-align:right}.cart-cart-summary-table__body{display:grid}.cart-cart-summary-table__row{display:grid;grid-template-columns:3fr 1fr 1fr 1fr;gap:var(--spacing-small);padding:var(--spacing-small);align-items:start;border-top:solid 1px var(--color-neutral-500)}.cart-cart-summary-table__row--updating{opacity:.4;pointer-events:none;position:relative}.cart-cart-summary-table__row--updating .cart-cart-summary-table__cell-qty-updater input{pointer-events:none}.cart-cart-summary-table__row--error{background-color:var(--color-alert-200)}.cart-cart-summary-table__cell-price,.cart-cart-summary-table__cell-qty,.cart-cart-summary-table__cell-subtotal{text-align:right;justify-self:end}.cart-cart-summary-table__cell-item{container-type:inline-size;container-name:cart-summary-table-item}.cart-cart-summary-table__mobile-label{display:none;font:var(--type-body-2-emphasized-font);margin-right:var(--spacing-small)}.cart-cart-summary-table__item-price{display:flex;flex-direction:column}.cart-cart-summary-table__item-price-tax-label{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);display:inline-block;color:var(--color-neutral-800)}.cart-cart-summary-table__item-subtotal{display:flex;flex-direction:column}.cart-cart-summary-table__item-subtotal-tax-label{font:var(--type-details-caption-2-font);letter-spacing:var(--type-details-caption-2-letter-spacing);display:inline-block;color:var(--color-neutral-800)}.cart-cart-summary-table__item-footer{display:grid;grid-template-columns:repeat(12,1fr);grid-column:1 / -1;align-items:start}.cart-cart-summary-table__item-actions{grid-column:11 / -1;justify-self:end}@container cart-summary-table (width < 768px){.cart-cart-summary-table__header{display:none}.cart-cart-summary-table__row{grid-template-columns:repeat(3,1fr);grid-template-areas:"item item item" "price qty subtotal";border-bottom:var(--shape-border-width-1) solid var(--color-neutral-300)}.cart-cart-summary-table__cell-item{grid-area:item}.cart-cart-summary-table__cell-price{grid-area:price;display:grid;text-align:left}.cart-cart-summary-table__cell-qty{grid-area:qty;display:grid;text-align:left}.cart-cart-summary-table__cell-subtotal{grid-area:subtotal;display:grid;text-align:left}.cart-cart-summary-table__mobile-label{display:inline}.cart-cart-summary-table__cell-price,.cart-cart-summary-table__cell-qty,.cart-cart-summary-table__cell-subtotal{justify-self:start;grid-template-rows:auto 1fr;gap:var(--spacing-xsmall);align-items:start}}.cart-cart-summary-table__skeleton{padding:var(--spacing-small)}.cart-cart-summary-table__skeleton .elsie-skeleton-row{margin-bottom:var(--spacing-small)}.cart-cart-summary-table__cell-qty-input{width:60px;padding:8px;border:1px solid var(--color-border, #ccc);border-radius:4px;text-align:center;font-size:var(--font-size-base, 14px);-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.cart-cart-summary-table__cell-qty-input::-webkit-outer-spin-button,.cart-cart-summary-table__cell-qty-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.cart-cart-summary-table__cell-qty-updater--disabled{opacity:.5;cursor:not-allowed;background-color:var(--color-disabled-background, #f5f5f5)}.cart-cart-summary-table__cell-qty-updater--error{border:1px solid var(--color-alert-800)}`,{styleId:"Cart"});
5
5
  import{jsx as o}from"@dropins/tools/preact-jsx-runtime.js";import{deepmerge as d,Render as p}from"@dropins/tools/lib.js";import{useState as c,useEffect as m}from"@dropins/tools/preact-hooks.js";import{UIProvider as g}from"@dropins/tools/components.js";import{events as u}from"@dropins/tools/event-bus.js";import"./chunks/resetCart.js";import{c as f}from"./chunks/refreshCart.js";import"@dropins/tools/fetch-graphql.js";import"./chunks/persisted-data.js";import"./fragments.js";const h={Cart:{heading:"Shopping Cart ({count})",editCart:"Edit",viewAll:"View all in cart",viewMore:"View more"},CartSummaryTable:{item:"Item",price:"Price",qty:"Qty",subtotal:"Subtotal",mobilePrice:"Price",mobileQty:"Qty",mobileSubtotal:"Subtotal"},MiniCart:{heading:"Shopping Cart ({count})",subtotal:"Subtotal",subtotalExcludingTaxes:"Subtotal excluding taxes",cartLink:"View Cart",checkoutLink:"Checkout"},EmptyCart:{heading:"Your cart is empty",cta:"Start shopping"},PriceSummary:{taxToBeDetermined:"TBD",checkout:"Checkout",orderSummary:"Order Summary",giftCard:{label:"Gift Card",applyAction:"Apply",ariaLabel:"Enter gift card code",ariaLabelRemove:"Remove gift card",placeholder:"Enter code",title:"Gift Card",errors:{empty:"Please enter a gift card code."},appliedGiftCards:{label:{singular:"Gift card",plural:"Gift cards"},remainingBalance:"Remaining balance"}},giftOptionsTax:{printedCard:{title:"Printed card",inclTax:"Including taxes",exclTax:"excluding taxes"},itemGiftWrapping:{title:"Item gift wrapping",inclTax:"Including taxes",exclTax:"excluding taxes"},orderGiftWrapping:{title:"Order gift wrapping",inclTax:"Including taxes",exclTax:"excluding taxes"}},subTotal:{label:"Subtotal",withTaxes:"Including taxes",withoutTaxes:"excluding taxes"},shipping:{label:"Shipping",editZipAction:"Apply",estimated:"Estimated Shipping",estimatedDestination:"Estimated Shipping to",destinationLinkAriaLabel:"Change destination",zipPlaceholder:"Zip Code",withTaxes:"Including taxes",withoutTaxes:"excluding taxes",alternateField:{zip:"Estimate using country/zip",state:"Estimate using country/state"}},taxes:{total:"Tax Total",totalOnly:"Tax",breakdown:"Taxes",showBreakdown:"Show Tax Breakdown",hideBreakdown:"Hide Tax Breakdown",estimated:"Estimated Tax"},total:{estimated:"Estimated Total",free:"Free",label:"Total",withoutTax:"Total excluding taxes",saved:"Total saved"},estimatedShippingForm:{country:{placeholder:"Country"},state:{placeholder:"State"},zip:{placeholder:"Zip Code"},apply:{label:"Apply"}},freeShipping:"Free",coupon:{applyAction:"Apply",placeholder:"Enter code",title:"Discount code",ariaLabelRemove:"Remove coupon"}},CartItem:{discountedPrice:"Discounted Price",download:"file",message:"Note",recipient:"To",regularPrice:"Regular Price",sender:"From",file:"{count} file",files:"{count} files",lowInventory:"Only {count} left!",insufficientQuantity:"Only {inventory} of {count} in stock",insufficientQuantityGeneral:"Not enough items for sale",notAvailableMessage:"Requested qty. not available",discountPercentage:"{discount}% off",savingsAmount:"Savings",includingTax:"Incl. tax",excludingTax:"Excl. tax"},EstimateShipping:{label:"Shipping",editZipAction:"Apply",estimated:"Estimated Shipping",estimatedDestination:"Estimated Shipping to",destinationLinkAriaLabel:"{destination}, Change destination",zipPlaceholder:"Zip Code",withTaxes:"Including taxes",withoutTaxes:"excluding taxes",alternateField:{zip:"Estimate using country/zip",state:"Estimate using country/state"}},OutOfStockMessage:{heading:"Your cart contains items with limited stock",message:"Please adjust quantities to continue",alert:"Out of stock",action:"Remove all out of stock items from cart"},GiftOptions:{formText:{requiredFieldError:"This field is required"},modal:{defaultTitle:"Gift wrapping for Cart",title:"Gift wrapping for",wrappingText:"Wrapping choice",wrappingSubText:"",modalConfirmButton:"Apply",modalCancelButton:"Cancel",ariaLabelModal:"Gift modal",ariaLabelModalOpen:"open",ariaLabelModalClose:"close",ariaLabelWrapping:"Wrapping options"},order:{customize:"Customize",accordionHeading:"Gift options",giftReceiptIncluded:{title:"Use gift receipt",subtitle:"The receipt and order invoice will not show the price."},printedCardIncluded:{title:"Include printed card",subtitle:""},giftOptionsWrap:{title:"Gift wrap this order",subtitle:"Wrapping option:"},formContent:{formTitle:"Add a message to the order (optional)",formTo:"To",formFrom:"From",giftMessageTitle:"Gift message",formToPlaceholder:"Recipient's name",formFromPlaceholder:"Sender's name",formMessagePlaceholder:"Gift message"},readOnlyFormView:{title:"Selected gift order options",giftWrap:"Gift wrap this order",giftWrapOptions:"Wrapping option:",giftReceipt:"Use gift receipt",giftReceiptText:"The receipt and order invoice will not show the price.",printCard:"Use printed card",printCardText:"",formTitle:"Your gift message",formTo:"To",formFrom:"From",formMessageTitle:"Gift message"}},product:{customize:"Customize",accordionHeading:"Gift options",giftReceiptIncluded:{title:"Use gift receipt",subtitle:"The receipt and order invoice will not show the price."},printedCardIncluded:{title:"Include printed card",subtitle:""},giftOptionsWrap:{title:"Gift wrap this item",subtitle:"Wrapping option:"},formContent:{formTitle:"Add a message to the item (optional)",formTo:"To",formFrom:"From",giftMessageTitle:"Gift message",formToPlaceholder:"Recipient's name",formFromPlaceholder:"Sender's name",formMessagePlaceholder:"Gift message"},readOnlyFormView:{title:"This item is a gift",wrapping:"Wrapping:",recipient:"To:",sender:"From:",message:"Message:"}}}},x={Cart:h},T={default:x},b=({children:r})=>{var i;const[e,n]=c(),l=(i=f.getConfig())==null?void 0:i.langDefinitions;m(()=>{const t=u.on("locale",a=>{a!==e&&n(a)},{eager:!0});return()=>{t==null||t.off()}},[e]);const s=d(T,l??{});return o(g,{lang:e,langDefinitions:s,children:r})},I=new p(o(b,{}));export{I as render};
6
+ //# sourceMappingURL=render.js.map
package/render.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.js","sources":["/@dropins/storefront-cart/src/render/Provider.tsx","/@dropins/storefront-cart/src/render/render.tsx"],"sourcesContent":["/********************************************************************\n * ADOBE CONFIDENTIAL\n * __________________\n *\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: All information contained herein is, and remains\n * the property of Adobe and its suppliers, if any. The intellectual\n * and technical concepts contained herein are proprietary to Adobe\n * and its suppliers and are protected by all applicable intellectual\n * property laws, including trade secret and copyright laws.\n * Dissemination of this information or reproduction of this material\n * is strictly forbidden unless prior written permission is obtained\n * from Adobe.\n *******************************************************************/\n\nimport { FunctionComponent } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { UIProvider } from '@adobe-commerce/elsie/components';\nimport { Lang } from '@adobe-commerce/elsie/i18n';\nimport { events } from '@adobe-commerce/event-bus';\nimport { config } from '../api';\nimport { deepmerge } from '@adobe-commerce/elsie/lib';\n\nimport en_US from '../i18n/en_US.json';\n\n// Langs\nconst langDefinitions = {\n default: en_US,\n};\n\ninterface CartProviderProps {\n children?: any;\n}\n\nexport const Provider: FunctionComponent<CartProviderProps> = ({\n children,\n}) => {\n const [locale, setLang] = useState<Lang>();\n\n const userLangDefinitions = config.getConfig()?.langDefinitions;\n\n // Events\n useEffect(() => {\n const localeEvent = events.on(\n 'locale',\n (payload) => {\n if (payload !== locale) setLang(payload as Lang);\n },\n { eager: true }\n );\n return () => {\n localeEvent?.off();\n };\n }, [locale]);\n\n // Merge language definitions with user language definitions\n const definitions = deepmerge(langDefinitions, userLangDefinitions ?? {});\n\n return (\n <UIProvider lang={locale} langDefinitions={definitions}>\n {children}\n </UIProvider>\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 { Render } from '@adobe-commerce/elsie/lib';\nimport { Provider } from './Provider';\n\nexport const render = new Render(<Provider />);\n"],"names":["langDefinitions","en_US","Provider","children","locale","setLang","useState","userLangDefinitions","_a","config","useEffect","localeEvent","events","payload","definitions","deepmerge","UIProvider","render","Render","jsx"],"mappings":"m/KA4BMA,EAAkB,CACtB,QAASC,CACX,EAMaC,EAAiD,CAAC,CAC7D,SAAAC,CACF,IAAM,OACJ,KAAM,CAACC,EAAQC,CAAO,EAAIC,EAAe,EAEnCC,GAAsBC,EAAAC,EAAO,UAAA,IAAP,YAAAD,EAAoB,gBAGhDE,EAAU,IAAM,CACd,MAAMC,EAAcC,EAAO,GACzB,SACCC,GAAY,CACPA,IAAYT,GAAQC,EAAQQ,CAAe,CACjD,EACA,CAAE,MAAO,EAAK,CAChB,EACA,MAAO,IAAM,CACXF,GAAA,MAAAA,EAAa,KACf,CAAA,EACC,CAACP,CAAM,CAAC,EAGX,MAAMU,EAAcC,EAAUf,EAAiBO,GAAuB,CAAA,CAAE,EAExE,SACGS,EAAW,CAAA,KAAMZ,EAAQ,gBAAiBU,EACxC,SAAAX,EACH,CAEJ,EC7Cac,EAAS,IAAIC,EAAOC,EAACjB,IAAS,CAAE"}