@dropins/storefront-cart 0.1.1-alpha3 → 0.1.1-alpha77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/api.js CHANGED
@@ -1 +1,26 @@
1
- import*as t from"@dropins/tools/event-bus.js";import*as r from"@dropins/tools/fetch-graphql.js";export const id=0;export const ids=[0];export const modules={7536:(t,r,e)=>{e.d(r,{A:()=>a,c:()=>i});var n=new class{get map(){return this._map}set map(t){this._map=t}getMethods(){return{setMap:t=>{this.map=t},getMap:()=>this.map}}},{setMap:a,getMap:i}=n.getMethods()},412:(t,r,e)=>{e.d(r,{_:()=>l});class n{constructor(t){this.config=t}getConfig(){return this.config}setConfig(t){this.config=t}}var a=e(7536),i=["imageParamsKeyMap"];function o(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,n)}return e}function c(t){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?o(Object(e),!0).forEach((function(r){s(t,r,e[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):o(Object(e)).forEach((function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}))}return t}function u(t,r){if(null==t)return{};var e,n,a=function(t,r){if(null==t)return{};var e,n,a={},i=Object.keys(t);for(n=0;n<i.length;n++)e=i[n],r.indexOf(e)>=0||(a[e]=t[e]);return a}(t,r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);for(n=0;n<i.length;n++)e=i[n],r.indexOf(e)>=0||Object.prototype.propertyIsEnumerable.call(t,e)&&(a[e]=t[e])}return a}function s(t,r,e){var n;return(r="symbol"==typeof(n=function(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,r||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(r,"string"))?n:String(n))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}class l{constructor(t){var{init:r,listeners:e}=t;s(this,"_listeners",[]),s(this,"config",new n({})),this.listeners=t=>(this._listeners.forEach((t=>t.off())),this._listeners=e(t)),this.init=t=>{var e=t,{imageParamsKeyMap:n}=e,o=u(e,i);return this.config.setConfig(c(c({},this.config.getConfig()),o)),(0,a.A)(n),r(t)}}}class d{static register(t,r){var e,n;d._mounted&&(null===(e=t.listeners)||void 0===e||e.call(t,r),null===(n=t.init)||void 0===n||n.call(t,r));d._initializers.push([t,r])}static mount(){var t,r;d._mounted=!0,null===(t=d._initializers)||void 0===t||t.forEach((t=>{var r,[e,n]=t;null===(r=e.listeners)||void 0===r||r.call(e,n)})),null===(r=d._initializers)||void 0===r||r.forEach((t=>{var r,[e,n]=t;null===(r=e.init)||void 0===r||r.call(e,c({imageParamsKeyMap:d._imageParamsKeyMap},n))}))}static setImageParamKeys(t){d._imageParamsKeyMap=t}}s(d,"_initializers",[]),s(d,"_mounted",!1),s(d,"_imageParamsKeyMap",void 0)},3884:(t,r,e)=>{e.d(r,{KG:()=>s,QN:()=>u,iM:()=>l});var n=e(7218),a=e(3584),i=e(764);function o(t,r,e,n,a,i,o){try{var c=t[i](o),u=c.value}catch(t){return void e(t)}c.done?r(u):Promise.resolve(u).then(n,a)}function c(t){return function(){var r=this,e=arguments;return new Promise((function(n,a){var i=t.apply(r,e);function c(t){o(i,n,a,c,u,"next",t)}function u(t){o(i,n,a,c,u,"throw",t)}c(void 0)}))}}var u=function(){var t=c((function*(t){var r=n.K.cartId;if(!r)throw new Error("No cart ID found");if(!t)throw new Error("No address parameter found");var{countryCode:e,postcode:o,region:c}=t;return(0,a.CA)("\n mutation ESTIMATE_SHIPPING_METHODS_MUTATION(\n $cartId: String!\n $address: EstimateAddressInput!\n ) {\n estimateShippingMethods(\n input: {\n cart_id: $cartId\n address: $address\n }\n ) {\n amount {\n currency\n value\n }\n error_message\n }\n }\n",{variables:{cartId:r,address:{country_code:e||"US",postcode:o||"",region:{region_code:(null==c?void 0:c.code)||""}}}}).then((t=>{var{errors:r,data:e}=t;if(r)return(0,i.H)(r);var n=e.estimateShippingMethods;return 0===n.length?null:n.find((t=>!t.error_message))}))}));return function(r){return t.apply(this,arguments)}}(),s=function(){var t=c((function*(){return(0,a.CA)("\nquery COUNTRIES_QUERY {\n countries {\n label: full_name_locale\n id\n }\n storeConfig {\n defaultCountry: default_country\n }\n}\n",{}).then((t=>{var r,e,{errors:n,data:a}=t;if(n)return(0,i.H)(n);var o=(null==a||null===(r=a.countries)||void 0===r?void 0:r.sort(((t,r)=>t.label.localeCompare(r.label))))||[],c=(null==a||null===(e=a.storeConfig)||void 0===e?void 0:e.defaultCountry)||"US";return o.forEach((t=>{t.isDefaultCountry=t.id===c})),o}))}));return function(){return t.apply(this,arguments)}}(),l=function(){var t=c((function*(t){return(0,a.CA)("\nquery REGIONS_QUERY($id: String) {\n country(id: $id) {\n available_regions {\n code\n\t\t\tname\n }\n }\n}\n",{variables:{id:t}}).then((t=>{var r,{errors:e,data:n}=t;return e?(0,i.H)(e):(null==n||null===(r=n.country)||void 0===r?void 0:r.available_regions)||[]}))}));return function(r){return t.apply(this,arguments)}}()},7788:(t,r,e)=>{e.d(r,{Mf:()=>m,Ej:()=>n.E,iS:()=>c,CA:()=>a.CA,KG:()=>g.K,eE:()=>a.eE,sj:()=>C.KG,QN:()=>C.QN,iM:()=>C.iM,a_:()=>_.a,ii:()=>n.i,cx:()=>y.c,__:()=>a.__,KM:()=>O.a,Ef:()=>a.Ef,o8:()=>a.o8,Uh:()=>a.Uh,EW:()=>h.E});var n=e(7540),a=e(3584),i=e(7218);function o(t,r,e,n,a,i,o){try{var c=t[i](o),u=c.value}catch(t){return void e(t)}c.done?r(u):Promise.resolve(u).then(n,a)}var c=function(){var t,r=(t=function*(){var{disableGuestCart:t}=n.E.getConfig();if(t)throw new Error("Guest cart is disabled");return yield(0,a.CA)("\n mutation CREATE_EMPTY_CART_MUTATION {\n createEmptyCart\n }\n").then((t=>{var{data:r}=t,e=r.createEmptyCart;return i.K.cartId=e,e}))},function(){var r=this,e=arguments;return new Promise((function(n,a){var i=t.apply(r,e);function c(t){o(i,n,a,c,u,"next",t)}function u(t){o(i,n,a,c,u,"throw",t)}c(void 0)}))});return function(){return r.apply(this,arguments)}}(),u=e(4020),s=e(8122),l=e(764),d=e(1136),p="\n mutation ADD_PRODUCTS_TO_CART_MUTATION(\n $cartId: String!, \n $cartItems: [CartItemInput!]!,\n ".concat(d.w,"\n ) {\n addProductsToCart(\n cartId: $cartId\n cartItems: $cartItems\n ) {\n cart {\n ...CartFragment\n }\n user_errors {\n code\n message\n }\n }\n }\n ").concat(d.A,"\n"),f=e(7192);function v(t,r,e,n,a,i,o){try{var c=t[i](o),u=c.value}catch(t){return void e(t)}c.done?r(u):Promise.resolve(u).then(n,a)}var m=function(){var t,r=(t=function*(t){var r=!1,e=i.K.cartId||(yield c().then((t=>(r=!0,t))));return(0,a.CA)(p,{variables:{cartId:e,cartItems:t.map((t=>{var{sku:r,parentSku:e,quantity:n,optionsUIDs:a,enteredOptions:i}=t;return{sku:r,parent_sku:e,quantity:n,selected_options:a,entered_options:i}}))}}).then((e=>{var{errors:n,data:a}=e;if(n)return(0,l.H)(n);var o=(0,u.o)(a.addProductsToCart.cart);if(s.events.emit("cart/updated",o),s.events.emit("cart/data",o),o){var c=o.items.filter((r=>t.some((t=>{var{sku:e}=t;return e===r.sku}))));r?(0,f.S8)(o,c,i.K.locale||"en-US"):(0,f.K6)(o,c,i.K.locale||"en-US")}return o}))},function(){var r=this,e=arguments;return new Promise((function(n,a){var i=t.apply(r,e);function o(t){v(i,n,a,o,c,"next",t)}function c(t){v(i,n,a,o,c,"throw",t)}o(void 0)}))});return function(t){return r.apply(this,arguments)}}(),g=e(6696),y=e(2840),h=e(1580),O=e(4444),_=e(8960),C=e(3884)},1580:(t,r,e)=>{e.d(r,{E:()=>p});var n=e(7218),a=e(3584),i=e(764),o=e(4020),c=e(8122),u=e(1136),s="\n mutation UPDATE_PRODUCTS_FROM_CART_MUTATION(\n $cartId: String!, \n $cartItems: [CartItemUpdateInput!]!,\n ".concat(u.w,"\n ) {\n updateCartItems(\n input: {\n cart_id: $cartId\n cart_items: $cartItems \n }\n ) {\n cart {\n ...CartFragment\n }\n\n }\n }\n ").concat(u.A,"\n"),l=e(7192);function d(t,r,e,n,a,i,o){try{var c=t[i](o),u=c.value}catch(t){return void e(t)}c.done?r(u):Promise.resolve(u).then(n,a)}var p=function(){var t,r=(t=function*(t){var r=n.K.cartId;if(!r)throw Error("Cart ID is not set");return(0,a.CA)(s,{variables:{cartId:r,cartItems:t.map((t=>{var{uid:r,quantity:e}=t;return{cart_item_uid:r,quantity:e}}))}}).then((r=>{var{errors:e,data:a}=r;if(e)return(0,i.H)(e);var u=(0,o.o)(a.updateCartItems.cart);return c.events.emit("cart/updated",u),c.events.emit("cart/data",u),u&&(0,l.K6)(u,t,n.K.locale||"en-US"),u}))},function(){var r=this,e=arguments;return new Promise((function(n,a){var i=t.apply(r,e);function o(t){d(i,n,a,o,c,"next",t)}function c(t){d(i,n,a,o,c,"throw",t)}o(void 0)}))});return function(t){return r.apply(this,arguments)}}()},7192:(t,r,e)=>{function n(t){var{cart:r,locale:e="en-US"}=t;return{id:r.id,items:a(r.items,e),prices:{subtotalExcludingTax:r.subtotal.excludingTax,subtotalIncludingTax:r.subtotal.includingTax},totalQuantity:r.totalQuantity,possibleOnepageCheckout:void 0,giftMessageSelected:void 0,giftWrappingSelected:void 0,source:void 0}}function a(t,r){return t.map((t=>{var e;return{canApplyMsrp:!1,formattedPrice:i(r,t.price.currency,t.price.value),id:t.uid,prices:{price:t.price},product:{productId:t.uid,name:t.name,sku:t.sku,topLevelSku:void 0,specialToDate:void 0,specialFromDate:void 0,newToDate:void 0,newFromDate:void 0,createdAt:void 0,updatedAt:void 0,manufacturer:void 0,countryOfManufacture:void 0,categories:t.url.categories,productType:void 0,pricing:{regularPrice:t.regularPrice.value,minimalPrice:void 0,maximalPrice:void 0,specialPrice:null===(e=t.discount)||void 0===e?void 0:e.value,tierPricing:void 0,currencyCode:t.regularPrice.currency},canonicalUrl:t.url.urlKey,mainImageUrl:t.image.src,image:{src:t.image.src,alt:t.image.alt}},configurableOptions:void 0,quantity:t.quantity}}))}function i(t,r,e){var n=t.replace("_","-");return new Intl.NumberFormat(n,{style:"currency",currency:r}).format(e)}function o(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,n)}return e}function c(t){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?o(Object(e),!0).forEach((function(r){u(t,r,e[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(e)):o(Object(e)).forEach((function(r){Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r))}))}return t}function u(t,r,e){var n;return(r="symbol"==typeof(n=function(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var n=e.call(t,r||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(r,"string"))?n:String(n))in t?Object.defineProperty(t,r,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[r]=e,t}e.d(r,{K6:()=>y,S8:()=>v,Ws:()=>m});var s={SHOPPING_CART_CONTEXT:"shoppingCartContext",PRODUCT_CONTEXT:"productContext",CHANGED_PRODUCTS_CONTEXT:"changedProductsContext"},l={OPEN_CART:"open-cart",ADD_TO_CART:"add-to-cart",REMOVE_FROM_CART:"remove-from-cart",SHOPPING_CART_VIEW:"shopping-cart-view"};function d(){return window.adobeDataLayer=window.adobeDataLayer||[],window.adobeDataLayer}function p(t,r){var e=d();e.push({[t]:null}),e.push({[t]:r})}function f(t,r){d().push((e=>{var n=e.getState?e.getState():{};e.push({event:t,eventInfo:c(c({},n),r)})}))}function v(t,r,e){var i=n({cart:t,locale:e});p(s.SHOPPING_CART_CONTEXT,c({},i)),f(l.OPEN_CART),a(r,e).forEach((t=>{p(s.PRODUCT_CONTEXT,t.product),g(i,[t],l.ADD_TO_CART)}))}function m(t,r){var e=n({cart:t,locale:r});p(s.SHOPPING_CART_CONTEXT,c({},e)),f(l.SHOPPING_CART_VIEW)}function g(t,r,e){var n={items:r};p(s.SHOPPING_CART_CONTEXT,c({},t)),p(s.CHANGED_PRODUCTS_CONTEXT,c({},n)),f(e)}function y(t,r,e){var a=n({cart:t,locale:e}),i=a.items,o=d(),c=o.getState?o.getState():{},{shoppingCartContext:{items:u=[]}={}}=c;r.forEach((t=>{var r=u.find((r=>r.id===t.uid)),e=i.find((r=>r.id===t.uid));(e||r)&&(!r&&e?(p(s.PRODUCT_CONTEXT,e.product),g(a,[e],l.ADD_TO_CART)):r&&!e?(p(s.PRODUCT_CONTEXT,r.product),g(a,[r],l.REMOVE_FROM_CART)):e.quantity>r.quantity?(p(s.PRODUCT_CONTEXT,e.product),g(a,[e],l.ADD_TO_CART)):(p(s.PRODUCT_CONTEXT,e.product),g(a,[e],l.REMOVE_FROM_CART)))}))}},8122:(r,e,n)=>{r.exports=(t=>{var r={};return n.d(r,t),r})({events:()=>t.events})},8616:(t,e,n)=>{t.exports=(t=>{var r={};return n.d(r,t),r})({FetchGraphQL:()=>r.FetchGraphQL})}};import e from"./runtime.js";import*as n from"./928.js";e.C(n);import*as a from"./api.js";e.C(a);var i,o=(i=7788,e(e.s=i)),c=o.Mf,u=o.Ej,s=o.iS,l=o.CA,d=o.KG,p=o.eE,f=o.sj,v=o.QN,m=o.iM,g=o.a_,y=o.ii,h=o.cx,O=o.__,_=o.KM,C=o.Ef,T=o.o8,P=o.Uh,b=o.EW;export{c as addProductsToCart,u as config,s as createEmptyCart,l as fetchGraphQl,d as getCartData,p as getConfig,f as getCountries,v as getEstimateShipping,m as getRegions,g as getStoreConfig,y as initialize,h as initializeCart,O as removeFetchGraphQlHeader,_ as resetCart,C as setEndpoint,T as setFetchGraphQlHeader,P as setFetchGraphQlHeaders,b as updateProductsFromCart};
1
+ import{C,a as T,s as n,f as m,h as u,t as l,c as I}from"./chunks/getStoreConfig.js";import{j as P,g as D,m as b,i as F,k as y,r as $,l as v,b as w,d as x,e as Q}from"./chunks/getStoreConfig.js";import{events as d}from"@dropins/tools/event-bus.js";import{p as f,a as _}from"./chunks/updateProductsFromCart.js";import{u as H}from"./chunks/updateProductsFromCart.js";import{a as Y,g as j,b as q}from"./chunks/getEstimateShipping.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/lib.js";const g=`
2
+ mutation ADD_PRODUCTS_TO_CART_MUTATION(
3
+ $cartId: String!,
4
+ $cartItems: [CartItemInput!]!,
5
+ ${C}
6
+ ) {
7
+ addProductsToCart(
8
+ cartId: $cartId
9
+ cartItems: $cartItems
10
+ ) {
11
+ cart {
12
+ ...CartFragment
13
+ }
14
+ user_errors {
15
+ code
16
+ message
17
+ }
18
+ }
19
+ }
20
+ ${T}
21
+ `,G=async e=>{let r=!1;const s=n.cartId||await A().then(a=>(r=!0,a));return m(g,{variables:{cartId:s,cartItems:e.map(({sku:a,parentSku:i,quantity:t,optionsUIDs:o,enteredOptions:c})=>({sku:a,parent_sku:i,quantity:t,selected_options:o,entered_options:c}))}}).then(({errors:a,data:i})=>{if(a)return u(a);const t=l(i.addProductsToCart.cart);if(d.emit("cart/updated",t),d.emit("cart/data",t),t){const o=t.items.filter(c=>e.some(({sku:p})=>p===c.sku));r?f(t,o,n.locale||"en-US"):_(t,o,n.locale||"en-US")}return t})},h=`
22
+ mutation CREATE_EMPTY_CART_MUTATION {
23
+ createEmptyCart
24
+ }
25
+ `,A=async()=>{const{disableGuestCart:e}=I.getConfig();if(e)throw new Error("Guest cart is disabled");return await m(h).then(({data:r})=>{const s=r.createEmptyCart;return n.cartId=s,s})};export{G as addProductsToCart,I as config,A as createEmptyCart,m as fetchGraphQl,P as getCartData,D as getConfig,Y as getCountries,j as getEstimateShipping,q as getRegions,b as getStoreConfig,F as initialize,y as initializeCart,$ as removeFetchGraphQlHeader,v as resetCart,w as setEndpoint,x as setFetchGraphQlHeader,Q as setFetchGraphQlHeaders,H as updateProductsFromCart};
26
+ //# sourceMappingURL=api.js.map
package/api.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sources":["../src/api/addProductsToCart/graphql/AddProductsToCartMutation.ts","../src/api/addProductsToCart/addProductsToCart.ts","../src/api/createEmptyCart/graphql/CreateCartMutation.ts","../src/api/createEmptyCart/createEmptyCart.ts"],"sourcesContent":["import { CART_FRAGMENT, CART_ITEMS_PAGINATION_ARGUMENTS } from '@/cart/api/graphql/CartFragment';\n\nexport const ADD_PRODUCTS_TO_CART_MUTATION = `\n mutation ADD_PRODUCTS_TO_CART_MUTATION(\n $cartId: String!, \n $cartItems: [CartItemInput!]!,\n ${CART_ITEMS_PAGINATION_ARGUMENTS}\n ) {\n addProductsToCart(\n cartId: $cartId\n cartItems: $cartItems\n ) {\n cart {\n ...CartFragment\n }\n user_errors {\n code\n message\n }\n }\n }\n ${CART_FRAGMENT}\n`;\n","import { fetchGraphQl, createEmptyCart } from '@/cart/api';\nimport { state } from '@/cart/lib/state';\nimport { CartModel } from '@/cart/data/models';\nimport { transformCart } from '@/cart/data/transforms';\nimport { events } from '@adobe/event-bus';\nimport { handleFetchError } from '@/cart/lib/fetch-error';\n\nimport { ADD_PRODUCTS_TO_CART_MUTATION } from './graphql/AddProductsToCartMutation';\nimport { publishCartUpdateEvents, publishOpenCartEvent } from '@/cart/lib/acdl';\n\nexport const addProductsToCart = async (\n items: {\n sku: string;\n parentSku?: string;\n quantity: number;\n optionsUIDs?: string[];\n enteredOptions?: { uid: string; value: string }[];\n }[]\n): Promise<CartModel | null> => {\n let isNewCart = false;\n\n const cartId =\n state.cartId ||\n (await createEmptyCart().then((id) => {\n isNewCart = true;\n return id;\n }));\n\n return fetchGraphQl(ADD_PRODUCTS_TO_CART_MUTATION, {\n variables: {\n cartId,\n cartItems: items.map(\n ({\n sku,\n parentSku: parent_sku,\n quantity,\n optionsUIDs: selected_options,\n enteredOptions: entered_options,\n }) => ({\n sku,\n parent_sku,\n quantity,\n selected_options,\n entered_options,\n })\n ),\n },\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n const payload = transformCart(data.addProductsToCart.cart);\n\n events.emit('cart/updated', payload);\n events.emit('cart/data', payload);\n\n if (payload) {\n const updatedItems = payload.items.filter((item) =>\n items.some(({ sku }) => sku === item.sku)\n );\n if (isNewCart) {\n // Publish open cart event when the first item is added to the cart\n publishOpenCartEvent(payload, updatedItems, state.locale || 'en-US');\n } else {\n // Otherwise publish cart update events\n publishCartUpdateEvents(payload, updatedItems, state.locale || 'en-US');\n }\n }\n\n return payload;\n });\n};\n","export const CREATE_EMPTY_CART_MUTATION = `\n mutation CREATE_EMPTY_CART_MUTATION {\n createEmptyCart\n }\n`;\n","import { config, fetchGraphQl } from '@/cart/api';\nimport { state } from '@/cart/lib/state';\n\nimport { CREATE_EMPTY_CART_MUTATION } from './graphql/CreateCartMutation';\n\nexport const createEmptyCart = async () => {\n const { disableGuestCart } = config.getConfig();\n\n // If guest cart is disabled, throw an error\n if (disableGuestCart) {\n throw new Error('Guest cart is disabled');\n }\n\n // Return new empty cart id\n return await fetchGraphQl(CREATE_EMPTY_CART_MUTATION).then(({ data }) => {\n const cartId = data.createEmptyCart;\n\n // Set cart id in state\n state.cartId = cartId;\n\n return cartId;\n });\n};\n"],"names":["ADD_PRODUCTS_TO_CART_MUTATION","CART_ITEMS_PAGINATION_ARGUMENTS","CART_FRAGMENT","addProductsToCart","items","isNewCart","cartId","state","createEmptyCart","then","id","fetchGraphQl","variables","cartItems","map","sku","parentSku","parent_sku","quantity","optionsUIDs","selected_options","enteredOptions","entered_options","errors","data","handleFetchError","payload","transformCart","cart","emit","updatedItems","filter","some","item","publishOpenCartEvent","locale","publishCartUpdateEvents","CREATE_EMPTY_CART_MUTATION","disableGuestCart","config","getConfig","Error"],"mappings":"ofAEO,MAAMA,EAAiC;AAAA;AAAA;AAAA;AAAA,QAItCC,CAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAepCC,CAAc;AAAA,ECXLC,EAAoB,MAC/BC,GAO8B,CAC9B,IAAIC,EAAY,GAEhB,MAAMC,EACJC,EAAMD,QACL,MAAME,IAAkBC,KAAaC,IACxBL,EAAA,GACLK,EACR,EAEH,OAAOC,EAAaX,EAA+B,CACjDY,UAAW,CACTN,OAAAA,EACAO,UAAWT,EAAMU,IACf,CAAC,CACCC,IAAAA,EACAC,UAAWC,EACXC,SAAAA,EACAC,YAAaC,EACbC,eAAgBC,CAAAA,KACX,CACLP,IAAAA,EACAE,WAAAA,EACAC,SAAAA,EACAE,iBAAAA,EACAE,gBAAAA,CAAAA,EAEJ,CACF,CAAA,CACD,EAAEb,KAAK,CAAC,CAAEc,OAAAA,EAAQC,KAAAA,CAAAA,IAAW,CACxBD,GAAAA,EAAQ,OAAOE,EAAiBF,CAAM,EAE1C,MAAMG,EAAUC,EAAcH,EAAKrB,kBAAkByB,IAAI,EAKzD,GAHOC,EAAAA,KAAK,eAAgBH,CAAO,EAC5BG,EAAAA,KAAK,YAAaH,CAAO,EAE5BA,EAAS,CACX,MAAMI,EAAeJ,EAAQtB,MAAM2B,OACjC3B,GAAAA,EAAM4B,KAAK,CAAC,CAAEjB,IAAAA,CAAUA,IAAAA,IAAQkB,EAAKlB,GAAG,CAC1C,EACIV,EAEF6B,EAAqBR,EAASI,EAAcvB,EAAM4B,QAAU,OAAO,EAGnEC,EAAwBV,EAASI,EAAcvB,EAAM4B,QAAU,OAAO,CAE1E,CAEOT,OAAAA,CAAAA,CACR,CACH,ECtEaW,EAA8B;AAAA;AAAA;AAAA;AAAA,ECK9B7B,EAAkB,SAAY,CACnC,KAAA,CAAE8B,iBAAAA,CAAAA,EAAqBC,EAAOC,YAGpC,GAAIF,EACI,MAAA,IAAIG,MAAM,wBAAwB,EAI1C,OAAO,MAAM9B,EAAa0B,CAA0B,EAAE5B,KAAK,CAAC,CAAEe,KAAAA,CAAAA,IAAW,CACvE,MAAMlB,EAASkB,EAAKhB,gBAGpBD,OAAAA,EAAMD,OAASA,EAERA,CAAAA,CACR,CACH"}
@@ -0,0 +1,2 @@
1
+ import{classes as o}from"@dropins/tools/lib.js";import{IllustratedMessage as i,Icon as s,Button as m}from"@dropins/tools/components.js";import{jsx as r}from"@dropins/tools/preact-jsx-runtime.js";import*as t from"@dropins/tools/preact-compat.js";import{useText as l}from"@dropins/tools/i18n.js";const p=e=>t.createElement("svg",{width:24,height:24,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",...e},t.createElement("g",{clipPath:"url(#clip0_102_196)"},t.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M18.3601 18.16H6.5601L4.8801 3H2.3501M19.6701 19.59C19.6701 20.3687 19.0388 21 18.2601 21C17.4814 21 16.8501 20.3687 16.8501 19.59C16.8501 18.8113 17.4814 18.18 18.2601 18.18C19.0388 18.18 19.6701 18.8113 19.6701 19.59ZM7.42986 19.59C7.42986 20.3687 6.79858 21 6.01986 21C5.24114 21 4.60986 20.3687 4.60986 19.59C4.60986 18.8113 5.24114 18.18 6.01986 18.18C6.79858 18.18 7.42986 18.8113 7.42986 19.59Z",stroke:"currentColor",strokeLinejoin:"round"}),t.createElement("path",{vectorEffect:"non-scaling-stroke",d:"M5.25 6.37L20.89 8.06L20.14 14.8H6.19",stroke:"currentColor",strokeLinejoin:"round"})),t.createElement("defs",null,t.createElement("clipPath",{id:"clip0_102_196"},t.createElement("rect",{vectorEffect:"non-scaling-stroke",width:19.29,height:19.5,fill:"white",transform:"translate(2.3501 2.25)"})))),E=({className:e,children:d,ctaLinkURL:a,...n})=>{const c=l({emptyCart:"Cart.EmptyCart.heading",cta:"Cart.EmptyCart.cta"});return r("div",{...n,className:o(["cart-empty-cart",e]),children:r(i,{className:o(["cart-empty-cart__wrapper",e]),"data-testid":"cart-empty-cart",heading:c.emptyCart,icon:r(s,{className:"cart-empty-cart__icon",source:p}),action:a?r(m,{"data-testid":"cart-empty-cart-button",size:"medium",variant:"primary",type:"submit",href:a,children:c.cta},"routeHome"):void 0})})};export{E};
2
+ //# sourceMappingURL=MiniCart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MiniCart.js","sources":["../../node_modules/@adobe/elsie/src/icons/Cart.svg","../../src/components/EmptyCart/EmptyCart.tsx"],"sourcesContent":["import * as React from \"react\";\nconst SvgCart = (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(\"g\", { clipPath: \"url(#clip0_102_196)\" }, /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M18.3601 18.16H6.5601L4.8801 3H2.3501M19.6701 19.59C19.6701 20.3687 19.0388 21 18.2601 21C17.4814 21 16.8501 20.3687 16.8501 19.59C16.8501 18.8113 17.4814 18.18 18.2601 18.18C19.0388 18.18 19.6701 18.8113 19.6701 19.59ZM7.42986 19.59C7.42986 20.3687 6.79858 21 6.01986 21C5.24114 21 4.60986 20.3687 4.60986 19.59C4.60986 18.8113 5.24114 18.18 6.01986 18.18C6.79858 18.18 7.42986 18.8113 7.42986 19.59Z\", stroke: \"currentColor\", strokeLinejoin: \"round\" }), /* @__PURE__ */ React.createElement(\"path\", { vectorEffect: \"non-scaling-stroke\", d: \"M5.25 6.37L20.89 8.06L20.14 14.8H6.19\", stroke: \"currentColor\", strokeLinejoin: \"round\" })), /* @__PURE__ */ React.createElement(\"defs\", null, /* @__PURE__ */ React.createElement(\"clipPath\", { id: \"clip0_102_196\" }, /* @__PURE__ */ React.createElement(\"rect\", { vectorEffect: \"non-scaling-stroke\", width: 19.29, height: 19.5, fill: \"white\", transform: \"translate(2.3501 2.25)\" }))));\nexport default SvgCart;\n","import { FunctionComponent } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { classes } from '@adobe/elsie/lib';\nimport { useText } from '@adobe/elsie/i18n';\nimport { Button, Icon, IllustratedMessage } from '@adobe/elsie/components';\nimport { Cart } from '@adobe/elsie/icons';\n\nimport '@/cart/components/EmptyCart/EmptyCart.css';\n\nexport interface EmptyCartProps extends HTMLAttributes<HTMLDivElement> {\n ctaLinkURL?: string;\n}\n\nexport const EmptyCart: FunctionComponent<EmptyCartProps> = ({\n className,\n children,\n ctaLinkURL,\n ...props\n}) => {\n const labels = useText({\n emptyCart: 'Cart.EmptyCart.heading',\n cta: 'Cart.EmptyCart.cta',\n });\n\n return (\n <div {...props} className={classes(['cart-empty-cart', className])}>\n <IllustratedMessage\n className={classes(['cart-empty-cart__wrapper', className])}\n data-testid=\"cart-empty-cart\"\n heading={labels.emptyCart}\n icon={<Icon className=\"cart-empty-cart__icon\" source={Cart} />}\n action={\n ctaLinkURL ? (\n <Button\n data-testid=\"cart-empty-cart-button\"\n size=\"medium\"\n variant=\"primary\"\n key=\"routeHome\"\n type=\"submit\"\n href={ctaLinkURL}\n >\n {labels.cta}\n </Button>\n ) : undefined\n }\n />\n </div>\n );\n};\n"],"names":["SvgCart","props","React","EmptyCart","className","children","ctaLinkURL","labels","useText","emptyCart","cta","_jsx","classes","IllustratedMessage","heading","icon","Icon","source","Cart","action","Button","size","variant","type","href","undefined"],"mappings":"sSACA,MAAMA,EAAWC,GAA0BC,EAAM,cAAc,MAAO,CAAE,MAAO,GAAI,OAAQ,GAAI,QAAS,YAAa,KAAM,OAAQ,MAAO,6BAA8B,GAAGD,CAAO,EAAkBC,EAAM,cAAc,IAAK,CAAE,SAAU,qBAAqB,EAAoBA,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,oZAAqZ,OAAQ,eAAgB,eAAgB,OAAO,CAAE,EAAmBA,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,EAAG,wCAAyC,OAAQ,eAAgB,eAAgB,OAAS,CAAA,CAAC,EAAmBA,EAAM,cAAc,OAAQ,KAAsBA,EAAM,cAAc,WAAY,CAAE,GAAI,eAAe,EAAoBA,EAAM,cAAc,OAAQ,CAAE,aAAc,qBAAsB,MAAO,MAAO,OAAQ,KAAM,KAAM,QAAS,UAAW,wBAAwB,CAAE,CAAC,CAAC,CAAC,ECYtuCC,EAA+CA,CAAC,CAC3DC,UAAAA,EACAC,SAAAA,EACAC,WAAAA,EACA,GAAGL,CACL,IAAM,CACJ,MAAMM,EAASC,EAAQ,CACrBC,UAAW,yBACXC,IAAK,oBAAA,CACN,EAED,OACEC,EAAA,MAAA,CAAA,GAASV,EAAOG,UAAWQ,EAAQ,CAAC,kBAAmBR,CAAS,CAAC,EAAEC,SACjEM,EAACE,EAAkB,CACjBT,UAAWQ,EAAQ,CAAC,2BAA4BR,CAAS,CAAC,EAC1D,cAAY,kBACZU,QAASP,EAAOE,UAChBM,KAAMJ,EAACK,EAAI,CAACZ,UAAU,wBAAwBa,OAAQC,CAAAA,CAAO,EAC7DC,OACEb,EACEK,EAACS,EAAM,CACL,cAAY,yBACZC,KAAK,SACLC,QAAQ,UAERC,KAAK,SACLC,KAAMlB,EAAWD,SAEhBE,EAAOG,GAAAA,EAJJ,WAKE,EACNe,MAAAA,CAEP,CAAA,CACE,CAET","x_google_ignoreList":[0]}
@@ -0,0 +1,39 @@
1
+ import{s as d,f as u,h as a}from"./getStoreConfig.js";import"@dropins/tools/event-bus.js";const f=`
2
+ mutation ESTIMATE_SHIPPING_METHODS_MUTATION(
3
+ $cartId: String!
4
+ $address: EstimateAddressInput!
5
+ ) {
6
+ estimateShippingMethods(
7
+ input: {
8
+ cart_id: $cartId
9
+ address: $address
10
+ }
11
+ ) {
12
+ amount {
13
+ currency
14
+ value
15
+ }
16
+ error_message
17
+ }
18
+ }
19
+ `,E=`
20
+ query COUNTRIES_QUERY {
21
+ countries {
22
+ label: full_name_locale
23
+ id
24
+ }
25
+ storeConfig {
26
+ defaultCountry: default_country
27
+ }
28
+ }
29
+ `,_=`
30
+ query REGIONS_QUERY($id: String) {
31
+ country(id: $id) {
32
+ available_regions {
33
+ code
34
+ name
35
+ }
36
+ }
37
+ }
38
+ `,p=async t=>{const e=d.cartId;if(!e)throw new Error("No cart ID found");if(!t)throw new Error("No address parameter found");const{countryCode:r,postcode:n,region:o}=t;return u(f,{variables:{cartId:e,address:{country_code:r||"US",postcode:n||"",region:{region_code:(o==null?void 0:o.code)||""}}}}).then(({errors:i,data:s})=>{if(i)return a(i);const c=s.estimateShippingMethods;return c.length===0?null:c.find(l=>!l.error_message)})},I=async()=>u(E,{}).then(({errors:t,data:e})=>{var o,i;if(t)return a(t);const r=((o=e==null?void 0:e.countries)==null?void 0:o.sort((s,c)=>s.label.localeCompare(c.label)))||[],n=((i=e==null?void 0:e.storeConfig)==null?void 0:i.defaultCountry)||"US";return r.forEach(s=>{s.isDefaultCountry=s.id===n}),r}),S=async t=>u(_,{variables:{id:t}}).then(({errors:e,data:r})=>{var n;return e?a(e):((n=r==null?void 0:r.country)==null?void 0:n.available_regions)||[]});export{I as a,S as b,p as g};
39
+ //# sourceMappingURL=getEstimateShipping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getEstimateShipping.js","sources":["../../src/api/getEstimateShipping/graphql/estimateShippingMethodsMutation.ts","../../src/api/getEstimateShipping/graphql/countriesAndRegionsQueries.ts","../../src/api/getEstimateShipping/getEstimateShipping.ts"],"sourcesContent":["export const ESTIMATE_SHIPPING_METHODS_MUTATION = `\n mutation ESTIMATE_SHIPPING_METHODS_MUTATION(\n $cartId: String!\n $address: EstimateAddressInput!\n ) {\n estimateShippingMethods(\n input: {\n cart_id: $cartId\n address: $address\n }\n ) {\n amount {\n currency\n value\n }\n error_message\n }\n }\n`;\n","export const COUNTRIES_QUERY = `\nquery COUNTRIES_QUERY {\n countries {\n label: full_name_locale\n id\n }\n storeConfig {\n defaultCountry: default_country\n }\n}\n`;\n\nexport const REGIONS_QUERY = `\nquery REGIONS_QUERY($id: String) {\n country(id: $id) {\n available_regions {\n code\n\t\t\tname\n }\n }\n}\n`;\n\nexport type CountryData = {\n label: string;\n id: string;\n available_regions?: Array<{\n code: string;\n name: string;\n }>;\n isDefaultCountry?: boolean\n};\n","import { state } from '@/cart/lib/state';\nimport { fetchGraphQl } from '@/cart/api';\nimport { handleFetchError } from '@/cart/lib/fetch-error';\n\nimport { ESTIMATE_SHIPPING_METHODS_MUTATION } from './graphql/estimateShippingMethodsMutation';\nimport {\n COUNTRIES_QUERY,\n CountryData,\n REGIONS_QUERY,\n} from './graphql/countriesAndRegionsQueries';\n\nexport interface EstimateAddressInput {\n countryCode: string;\n postcode?: string;\n region?: {\n code?: string;\n };\n}\n\nexport const getEstimateShipping = async (\n address: EstimateAddressInput\n): Promise<any | null> => {\n const cartId = state.cartId;\n\n if (!cartId) throw new Error('No cart ID found');\n if (!address) throw new Error('No address parameter found');\n\n const { countryCode, postcode, region } = address;\n\n return fetchGraphQl(ESTIMATE_SHIPPING_METHODS_MUTATION, {\n variables: {\n cartId,\n address: {\n country_code: countryCode || 'US',\n postcode: postcode || '',\n region: {\n region_code: region?.code || '',\n },\n },\n },\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n const estimateShippingMethods: Array<any> = data.estimateShippingMethods;\n\n if (estimateShippingMethods.length === 0) {\n return null;\n }\n\n return estimateShippingMethods.find((method) => !method.error_message);\n });\n};\n\nexport const getCountries = async (): Promise<[CountryData]> => {\n return fetchGraphQl(COUNTRIES_QUERY, {}).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n const sortedCountries =\n data?.countries?.sort((a: any, b: any) =>\n a.label.localeCompare(b.label)\n ) || [];\n\n const defaultCountry = data?.storeConfig?.defaultCountry || 'US';\n\n // Set the default country property\n sortedCountries.forEach((country: any) => {\n country.isDefaultCountry = country.id === defaultCountry;\n });\n\n return sortedCountries;\n });\n};\n\nexport const getRegions = async (\n countryId: string\n): Promise<Array<{ code: string; name: string }>> => {\n return fetchGraphQl(REGIONS_QUERY, {\n variables: {\n id: countryId,\n },\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n return data?.country?.available_regions || [];\n });\n};\n"],"names":["ESTIMATE_SHIPPING_METHODS_MUTATION","COUNTRIES_QUERY","REGIONS_QUERY","getEstimateShipping","address","cartId","state","Error","countryCode","postcode","region","fetchGraphQl","variables","country_code","region_code","code","then","errors","data","handleFetchError","estimateShippingMethods","length","find","method","error_message","getCountries","sortedCountries","countries","sort","a","b","label","localeCompare","defaultCountry","storeConfig","forEach","country","isDefaultCountry","id","getRegions","countryId","available_regions"],"mappings":"0FAAO,MAAMA,EAAsC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECAtCC,EAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYnBC,EAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,ECOjBC,EAAsB,MACjCC,GACwB,CACxB,MAAMC,EAASC,EAAMD,OAErB,GAAI,CAACA,EAAc,MAAA,IAAIE,MAAM,kBAAkB,EAC/C,GAAI,CAACH,EAAe,MAAA,IAAIG,MAAM,4BAA4B,EAEpD,KAAA,CAAEC,YAAAA,EAAaC,SAAAA,EAAUC,OAAAA,CAAWN,EAAAA,EAE1C,OAAOO,EAAaX,EAAoC,CACtDY,UAAW,CACTP,OAAAA,EACAD,QAAS,CACPS,aAAcL,GAAe,KAC7BC,SAAUA,GAAY,GACtBC,OAAQ,CACNI,aAAaJ,GAAAA,YAAAA,EAAQK,OAAQ,EAC/B,CACF,CACF,CAAA,CACD,EAAEC,KAAK,CAAC,CAAEC,OAAAA,EAAQC,KAAAA,CAAAA,IAAW,CACxBD,GAAAA,EAAQ,OAAOE,EAAiBF,CAAM,EAE1C,MAAMG,EAAsCF,EAAKE,wBAE7CA,OAAAA,EAAwBC,SAAW,EAC9B,KAGFD,EAAwBE,KAAiBC,GAAA,CAACA,EAAOC,aAAa,CAAA,CACtE,CACH,EAEaC,EAAe,SACnBd,EAAaV,EAAiB,EAAE,EAAEe,KAAK,CAAC,CAAEC,OAAAA,EAAQC,KAAAA,CAAAA,IAAW,SAC9DD,GAAAA,EAAQ,OAAOE,EAAiBF,CAAM,EAE1C,MAAMS,IACJR,EAAAA,GAAAA,YAAAA,EAAMS,YAANT,YAAAA,EAAiBU,KAAK,CAACC,EAAQC,IAC7BD,EAAEE,MAAMC,cAAcF,EAAEC,KAAK,KAC1B,CAAA,EAEDE,IAAiBf,EAAAA,GAAAA,YAAAA,EAAMgB,cAANhB,YAAAA,EAAmBe,iBAAkB,KAG5CE,OAAAA,EAAAA,QAASC,GAAiB,CAChCC,EAAAA,iBAAmBD,EAAQE,KAAOL,CAAAA,CAC3C,EAEMP,CAAAA,CACR,EAGUa,EAAa,MACxBC,GAEO7B,EAAaT,EAAe,CACjCU,UAAW,CACT0B,GAAIE,CACN,CAAA,CACD,EAAExB,KAAK,CAAC,CAAEC,OAAAA,EAAQC,KAAAA,CAAAA,IAAW,OACxBD,OAAAA,EAAeE,EAAiBF,CAAM,IAEnCC,EAAAA,GAAAA,YAAAA,EAAMkB,UAANlB,YAAAA,EAAeuB,oBAAqB,EAAE,CAC9C"}
@@ -0,0 +1,253 @@
1
+ import{events as i}from"@dropins/tools/event-bus.js";import{FetchGraphQL as z}from"@dropins/tools/fetch-graphql.js";import{Initializer as M}from"@dropins/tools/lib.js";function N(e){const t=document.cookie.split(";");for(let n=0;n<t.length;n++){const r=t[n].trim();if(r.indexOf(`${e}=`)===0)return r.substring(e.length+1)}return null}function k(e){e?sessionStorage.setItem("DROPIN__CART__CART__DATA",JSON.stringify(e)):sessionStorage.removeItem("DROPIN__CART__CART__DATA")}function F(){const e=sessionStorage.getItem("DROPIN__CART__CART__DATA");return e?JSON.parse(e):null}const U=(()=>{const e=F();return{cartId:null,authenticated:e?!e.isGuestCart:!1}})(),u=new Proxy(U,{set(e,t,n){var r;if(e[t]=n,t==="cartId"){if(n===u.cartId)return!0;if(n===null)return document.cookie="DROPIN__CART__CART-ID=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/",!0;const a=(r=u.config)==null?void 0:r.cartExpiresInDays;a||console.warn('Missing "expiresInDays" config. Cookie expiration will default to 30 days.');const c=new Date;c.setDate(c.getDate()+(a??30)),document.cookie=`DROPIN__CART__CART-ID=${n}; expires=${c.toUTCString()}; path=/`}return!0},get(e,t){return t==="cartId"?N("DROPIN__CART__CART-ID"):e[t]}}),O=new M({init:async e=>{const t={disableGuestCart:!1,...e};O.config.setConfig(t),o().catch(console.error)},listeners:()=>[i.on("authenticated",async e=>{if(u.authenticated&&!e){i.emit("cart/reset",void 0);return}e&&!u.authenticated&&(u.authenticated=e,o().catch(console.error))},{eager:!0}),i.on("locale",async e=>{e!==u.locale&&(u.locale=e,o().catch(console.error))}),i.on("cart/reset",()=>{$().catch(console.error)}),i.on("cart/data",e=>{k(e)})]}),Q=O.config,{setEndpoint:ie,setFetchGraphQlHeader:le,removeFetchGraphQlHeader:se,setFetchGraphQlHeaders:oe,fetchGraphQl:_,getConfig:_e}=new z().getMethods();function m(e){var t,n,r,a,c,l,s;return e?{id:e.id,totalQuantity:H(e),errors:B(e==null?void 0:e.itemsV2),items:S(e==null?void 0:e.itemsV2),miniCartMaxItems:S(e==null?void 0:e.itemsV2).slice(0,((t=u.config)==null?void 0:t.miniCartMaxItemsDisplay)??10),total:{value:e.prices.grand_total.value,currency:e.prices.grand_total.currency},subtotal:{excludingTax:{value:(n=e.prices.subtotal_excluding_tax)==null?void 0:n.value,currency:(r=e.prices.subtotal_excluding_tax)==null?void 0:r.currency},includingTax:{value:(a=e.prices.subtotal_including_tax)==null?void 0:a.value,currency:(c=e.prices.subtotal_including_tax)==null?void 0:c.currency},includingDiscountOnly:{value:(l=e.prices.subtotal_with_discount_excluding_tax)==null?void 0:l.value,currency:(s=e.prices.subtotal_with_discount_excluding_tax)==null?void 0:s.currency}},appliedTaxes:D(e.prices.applied_taxes),totalTax:q(e.prices.applied_taxes),appliedDiscounts:D(e.prices.discounts),isVirtual:e.is_virtual,addresses:{shipping:e.shipping_addresses&&L(e.shipping_addresses)},isGuestCart:!u.authenticated}:null}function q(e){return e!=null&&e.length?e.reduce((t,n)=>({value:t.value+n.amount.value,currency:n.amount.currency}),{value:0,currency:""}):null}function S(e){var n;if(!((n=e==null?void 0:e.items)!=null&&n.length))return[];const t=u.config;return e.items.map(r=>{var a,c,l,s,y,C,h,b,I,v,x,T,R,E,A;return{itemType:r.__typename,uid:r.uid,url:{urlKey:r.product.url_key,categories:r.product.categories.map(P=>P.url_key)},quantity:r.quantity,sku:r.product.sku,name:r.product.name,image:{src:t!=null&&t.useConfigurableParentThumbnail?r.product.thumbnail.url:((c=(a=r.configured_variant)==null?void 0:a.thumbnail)==null?void 0:c.url)||r.product.thumbnail.url,alt:t!=null&&t.useConfigurableParentThumbnail?r.product.thumbnail.label:((s=(l=r.configured_variant)==null?void 0:l.thumbnail)==null?void 0:s.label)||r.product.thumbnail.label},price:{value:r.prices.price.value,currency:r.prices.price.currency},links:J(r.links),total:r.__typename==="SimpleCartItem"&&r.customizable_options.length!==0||r.__typename==="BundleCartItem"?{value:r.prices.row_total.value,currency:r.prices.row_total.currency}:{value:(y=r.prices.original_row_total)==null?void 0:y.value,currency:(C=r.prices.original_row_total)==null?void 0:C.currency},discount:{value:r.prices.total_item_discount.value,currency:r.prices.total_item_discount.currency},regularPrice:r.__typename==="ConfigurableCartItem"?{value:(b=(h=r.configured_variant)==null?void 0:h.price_range)==null?void 0:b.maximum_price.regular_price.value,currency:(v=(I=r.configured_variant)==null?void 0:I.price_range)==null?void 0:v.maximum_price.regular_price.currency}:r.__typename==="GiftCardCartItem"||r.__typename==="SimpleCartItem"&&r.customizable_options.length!==0||r.__typename==="BundleCartItem"?{value:r.prices.price.value,currency:r.prices.price.currency}:{value:(x=r.product.price_range)==null?void 0:x.maximum_price.regular_price.value,currency:(T=r.product.price_range)==null?void 0:T.maximum_price.regular_price.currency},discounted:r.__typename==="BundleCartItem"||r.__typename==="SimpleCartItem"&&r.customizable_options.length!==0?!1:r.__typename==="ConfigurableCartItem"?((E=(R=r.configured_variant)==null?void 0:R.price_range)==null?void 0:E.maximum_price.discount.amount_off)>0:((A=r.product.price_range)==null?void 0:A.maximum_price.discount.amount_off)>0,bundleOptions:r.__typename==="BundleCartItem"?V(r.bundle_options):null,selectedOptions:j(r.configurable_options),customizableOptions:Y(r.customizable_options),sender:r.__typename==="GiftCardCartItem"?r.sender_name:null,senderEmail:r.__typename==="GiftCardCartItem"?r.sender_email:null,recipient:r.__typename==="GiftCardCartItem"?r.recipient_name:null,recipientEmail:r.__typename==="GiftCardCartItem"?r.recipient_email:null,message:r.__typename==="GiftCardCartItem"?r.message:null,discountedTotal:{value:r.prices.row_total.value,currency:r.prices.row_total.currency}}})}function B(e){var n;const t=(n=e==null?void 0:e.items)==null?void 0:n.reduce((r,a)=>{var c;return(c=a.errors)==null||c.forEach(l=>{r.push({uid:a.uid,text:l.message})}),r},[]);return t!=null&&t.length?t:null}function D(e){return e!=null&&e.length?e.map(t=>({amount:{value:t.amount.value,currency:t.amount.currency},label:t.label})):[]}function V(e){const t=e==null?void 0:e.map(r=>({uid:r.uid,label:r.label,value:r.values.map(a=>a.label).join(", ")})),n={};return t==null||t.forEach(r=>{n[r.label]=r.value}),Object.keys(n).length>0?n:null}function j(e){const t=e==null?void 0:e.map(r=>({uid:r.configurable_product_option_uid,label:r.option_label,value:r.value_label})),n={};return t==null||t.forEach(r=>{n[r.label]=r.value}),Object.keys(n).length>0?n:null}function Y(e){const t=e==null?void 0:e.map(r=>({uid:r.customizable_option_uid,label:r.label,type:r.type,values:r.values.map(a=>({uid:a.customizable_option_value_uid,label:a.label,value:a.value}))})),n={};return t==null||t.forEach(r=>{switch(r.type){case"field":case"area":case"date_time":n[r.label]=r.values[0].value;break;case"radio":case"drop_down":n[r.label]=r.values[0].label;break;case"multiple":case"checkbox":n[r.label]=r.values.reduce((a,c)=>a?`${a}, ${c.label}`:c.label,"");break}}),n}function H(e){var t,n;return((t=u.config)==null?void 0:t.cartSummaryDisplayTotal)===0?e.itemsV2.items.length:((n=u.config)==null?void 0:n.cartSummaryDisplayTotal)===1?e.total_quantity:e.itemsV2.items.length}function J(e){return(e==null?void 0:e.length)>0?{count:e.length,result:e.map(t=>t.title).join(", ")}:null}function L(e){return e!=null&&e.length?e.map(t=>{var n,r;return{countryCode:(n=t.country)==null?void 0:n.code,zipCode:t.postcode,regionCode:(r=t.region)==null?void 0:r.code}}):null}function Z(e){return e?{displayMiniCart:e.minicart_display,miniCartMaxItemsDisplay:e.minicart_max_items,cartExpiresInDays:e.cart_expires_in_days,cartSummaryDisplayTotal:e.cart_summary_display_quantity,defaultCountry:e.default_country,categoryFixedProductTaxDisplaySetting:e.category_fixed_product_tax_display_setting,productFixedProductTaxDisplaySetting:e.product_fixed_product_tax_display_setting,salesFixedProductTaxDisplaySetting:e.sales_fixed_product_tax_display_setting,shoppingCartDisplayZeroTax:e.shopping_cart_display_zero_tax,useConfigurableParentThumbnail:e.configurable_thumbnail_source==="parent"}:null}const d=e=>{const t=e.findIndex(({extensions:a})=>(a==null?void 0:a.category)==="graphql-authorization")>-1,n=e.findIndex(({extensions:a})=>(a==null?void 0:a.category)==="graphql-no-such-entity")>-1,r=e.map(a=>a.message).join(" ");if(t||n)return $(),console.error(r),null;throw Error(r)},p=`
2
+ customizable_options {
3
+ type
4
+ customizable_option_uid
5
+ label
6
+ is_required
7
+ values {
8
+ label
9
+ value
10
+ price{
11
+ type
12
+ units
13
+ value
14
+ }
15
+ }
16
+ }
17
+ `,G=`
18
+ price_range {
19
+ minimum_price {
20
+ regular_price {
21
+ value
22
+ currency
23
+ }
24
+ final_price {
25
+ value
26
+ currency
27
+ }
28
+ discount {
29
+ percent_off
30
+ amount_off
31
+ }
32
+ }
33
+ maximum_price {
34
+ regular_price {
35
+ value
36
+ currency
37
+ }
38
+ final_price {
39
+ value
40
+ currency
41
+ }
42
+ discount {
43
+ percent_off
44
+ amount_off
45
+ }
46
+ }
47
+ }
48
+ `,g=`
49
+ fragment CartFragment on Cart {
50
+ id
51
+ total_quantity
52
+ is_virtual
53
+ prices {
54
+ subtotal_with_discount_excluding_tax {
55
+ currency
56
+ value
57
+ }
58
+ subtotal_including_tax {
59
+ currency
60
+ value
61
+ }
62
+ subtotal_excluding_tax {
63
+ currency
64
+ value
65
+ }
66
+ grand_total {
67
+ currency
68
+ value
69
+ }
70
+ applied_taxes {
71
+ label,
72
+ amount {
73
+ value
74
+ currency
75
+ }
76
+ }
77
+ discounts {
78
+ amount {
79
+ value
80
+ currency
81
+ }
82
+ label
83
+ }
84
+ }
85
+ itemsV2 (
86
+ pageSize:$pageSize,
87
+ currentPage:$currentPage,
88
+ sort: $itemsSortInput
89
+ ) {
90
+ items {
91
+ __typename
92
+ uid
93
+ quantity
94
+
95
+ errors {
96
+ code
97
+ message
98
+ }
99
+
100
+ prices {
101
+ price {
102
+ value
103
+ currency
104
+ }
105
+ total_item_discount {
106
+ value
107
+ currency
108
+ }
109
+ row_total {
110
+ value
111
+ currency
112
+ }
113
+ original_row_total{
114
+ value
115
+ currency
116
+ }
117
+ }
118
+
119
+ product {
120
+ name
121
+ sku
122
+ thumbnail {
123
+ url
124
+ label
125
+ }
126
+ url_key
127
+ url_suffix
128
+ categories {
129
+ url_path
130
+ url_key
131
+ }
132
+ ${G}
133
+ }
134
+ ...on SimpleCartItem {
135
+ ${p}
136
+ }
137
+ ... on ConfigurableCartItem {
138
+ configurable_options {
139
+ configurable_product_option_uid
140
+ option_label
141
+ value_label
142
+ }
143
+ configured_variant {
144
+ uid
145
+ sku
146
+ thumbnail {
147
+ label
148
+ url
149
+ }
150
+ ${G}
151
+ }
152
+ ${p}
153
+ }
154
+ ... on DownloadableCartItem {
155
+ links {
156
+ sort_order
157
+ title
158
+ }
159
+ ${p}
160
+ }
161
+ ... on BundleCartItem {
162
+ bundle_options {
163
+ uid
164
+ label
165
+ values {
166
+ uid
167
+ label
168
+ }
169
+ }
170
+ }
171
+ ... on GiftCardCartItem {
172
+ message
173
+ recipient_email
174
+ recipient_name
175
+ sender_email
176
+ sender_name
177
+ amount{
178
+ currency
179
+ value
180
+ }
181
+ is_available
182
+ }
183
+ }
184
+ }
185
+ shipping_addresses {
186
+ country {
187
+ code
188
+ }
189
+ region {
190
+ code
191
+ }
192
+ postcode
193
+ }
194
+ }
195
+ `,f=`
196
+ $pageSize: Int! = 100,
197
+ $currentPage: Int! = 1,
198
+ $itemsSortInput: QuoteItemsSortInput! = {field: CREATED_AT, order: DESC}
199
+ `,K=`
200
+ query GUEST_CART_QUERY(
201
+ $cartId: String!,
202
+ ${f}
203
+ ) {
204
+
205
+ cart(cart_id: $cartId){
206
+ ...CartFragment
207
+ }
208
+ }
209
+
210
+ ${g}
211
+ `,W=`
212
+ query CUSTOMER_CART_QUERY(
213
+ ${f}
214
+ ) {
215
+
216
+ cart: customerCart {
217
+ ...CartFragment
218
+ }
219
+ }
220
+
221
+ ${g}
222
+ `,w=async()=>{const e=u.authenticated,t=u.cartId;if(e)return _(W,{method:"GET",cache:"no-cache"}).then(({errors:n,data:r})=>n?d(n):m(r.cart));if(!t)throw new Error("No cart ID found");return _(K,{method:"GET",cache:"no-cache",variables:{cartId:t}}).then(({errors:n,data:r})=>n?d(n):m(r.cart))},X=`
223
+ mutation MERGE_CARTS_MUTATION(
224
+ $guestCartId: String!,
225
+ $customerCartId: String!,
226
+ ${f}
227
+ ) {
228
+ mergeCarts(
229
+ source_cart_id: $guestCartId,
230
+ destination_cart_id: $customerCartId
231
+ ) {
232
+ ...CartFragment
233
+ }
234
+ }
235
+
236
+ ${g}
237
+ `,o=async()=>{u.config=await ne();const e=u.authenticated?await ee():await re();return i.emit("cart/initialized",e),i.emit("cart/data",e),e};async function ee(){const e=u.cartId,t=await w();return t?(u.cartId=t.id,!e||t.id===e?t:await _(X,{variables:{guestCartId:e,customerCartId:t.id}}).then(({data:n})=>{const r=m(n.mergeCarts);return i.emit("cart/merged",r),r}).catch(()=>(console.error("Could not merge carts"),t))):null}async function re(){if(Q.getConfig().disableGuestCart===!0||!u.cartId)return null;try{return await w()}catch(e){return console.error(e),null}}const $=()=>(u.cartId=null,u.authenticated=!1,o()),te=`
238
+ query STORE_CONFIG_QUERY {
239
+ storeConfig {
240
+ minicart_display
241
+ minicart_max_items
242
+ cart_expires_in_days
243
+ cart_summary_display_quantity
244
+ default_country
245
+ category_fixed_product_tax_display_setting
246
+ product_fixed_product_tax_display_setting
247
+ sales_fixed_product_tax_display_setting
248
+ shopping_cart_display_zero_tax
249
+ configurable_thumbnail_source
250
+ }
251
+ }
252
+ `,ne=async()=>_(te,{method:"GET",cache:"force-cache"}).then(({errors:e,data:t})=>e?d(e):Z(t.storeConfig));export{f as C,g as a,ie as b,Q as c,le as d,oe as e,_ as f,_e as g,d as h,O as i,w as j,o as k,$ as l,ne as m,F as n,se as r,u as s,m as t};
253
+ //# sourceMappingURL=getStoreConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getStoreConfig.js","sources":["../../src/lib/cookies.ts","../../src/lib/persisted-data.ts","../../src/lib/state.ts","../../src/api/initialize/initialize.ts","../../src/api/fetch-graphql/fetch-graphql.ts","../../src/data/transforms/transform-cart.ts","../../src/data/transforms/transform-store-config.ts","../../src/lib/fetch-error.ts","../../src/api/graphql/CartFragment.ts","../../src/api/getCartData/graphql/CartQuery.ts","../../src/api/getCartData/getCartData.ts","../../src/api/initializeCart/graphql/MergeCartsMutation.ts","../../src/api/initializeCart/initializeCart.ts","../../src/api/resetCart/resetCart.ts","../../src/api/getStoreConfig/graphql/StoreConfigQuery.ts","../../src/api/getStoreConfig/getStoreConfig.ts"],"sourcesContent":["export function getCookie(cookieName: string) {\n // Split the cookie string into an array of individual cookies\n const cookies = document.cookie.split(';');\n\n // Loop through the cookies to find the one with the specified name\n for (let i = 0; i < cookies.length; i++) {\n const cookie = cookies[i].trim(); // Remove leading and trailing spaces\n\n // Check if this cookie starts with the name you're looking for\n if (cookie.indexOf(`${cookieName}=`) === 0) {\n // Extract and return the cookie's value\n return cookie.substring(cookieName.length + 1);\n }\n }\n\n // If the cookie is not found, return null\n return null;\n}\n","import { CartModel } from '@/cart/data/models';\n\nexport function setPersistedData(data: CartModel | null) {\n if (data) {\n sessionStorage.setItem('DROPIN__CART__CART__DATA', JSON.stringify(data));\n } else {\n sessionStorage.removeItem('DROPIN__CART__CART__DATA');\n }\n}\n\nexport function getPersistedData(): CartModel | null {\n const data = sessionStorage.getItem('DROPIN__CART__CART__DATA');\n\n if (data) return JSON.parse(data);\n\n return null;\n}\n","import { getCookie } from '@/cart/lib/cookies';\nimport { StoreConfigModel } from '@/cart/data/models/store-models';\nimport { getPersistedData } from './persisted-data';\n\ntype State = {\n cartId: string | null;\n authenticated: boolean;\n locale?: string;\n config?: StoreConfigModel | null;\n};\n\nconst _state: State = (() => {\n const persistedData = getPersistedData();\n const isAuthenticated = persistedData ? !persistedData.isGuestCart : false;\n return {\n cartId: null,\n authenticated: isAuthenticated,\n };\n})();\n\n// Proxy state to allow reactivity\nexport const state = new Proxy(_state, {\n set(target, key, value) {\n // @ts-ignore\n target[key] = value;\n\n if (key === 'cartId') {\n // only update cookie if value has changed\n if (value === state.cartId) return true;\n\n if (value === null) {\n // remove cookie\n document.cookie = `DROPIN__CART__CART-ID=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/`;\n return true;\n }\n\n // get expiration days from config\n const expiresInDays = state.config?.cartExpiresInDays;\n\n if (!expiresInDays) {\n console.warn(\n 'Missing \"expiresInDays\" config. Cookie expiration will default to 30 days.'\n );\n }\n\n // set expiration date\n const expires = new Date();\n expires.setDate(expires.getDate() + (expiresInDays ?? 30));\n\n // set cookie\n document.cookie = `DROPIN__CART__CART-ID=${value}; expires=${expires.toUTCString()}; path=/`;\n }\n\n return true;\n },\n get(target, key) {\n if (key === 'cartId') {\n // get value from cookie\n return getCookie('DROPIN__CART__CART-ID');\n }\n\n return target[key as keyof State];\n },\n});\n","import { Initializer } from '@adobe/elsie/lib';\nimport { initializeCart, resetCart } from '@/cart/api';\nimport { state } from '@/cart/lib/state';\nimport { events } from '@adobe/event-bus';\nimport { Lang } from '@adobe/elsie/i18n';\nimport { setPersistedData } from '@/cart/lib/persisted-data';\n\ntype ConfigProps = {\n disableGuestCart?: boolean;\n langDefinitions?: Lang;\n};\n\nexport const initialize = new Initializer<ConfigProps>({\n init: async (_config) => {\n const config = { disableGuestCart: false, ..._config };\n\n // Set config\n initialize.config.setConfig(config);\n\n initializeCart().catch(console.error);\n },\n\n listeners: () => [\n events.on(\n 'authenticated',\n async (authenticated) => {\n if (state.authenticated && !authenticated) {\n // Reset cart if the user is no longer authenticated\n events.emit('cart/reset', undefined);\n // State is already updated to false and cart is reinitialized on reset so we can just return\n return;\n }\n\n // Login event occurred\n if (authenticated && !state.authenticated) {\n state.authenticated = authenticated;\n initializeCart().catch(console.error);\n }\n },\n { eager: true }\n ),\n\n events.on('locale', async (locale) => {\n if (locale !== state.locale) {\n state.locale = locale;\n initializeCart().catch(console.error);\n }\n }),\n\n events.on('cart/reset', () => {\n resetCart().catch(console.error);\n }),\n\n events.on('cart/data', (payload) => {\n setPersistedData(payload);\n }),\n ],\n});\n\nexport const config = initialize.config;\n","import { FetchGraphQL } from '@adobe/fetch-graphql';\n\nexport const {\n setEndpoint,\n setFetchGraphQlHeader,\n removeFetchGraphQlHeader,\n setFetchGraphQlHeaders,\n fetchGraphQl,\n getConfig,\n} = new FetchGraphQL().getMethods();\n","import { CartModel } from '@/cart/data/models';\nimport { state } from '@/cart/lib/state';\n\nexport function transformCart(data: any): CartModel | null {\n if (!data) return null;\n\n return {\n id: data.id,\n totalQuantity: transformQuantity(data),\n errors: transformErrors(data?.itemsV2),\n items: transformItems(data?.itemsV2),\n miniCartMaxItems: transformItems(data?.itemsV2).slice(\n 0,\n state.config?.miniCartMaxItemsDisplay ?? 10\n ),\n total: {\n value: data.prices.grand_total.value,\n currency: data.prices.grand_total.currency,\n },\n subtotal: {\n excludingTax: {\n value: data.prices.subtotal_excluding_tax?.value,\n currency: data.prices.subtotal_excluding_tax?.currency,\n },\n includingTax: {\n value: data.prices.subtotal_including_tax?.value,\n currency: data.prices.subtotal_including_tax?.currency,\n },\n includingDiscountOnly: {\n value: data.prices.subtotal_with_discount_excluding_tax?.value,\n currency: data.prices.subtotal_with_discount_excluding_tax?.currency,\n },\n },\n appliedTaxes: transformTotalPriceModifiers(data.prices.applied_taxes),\n totalTax: calculateTotalTax(data.prices.applied_taxes),\n appliedDiscounts: transformTotalPriceModifiers(data.prices.discounts),\n isVirtual: data.is_virtual,\n addresses: {\n shipping:\n data.shipping_addresses && transformAddresses(data.shipping_addresses),\n },\n isGuestCart: !state.authenticated,\n };\n}\n\n// Need to calculate total tax amount since it's not provided by GraphQL\nfunction calculateTotalTax(data: any[]) {\n if (!data?.length) return null;\n\n return data.reduce(\n (acc: any, item: any) => {\n return {\n value: acc.value + item.amount.value,\n currency: item.amount.currency,\n };\n },\n { value: 0, currency: '' }\n );\n}\n\nfunction transformItems(data: any) {\n if (!data?.items?.length) return [];\n\n const config = state.config;\n\n return data.items.map((item: any) => ({\n itemType: item.__typename,\n uid: item.uid,\n url: {\n urlKey: item.product.url_key,\n categories: item.product.categories.map(\n (category: any) => category.url_key\n ),\n },\n quantity: item.quantity,\n sku: item.product.sku,\n name: item.product.name,\n image: {\n // Use parent thumbnail if configured, otherwise use own variant. use the parent thumbnail as a fallback\n src: config?.useConfigurableParentThumbnail\n ? item.product.thumbnail.url\n : item.configured_variant?.thumbnail?.url || item.product.thumbnail.url,\n alt: config?.useConfigurableParentThumbnail\n ? item.product.thumbnail.label\n : item.configured_variant?.thumbnail?.label ||\n item.product.thumbnail.label,\n },\n price: {\n value: item.prices.price.value,\n currency: item.prices.price.currency,\n },\n links: transformLinks(item.links),\n\n // Update BundleCartItem after USF-1221 is completed\n // Update SimpleWithCustomizableOptions after USF-1212 is completed\n total:\n (item.__typename === 'SimpleCartItem' &&\n item.customizable_options.length !== 0) ||\n item.__typename === 'BundleCartItem'\n ? {\n value: item.prices.row_total.value,\n currency: item.prices.row_total.currency,\n }\n : {\n value: item.prices.original_row_total?.value,\n currency: item.prices.original_row_total?.currency,\n },\n\n discount: {\n value: item.prices.total_item_discount.value,\n currency: item.prices.total_item_discount.currency,\n },\n\n // Add support for BundleCartItem after USF-1221 is completed\n // Add support for SimpleWithCustomizableOptions after USF-1212 is completed\n regularPrice:\n item.__typename === 'ConfigurableCartItem'\n ? {\n value:\n item.configured_variant?.price_range?.maximum_price.regular_price\n .value,\n currency:\n item.configured_variant?.price_range?.maximum_price.regular_price\n .currency,\n }\n : item.__typename === 'GiftCardCartItem' ||\n (item.__typename === 'SimpleCartItem' &&\n item.customizable_options.length !== 0) ||\n item.__typename === 'BundleCartItem'\n ? {\n value: item.prices.price.value,\n currency: item.prices.price.currency,\n }\n : {\n value: item.product.price_range?.maximum_price.regular_price.value,\n currency:\n item.product.price_range?.maximum_price.regular_price.currency,\n },\n\n // Add support for BundleCartItem after USF-1221 is completed\n // Add support for SimpleWithCustomizableOptions after USF-1212 is completed\n discounted:\n item.__typename === 'BundleCartItem' ||\n (item.__typename === 'SimpleCartItem' &&\n item.customizable_options.length !== 0)\n ? false\n : item.__typename === 'ConfigurableCartItem'\n ? item.configured_variant?.price_range?.maximum_price.discount\n .amount_off > 0\n : item.product.price_range?.maximum_price.discount.amount_off > 0,\n bundleOptions:\n item.__typename === 'BundleCartItem'\n ? transformBundleOptions(item.bundle_options)\n : null,\n selectedOptions: transformSelectedOptions(item.configurable_options),\n customizableOptions: transformCustomizableOptions(\n item.customizable_options\n ),\n sender: item.__typename === 'GiftCardCartItem' ? item.sender_name : null,\n senderEmail:\n item.__typename === 'GiftCardCartItem' ? item.sender_email : null,\n recipient:\n item.__typename === 'GiftCardCartItem' ? item.recipient_name : null,\n recipientEmail:\n item.__typename === 'GiftCardCartItem' ? item.recipient_email : null,\n message: item.__typename === 'GiftCardCartItem' ? item.message : null,\n\n discountedTotal: {\n value: item.prices.row_total.value,\n currency: item.prices.row_total.currency,\n },\n }));\n}\n\nfunction transformErrors(data: any) {\n const result = data?.items?.reduce((acc: any, item: any) => {\n item.errors?.forEach((error: Error) => {\n acc.push({ uid: item.uid, text: error.message });\n });\n\n return acc;\n }, []);\n\n return result?.length ? result : null;\n}\n\nfunction transformTotalPriceModifiers(data: any) {\n if (!data?.length) return [];\n\n return data.map((item: any) => ({\n amount: {\n value: item.amount.value,\n currency: item.amount.currency,\n },\n label: item.label,\n }));\n}\n\nfunction transformBundleOptions(data: any) {\n const bundle = data?.map((option: any) => ({\n uid: option.uid,\n label: option.label,\n value: option.values.map((value: any) => value.label).join(', '),\n }));\n\n const bundleOptions: { [key: string]: any } = {};\n\n bundle?.forEach((option: any) => {\n bundleOptions[option.label] = option.value;\n });\n\n return Object.keys(bundleOptions).length > 0 ? bundleOptions : null;\n}\n\nfunction transformSelectedOptions(data: any) {\n const selected = data?.map((option: any) => ({\n uid: option.configurable_product_option_uid,\n label: option.option_label,\n value: option.value_label,\n }));\n\n const selectedOptions: { [key: string]: any } = {};\n\n selected?.forEach((option: any) => {\n selectedOptions[option.label] = option.value;\n });\n\n return Object.keys(selectedOptions).length > 0 ? selectedOptions : null;\n}\n\nfunction transformCustomizableOptions(data: any) {\n const transformedOptions = data?.map((option: any) => ({\n uid: option.customizable_option_uid,\n label: option.label,\n type: option.type,\n values: option.values.map((value: any) => ({\n uid: value.customizable_option_value_uid,\n label: value.label,\n value: value.value,\n })),\n }));\n\n const result: { [key: string]: any } = {};\n\n transformedOptions?.forEach((option: any) => {\n switch (option.type) {\n case 'field':\n case 'area':\n case 'date_time':\n result[option.label] = option.values[0].value;\n break;\n case 'radio':\n case 'drop_down':\n result[option.label] = option.values[0].label;\n break;\n case 'multiple':\n case 'checkbox':\n result[option.label] = (option.values as Array<any>).reduce(\n (previous, current) => {\n if (previous) return `${previous}, ${current.label}`;\n return current.label;\n },\n ''\n );\n break;\n }\n });\n return result;\n}\n\nfunction transformQuantity(data: any) {\n if (state.config?.cartSummaryDisplayTotal === 0)\n return data.itemsV2.items.length;\n if (state.config?.cartSummaryDisplayTotal === 1) return data.total_quantity;\n // Default to items count if unexpected config value or error returned\n return data.itemsV2.items.length;\n}\n\nfunction transformLinks(links: any) {\n return links?.length > 0\n ? {\n count: links.length,\n result: links.map((link: any) => link.title).join(', '),\n }\n : null;\n}\n\nfunction transformAddresses(data: any[]) {\n if (!data?.length) return null;\n\n return data.map((address: any) => ({\n countryCode: address.country?.code,\n zipCode: address.postcode,\n regionCode: address.region?.code,\n }));\n}\n","import { StoreConfigModel } from '@/cart/data/models';\n\nexport function transformStoreConfig(data: any): StoreConfigModel | null {\n if (!data) return null;\n\n return {\n displayMiniCart: data.minicart_display,\n miniCartMaxItemsDisplay: data.minicart_max_items,\n cartExpiresInDays: data.cart_expires_in_days,\n cartSummaryDisplayTotal: data.cart_summary_display_quantity,\n defaultCountry: data.default_country!,\n categoryFixedProductTaxDisplaySetting:\n data.category_fixed_product_tax_display_setting,\n productFixedProductTaxDisplaySetting:\n data.product_fixed_product_tax_display_setting,\n salesFixedProductTaxDisplaySetting:\n data.sales_fixed_product_tax_display_setting,\n shoppingCartDisplayZeroTax: data.shopping_cart_display_zero_tax,\n useConfigurableParentThumbnail: data.configurable_thumbnail_source === 'parent',\n };\n}\n","import { resetCart } from '../api';\n\n/** Actions */\nexport const handleFetchError = (\n errors: Array<{ message: string; extensions: { category: string } }>\n) => {\n const unauthorized =\n errors.findIndex(\n ({ extensions }) => extensions?.category === 'graphql-authorization'\n ) > -1;\n\n const missingCart =\n errors.findIndex(\n ({ extensions }) => extensions?.category === 'graphql-no-such-entity'\n ) > -1;\n\n const errorMessage = errors.map((e: any) => e.message).join(' ');\n\n // Reset cart data if unauthorized or missing cart\n if (unauthorized || missingCart) {\n resetCart();\n console.error(errorMessage);\n return null;\n }\n\n throw Error(errorMessage);\n};\n","const CUSTOMIZABLE_OPTIONS_FRAGMENT = `\n customizable_options {\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\nconst PRICE_RANGE_FRAGMENT = `\n price_range {\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\nexport const CART_FRAGMENT = `\nfragment CartFragment on Cart {\n id\n total_quantity\n is_virtual\n prices {\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 applied_taxes {\n label,\n amount {\n value\n currency\n }\n }\n discounts {\n amount {\n value\n currency\n }\n label\n }\n }\n itemsV2 (\n pageSize:$pageSize,\n currentPage:$currentPage,\n sort: $itemsSortInput\n ) {\n items {\n __typename\n uid\n quantity\n \n errors {\n code\n message\n }\n \n prices {\n price {\n value\n currency\n }\n total_item_discount {\n value\n currency\n }\n row_total {\n value\n currency\n }\n original_row_total{\n value\n currency\n }\n }\n \n product {\n name\n sku\n thumbnail {\n url\n label\n }\n url_key\n url_suffix\n categories {\n url_path\n url_key\n }\n ${PRICE_RANGE_FRAGMENT}\n }\n ...on SimpleCartItem {\n ${CUSTOMIZABLE_OPTIONS_FRAGMENT}\n }\n ... on ConfigurableCartItem {\n configurable_options {\n configurable_product_option_uid\n option_label\n value_label\n }\n configured_variant {\n uid\n sku\n thumbnail {\n label\n url\n }\n ${PRICE_RANGE_FRAGMENT}\n }\n ${CUSTOMIZABLE_OPTIONS_FRAGMENT}\n }\n ... on DownloadableCartItem {\n links {\n sort_order\n title\n }\n ${CUSTOMIZABLE_OPTIONS_FRAGMENT}\n }\n ... on BundleCartItem {\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 shipping_addresses {\n country {\n code\n }\n region {\n code\n }\n postcode\n }\n}\n`;\n\n// Default values for pagination and sorting for cart items\nexport const CART_ITEMS_PAGINATION_ARGUMENTS = `\n $pageSize: Int! = 100,\n $currentPage: Int! = 1,\n $itemsSortInput: QuoteItemsSortInput! = {field: CREATED_AT, order: DESC}\n`;\n","import {\n CART_FRAGMENT,\n CART_ITEMS_PAGINATION_ARGUMENTS,\n} from '@/cart/api/graphql/CartFragment';\n\nexport const GUEST_CART_QUERY = `\n query GUEST_CART_QUERY(\n $cartId: String!,\n ${CART_ITEMS_PAGINATION_ARGUMENTS}\n ) {\n\n cart(cart_id: $cartId){\n ...CartFragment\n }\n }\n\n ${CART_FRAGMENT}\n`;\n\nexport const CUSTOMER_CART_QUERY = `\n query CUSTOMER_CART_QUERY(\n ${CART_ITEMS_PAGINATION_ARGUMENTS}\n ) {\n\n cart: customerCart {\n ...CartFragment\n }\n }\n\n ${CART_FRAGMENT}\n`;\n","import { fetchGraphQl } from '@/cart/api';\nimport { handleFetchError } from '@/cart/lib/fetch-error';\nimport { state } from '@/cart/lib/state';\nimport { CartModel } from '@/cart/data/models';\nimport { transformCart } from '@/cart/data/transforms';\n\nimport { GUEST_CART_QUERY, CUSTOMER_CART_QUERY } from './graphql/CartQuery';\n\nexport const getCartData = async (): Promise<CartModel | null> => {\n const authenticated = state.authenticated;\n const cartId = state.cartId;\n\n // Customer Cart\n if (authenticated) {\n return fetchGraphQl(CUSTOMER_CART_QUERY, {\n method: 'GET',\n cache: 'no-cache',\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n return transformCart(data.cart);\n });\n }\n\n // Guest Cart\n if (!cartId) throw new Error('No cart ID found');\n\n return fetchGraphQl(GUEST_CART_QUERY, {\n method: 'GET',\n cache: 'no-cache',\n variables: { cartId },\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n return transformCart(data.cart);\n });\n};\n","import { CART_FRAGMENT, CART_ITEMS_PAGINATION_ARGUMENTS } from '@/cart/api/graphql/CartFragment';\n\nexport const MERGE_CARTS_MUTATION = `\n mutation MERGE_CARTS_MUTATION(\n $guestCartId: String!, \n $customerCartId: String!,\n ${CART_ITEMS_PAGINATION_ARGUMENTS}\n ) {\n mergeCarts(\n source_cart_id: $guestCartId,\n destination_cart_id: $customerCartId\n ) {\n ...CartFragment \n }\n }\n\n ${CART_FRAGMENT}\n`;\n","import { events } from '@adobe/event-bus';\nimport { state } from '@/cart/lib/state';\nimport { config, fetchGraphQl, getCartData, getStoreConfig } from '@/cart/api';\nimport { MERGE_CARTS_MUTATION } from './graphql/MergeCartsMutation';\nimport { CartModel } from '@/cart/data/models';\nimport { transformCart } from '@/cart/data/transforms/transform-cart';\n\nexport const initializeCart = async (): Promise<CartModel | null> => {\n // set config\n state.config = await getStoreConfig();\n\n const payload = state.authenticated\n ? await getCustomerCartPayload()\n : await getGuestCartPayload();\n\n events.emit('cart/initialized', payload);\n events.emit('cart/data', payload);\n\n return payload;\n};\n\nasync function getCustomerCartPayload() {\n const existingCartId = state.cartId;\n\n const cart = await getCartData();\n\n if (!cart) return null;\n\n // set cartid in the state\n state.cartId = cart.id;\n\n // If the existing cart is the same as the fetched cart, return the fetched cart\n if (!existingCartId || cart.id === existingCartId) return cart;\n\n // If the existing cart is not the same as the fetched cart, merge the carts\n return await fetchGraphQl(MERGE_CARTS_MUTATION, {\n variables: {\n guestCartId: existingCartId,\n customerCartId: cart.id,\n },\n })\n .then(({ data }) => {\n const transformedCartData = transformCart(data.mergeCarts);\n events.emit('cart/merged', transformedCartData);\n return transformedCartData;\n })\n .catch(() => {\n // gracefully handle merge error, continue with existing cart\n console.error('Could not merge carts');\n return cart;\n });\n}\n\nasync function getGuestCartPayload() {\n // If guest cart is not enabled, return null\n if (config.getConfig().disableGuestCart === true) {\n return null;\n }\n\n // If there is not a cart id in the state, return null\n if (!state.cartId) {\n return null;\n }\n\n // If there is a cart id in the state, return the cart data\n try {\n return await getCartData();\n } catch (error) {\n console.error(error);\n return null;\n }\n}\n","import { state } from '@/cart/lib/state';\nimport { initializeCart } from '@/cart/api';\nimport { CartModel } from '@/cart/data/models';\n\nexport const resetCart = (): Promise<CartModel | null> => {\n state.cartId = null;\n state.authenticated = false;\n\n return initializeCart();\n};\n","export const STORE_CONFIG_QUERY = `\nquery STORE_CONFIG_QUERY {\n storeConfig {\n minicart_display \n minicart_max_items\n cart_expires_in_days \n cart_summary_display_quantity\n default_country\n category_fixed_product_tax_display_setting\n product_fixed_product_tax_display_setting\n sales_fixed_product_tax_display_setting\n shopping_cart_display_zero_tax\n configurable_thumbnail_source\n }\n}\n`;\n","import { fetchGraphQl } from '@/cart/api';\nimport { StoreConfigModel } from '@/cart/data/models';\nimport { transformStoreConfig } from '@/cart/data/transforms';\nimport { handleFetchError } from '@/cart/lib/fetch-error';\n\nimport { STORE_CONFIG_QUERY } from './graphql/StoreConfigQuery';\n\nexport const getStoreConfig = async (): Promise<StoreConfigModel | null> => {\n return fetchGraphQl(STORE_CONFIG_QUERY, {\n method: 'GET',\n cache: 'force-cache',\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n return transformStoreConfig(data.storeConfig);\n });\n};\n"],"names":["getCookie","cookieName","cookies","document","cookie","split","i","length","trim","indexOf","substring","setPersistedData","data","sessionStorage","setItem","JSON","stringify","removeItem","getPersistedData","getItem","parse","_state","persistedData","cartId","authenticated","isGuestCart","isAuthenticated","state","Proxy","set","target","key","value","expiresInDays","config","cartExpiresInDays","console","warn","expires","Date","setDate","getDate","toUTCString","get","initialize","Initializer","init","_config","disableGuestCart","setConfig","initializeCart","catch","error","listeners","events","on","emit","undefined","eager","locale","resetCart","payload","setEndpoint","setFetchGraphQlHeader","removeFetchGraphQlHeader","setFetchGraphQlHeaders","fetchGraphQl","getConfig","FetchGraphQL","getMethods","transformCart","id","totalQuantity","transformQuantity","errors","transformErrors","itemsV2","items","transformItems","miniCartMaxItems","slice","miniCartMaxItemsDisplay","total","prices","grand_total","currency","subtotal","excludingTax","subtotal_excluding_tax","includingTax","subtotal_including_tax","includingDiscountOnly","subtotal_with_discount_excluding_tax","appliedTaxes","transformTotalPriceModifiers","applied_taxes","totalTax","calculateTotalTax","appliedDiscounts","discounts","isVirtual","is_virtual","addresses","shipping","shipping_addresses","transformAddresses","reduce","acc","item","amount","map","itemType","__typename","uid","url","urlKey","product","url_key","categories","category","quantity","sku","name","image","src","useConfigurableParentThumbnail","thumbnail","configured_variant","alt","label","price","links","transformLinks","customizable_options","row_total","original_row_total","discount","total_item_discount","regularPrice","price_range","maximum_price","regular_price","discounted","amount_off","bundleOptions","transformBundleOptions","bundle_options","selectedOptions","transformSelectedOptions","configurable_options","customizableOptions","transformCustomizableOptions","sender","sender_name","senderEmail","sender_email","recipient","recipient_name","recipientEmail","recipient_email","message","discountedTotal","result","forEach","push","text","bundle","option","values","join","Object","keys","selected","configurable_product_option_uid","option_label","value_label","transformedOptions","customizable_option_uid","type","customizable_option_value_uid","previous","current","cartSummaryDisplayTotal","total_quantity","count","link","title","address","countryCode","country","code","zipCode","postcode","regionCode","region","transformStoreConfig","displayMiniCart","minicart_display","minicart_max_items","cart_expires_in_days","cart_summary_display_quantity","defaultCountry","default_country","categoryFixedProductTaxDisplaySetting","category_fixed_product_tax_display_setting","productFixedProductTaxDisplaySetting","product_fixed_product_tax_display_setting","salesFixedProductTaxDisplaySetting","sales_fixed_product_tax_display_setting","shoppingCartDisplayZeroTax","shopping_cart_display_zero_tax","configurable_thumbnail_source","handleFetchError","unauthorized","findIndex","extensions","missingCart","errorMessage","e","Error","CUSTOMIZABLE_OPTIONS_FRAGMENT","PRICE_RANGE_FRAGMENT","CART_FRAGMENT","CART_ITEMS_PAGINATION_ARGUMENTS","GUEST_CART_QUERY","CUSTOMER_CART_QUERY","getCartData","method","cache","then","cart","variables","MERGE_CARTS_MUTATION","getStoreConfig","getCustomerCartPayload","getGuestCartPayload","existingCartId","guestCartId","customerCartId","transformedCartData","mergeCarts","STORE_CONFIG_QUERY","storeConfig"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import{C as P,a as A,s as f,f as I,h as v,t as D}from"./getStoreConfig.js";import{events as g}from"@dropins/tools/event-bus.js";function T(r){const{cart:e,locale:t="en-US"}=r;return{id:e.id,items:m(e.items,t),prices:{subtotalExcludingTax:e.subtotal.excludingTax,subtotalIncludingTax:e.subtotal.includingTax},totalQuantity:e.totalQuantity,possibleOnepageCheckout:void 0,giftMessageSelected:void 0,giftWrappingSelected:void 0,source:void 0}}function m(r,e){return r.map(t=>{var a;return{canApplyMsrp:!1,formattedPrice:h(e,t.price.currency,t.price.value),id:t.uid,prices:{price:t.price},product:{productId:t.uid,name:t.name,sku:t.sku,topLevelSku:void 0,specialToDate:void 0,specialFromDate:void 0,newToDate:void 0,newFromDate:void 0,createdAt:void 0,updatedAt:void 0,manufacturer:void 0,countryOfManufacture:void 0,categories:t.url.categories,productType:void 0,pricing:{regularPrice:t.regularPrice.value,minimalPrice:void 0,maximalPrice:void 0,specialPrice:(a=t.discount)==null?void 0:a.value,tierPricing:void 0,currencyCode:t.regularPrice.currency},canonicalUrl:t.url.urlKey,mainImageUrl:t.image.src,image:{src:t.image.src,alt:t.image.alt}},configurableOptions:void 0,quantity:t.quantity}})}function h(r,e,t){const a=r.replace("_","-");return new Intl.NumberFormat(a,{style:"currency",currency:e}).format(t)}const c={SHOPPING_CART_CONTEXT:"shoppingCartContext",PRODUCT_CONTEXT:"productContext",CHANGED_PRODUCTS_CONTEXT:"changedProductsContext"},s={OPEN_CART:"open-cart",ADD_TO_CART:"add-to-cart",REMOVE_FROM_CART:"remove-from-cart",SHOPPING_CART_VIEW:"shopping-cart-view"};function _(){return window.adobeDataLayer=window.adobeDataLayer||[],window.adobeDataLayer}function i(r,e){const t=_();t.push({[r]:null}),t.push({[r]:e})}function l(r,e){_().push(a=>{const n=a.getState?a.getState():{};a.push({event:r,eventInfo:{...n,...e}})})}function b(r,e,t){const a=T({cart:r,locale:t});i(c.SHOPPING_CART_CONTEXT,{...a}),l(s.OPEN_CART),m(e,t).forEach(d=>{i(c.PRODUCT_CONTEXT,d.product),p(a,[d],s.ADD_TO_CART)})}function x(r,e){const t=T({cart:r,locale:e});i(c.SHOPPING_CART_CONTEXT,{...t}),l(s.SHOPPING_CART_VIEW)}function p(r,e,t){const a={items:e};i(c.SHOPPING_CART_CONTEXT,{...r}),i(c.CHANGED_PRODUCTS_CONTEXT,{...a}),l(t)}function N(r,e,t){const a=T({cart:r,locale:t}),n=a.items,d=_(),E=d.getState?d.getState():{},{shoppingCartContext:{items:R=[]}={}}=E;e.forEach(O=>{const u=R.find(C=>C.id===O.uid),o=n.find(C=>C.id===O.uid);!o&&!u||(!u&&o?(i(c.PRODUCT_CONTEXT,o.product),p(a,[o],s.ADD_TO_CART)):u&&!o?(i(c.PRODUCT_CONTEXT,u.product),p(a,[u],s.REMOVE_FROM_CART)):o.quantity>u.quantity?(i(c.PRODUCT_CONTEXT,o.product),p(a,[o],s.ADD_TO_CART)):(i(c.PRODUCT_CONTEXT,o.product),p(a,[o],s.REMOVE_FROM_CART)))})}const y=`
2
+ mutation UPDATE_PRODUCTS_FROM_CART_MUTATION(
3
+ $cartId: String!,
4
+ $cartItems: [CartItemUpdateInput!]!,
5
+ ${P}
6
+ ) {
7
+ updateCartItems(
8
+ input: {
9
+ cart_id: $cartId
10
+ cart_items: $cartItems
11
+ }
12
+ ) {
13
+ cart {
14
+ ...CartFragment
15
+ }
16
+
17
+ }
18
+ }
19
+ ${A}
20
+ `,M=async r=>{const e=f.cartId;if(!e)throw Error("Cart ID is not set");return I(y,{variables:{cartId:e,cartItems:r.map(({uid:t,quantity:a})=>({cart_item_uid:t,quantity:a}))}}).then(({errors:t,data:a})=>{if(t)return v(t);const n=D(a.updateCartItems.cart);return g.emit("cart/updated",n),g.emit("cart/data",n),n&&N(n,r,f.locale||"en-US"),n})};export{N as a,x as b,b as p,M as u};
21
+ //# sourceMappingURL=updateProductsFromCart.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateProductsFromCart.js","sources":["../../src/data/transforms/acdl-context.ts","../../src/lib/acdl.ts","../../src/api/updateProductsFromCart/graphql/UpdateProductsMutation.ts","../../src/api/updateProductsFromCart/updateProductsFromCart.ts"],"sourcesContent":["import { ShoppingCartContext, ShoppingCartItem } from '../models/acdl-models';\nimport { CartModel, Item } from '../models/cart-model';\n\ntype TransformShoppingCartParams = {\n cart: CartModel;\n locale?: string;\n};\n\nexport function transformShoppingCart(\n params: TransformShoppingCartParams\n): ShoppingCartContext {\n const { cart, locale = 'en-US' } = params;\n\n return {\n id: cart.id,\n items: transformItems(cart.items, locale),\n prices: {\n subtotalExcludingTax: cart.subtotal.excludingTax,\n subtotalIncludingTax: cart.subtotal.includingTax,\n },\n totalQuantity: cart.totalQuantity,\n possibleOnepageCheckout: undefined,\n giftMessageSelected: undefined,\n giftWrappingSelected: undefined,\n source: undefined,\n };\n}\n\nexport function transformItems(items: Item[], locale: string): ShoppingCartItem[] {\n return items.map((item: any) => ({\n canApplyMsrp: false,\n formattedPrice: formatCurrency(\n locale,\n item.price.currency,\n item.price.value\n ),\n id: item.uid,\n prices: {\n price: item.price,\n },\n product: {\n productId: item.uid,\n name: item.name,\n sku: item.sku,\n topLevelSku: undefined,\n specialToDate: undefined,\n specialFromDate: undefined,\n newToDate: undefined,\n newFromDate: undefined,\n createdAt: undefined,\n updatedAt: undefined,\n manufacturer: undefined,\n countryOfManufacture: undefined,\n categories: item.url.categories,\n productType: undefined,\n pricing: {\n regularPrice: item.regularPrice.value,\n minimalPrice: undefined,\n maximalPrice: undefined,\n specialPrice: item.discount?.value,\n tierPricing: undefined,\n currencyCode: item.regularPrice.currency,\n },\n canonicalUrl: item.url.urlKey,\n mainImageUrl: item.image.src,\n image: {\n src: item.image.src,\n alt: item.image.alt,\n },\n },\n configurableOptions: undefined,\n quantity: item.quantity,\n }));\n}\n\nfunction formatCurrency(\n locale: string,\n currency: string,\n value: number\n): string {\n const formattedLocale = locale.replace('_', '-');\n\n return new Intl.NumberFormat(formattedLocale, {\n style: 'currency',\n currency,\n }).format(value);\n}\n","/* Publish functions for the Adobe Client Data Layer (ACDL) */\n\nimport { CartModel, Item } from '@/cart/data/models/cart-model';\nimport {\n transformItems,\n transformShoppingCart,\n} from '@/cart/data/transforms/acdl-context';\nimport {\n ShoppingCartContext,\n ShoppingCartItem,\n} from '../data/models/acdl-models';\n\n/**\n * See: https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-sdk/src/contexts.ts\n */\nexport const contexts = {\n SHOPPING_CART_CONTEXT: 'shoppingCartContext',\n PRODUCT_CONTEXT: 'productContext',\n CHANGED_PRODUCTS_CONTEXT: 'changedProductsContext',\n};\n\n/**\n * See: https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-sdk/src/events.ts\n */\nexport const events = {\n // See: https://github.com/adobe/commerce-events/blob/main/examples/events/open-cart.md\n OPEN_CART: 'open-cart',\n // See: ??? (not documented in the commerce-events repo)\n //UPDATE_CART: 'update-cart',\n // See: https://github.com/adobe/commerce-events/blob/main/examples/events/add-to-cart.md\n ADD_TO_CART: 'add-to-cart',\n // See: https://github.com/adobe/commerce-events/blob/main/examples/events/remove-from-cart.md\n REMOVE_FROM_CART: 'remove-from-cart',\n // See: https://github.com/adobe/commerce-events/blob/main/examples/events/shopping-cart-view.md\n SHOPPING_CART_VIEW: 'shopping-cart-view',\n};\n\nexport function getAdobeDataLayer() {\n // @ts-ignore\n window.adobeDataLayer = window.adobeDataLayer || [];\n // @ts-ignore\n return window.adobeDataLayer;\n}\n\n/**\n * Sets a context in the Adobe Client Data Layer (ACDL)\n * Logic based on: https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-sdk/src/Base.ts#L6\n */\nfunction setContext(name: string, data: any) {\n const adobeDataLayer = getAdobeDataLayer();\n\n // Clear existing context\n adobeDataLayer.push({\n [name]: null,\n });\n\n // Set new context\n adobeDataLayer.push({\n [name]: data,\n });\n}\n\n/**\n * Pushes an event to the Adobe Client Data Layer (ACDL)\n * Logic based on: https://github.com/adobe/commerce-events/blob/1973d0ce28471ef190fa06dad6359ffa0ab51db6/packages/storefront-events-sdk/src/Base.ts#L34\n */\nfunction pushEvent(event: string, additionalContext?: any) {\n const adobeDataLayer = getAdobeDataLayer();\n\n adobeDataLayer.push((acdl: any) => {\n const state = acdl.getState ? acdl.getState() : {};\n\n acdl.push({\n event,\n eventInfo: {\n ...state,\n ...additionalContext,\n },\n });\n });\n}\n\n// Triggered when a new cart is created, which is when a product is added to an empty cart.\nexport function publishOpenCartEvent(\n cart: CartModel,\n addedItems: Item[],\n locale: string\n) {\n const shoppingCartContext = transformShoppingCart({\n cart,\n locale,\n });\n\n // Set context and push open cart event\n setContext(contexts.SHOPPING_CART_CONTEXT, {\n ...shoppingCartContext,\n });\n\n pushEvent(events.OPEN_CART);\n\n // Set context and push add to cart event for each updated item\n const shoppingCartItems = transformItems(addedItems, locale);\n\n shoppingCartItems.forEach((item) => {\n setContext(contexts.PRODUCT_CONTEXT, item.product);\n publishItemsUpdatedEvent(shoppingCartContext, [item], events.ADD_TO_CART);\n });\n}\n\n// Triggered when any cart page loads.\nexport function publishShoppingCartViewEvent(cart: CartModel, locale: string) {\n const shoppingCartContext = transformShoppingCart({\n cart,\n locale,\n });\n\n setContext(contexts.SHOPPING_CART_CONTEXT, {\n ...shoppingCartContext,\n });\n\n pushEvent(events.SHOPPING_CART_VIEW);\n}\n\n// A re-usable function to publish events when items are added to, or removed from the cart.\nfunction publishItemsUpdatedEvent(\n shoppingCartContext: ShoppingCartContext,\n updatedItems: ShoppingCartItem[],\n event: string\n) {\n const changedProductsContext = {\n items: updatedItems,\n };\n\n setContext(contexts.SHOPPING_CART_CONTEXT, {\n ...shoppingCartContext,\n });\n\n setContext(contexts.CHANGED_PRODUCTS_CONTEXT, {\n ...changedProductsContext,\n });\n\n pushEvent(event);\n}\n\nexport function publishCartUpdateEvents(\n cart: CartModel,\n updatedItems: {\n uid: string;\n }[],\n locale: string\n) {\n const newShoppingCartContext = transformShoppingCart({\n cart,\n locale,\n });\n\n const currentItems = newShoppingCartContext.items;\n\n const adobeDataLayer = getAdobeDataLayer();\n\n const currentState = adobeDataLayer.getState ? adobeDataLayer.getState() : {};\n\n const { shoppingCartContext: { items: previousItems = [] } = {} } =\n currentState;\n\n updatedItems.forEach((updatedItem) => {\n const previousItem = previousItems.find(\n (item: ShoppingCartItem) => item.id === updatedItem.uid\n );\n\n const currentItem = currentItems!.find(\n (item: ShoppingCartItem) => item.id === updatedItem.uid\n );\n\n if (!currentItem && !previousItem) {\n // Not enough data available to publish an event\n // Adobe Data Layer possibly not initialized yet\n return;\n }\n\n if (!previousItem && currentItem) {\n // Publish add to cart event for the item added\n setContext(contexts.PRODUCT_CONTEXT, currentItem.product);\n publishItemsUpdatedEvent(\n newShoppingCartContext,\n [currentItem],\n events.ADD_TO_CART\n );\n } else if (previousItem && !currentItem) {\n // Publish remove from cart event for the item removed\n setContext(contexts.PRODUCT_CONTEXT, previousItem.product);\n publishItemsUpdatedEvent(\n newShoppingCartContext,\n [previousItem],\n events.REMOVE_FROM_CART\n );\n } else if (currentItem!.quantity > previousItem.quantity) {\n // Publish add to cart event for the item increased\n setContext(contexts.PRODUCT_CONTEXT, currentItem!.product);\n publishItemsUpdatedEvent(\n newShoppingCartContext,\n [currentItem!],\n events.ADD_TO_CART\n );\n } else {\n // Publish remove from cart event for the item decreased\n setContext(contexts.PRODUCT_CONTEXT, currentItem!.product);\n publishItemsUpdatedEvent(\n newShoppingCartContext,\n [currentItem!],\n events.REMOVE_FROM_CART\n );\n }\n });\n}\n","import { CART_FRAGMENT, CART_ITEMS_PAGINATION_ARGUMENTS } from '../../graphql/CartFragment';\n\nexport const UPDATE_PRODUCTS_FROM_CART_MUTATION = `\n mutation UPDATE_PRODUCTS_FROM_CART_MUTATION(\n $cartId: String!, \n $cartItems: [CartItemUpdateInput!]!,\n ${CART_ITEMS_PAGINATION_ARGUMENTS}\n ) {\n updateCartItems(\n input: {\n cart_id: $cartId\n cart_items: $cartItems \n }\n ) {\n cart {\n ...CartFragment\n }\n\n }\n }\n ${CART_FRAGMENT}\n`;\n","import { state } from '@/cart/lib/state';\nimport { fetchGraphQl } from '@/cart/api';\nimport { handleFetchError } from '@/cart/lib/fetch-error';\nimport { CartModel } from '@/cart/data/models';\nimport { transformCart } from '@/cart/data/transforms';\nimport { events } from '@adobe/event-bus';\n\nimport { UPDATE_PRODUCTS_FROM_CART_MUTATION } from './graphql/UpdateProductsMutation';\nimport { publishCartUpdateEvents } from '@/cart/lib/acdl';\n\ntype UpdateProductsFromCart = Array<{\n uid: string;\n quantity: number;\n}>;\n\nexport const updateProductsFromCart = async (\n items: UpdateProductsFromCart\n): Promise<CartModel | null> => {\n const cartId = state.cartId;\n\n if (!cartId) {\n throw Error('Cart ID is not set');\n }\n\n return fetchGraphQl(UPDATE_PRODUCTS_FROM_CART_MUTATION, {\n variables: {\n cartId,\n cartItems: items.map(({ uid, quantity }) => ({\n cart_item_uid: uid,\n quantity,\n })),\n },\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n const payload = transformCart(data.updateCartItems.cart);\n\n events.emit('cart/updated', payload);\n events.emit('cart/data', payload);\n\n if (payload) {\n // Publish cart update events\n publishCartUpdateEvents(payload, items, state.locale || 'en-US');\n }\n\n return payload;\n });\n};\n"],"names":["transformShoppingCart","params","cart","locale","id","items","transformItems","prices","subtotalExcludingTax","subtotal","excludingTax","subtotalIncludingTax","includingTax","totalQuantity","possibleOnepageCheckout","undefined","giftMessageSelected","giftWrappingSelected","source","map","item","canApplyMsrp","formattedPrice","formatCurrency","price","currency","value","uid","product","productId","name","sku","topLevelSku","specialToDate","specialFromDate","newToDate","newFromDate","createdAt","updatedAt","manufacturer","countryOfManufacture","categories","url","productType","pricing","regularPrice","minimalPrice","maximalPrice","specialPrice","discount","tierPricing","currencyCode","canonicalUrl","urlKey","mainImageUrl","image","src","alt","configurableOptions","quantity","formattedLocale","replace","Intl","NumberFormat","style","format","contexts","SHOPPING_CART_CONTEXT","PRODUCT_CONTEXT","CHANGED_PRODUCTS_CONTEXT","events","OPEN_CART","ADD_TO_CART","REMOVE_FROM_CART","SHOPPING_CART_VIEW","getAdobeDataLayer","adobeDataLayer","window","setContext","data","push","pushEvent","event","additionalContext","acdl","state","getState","eventInfo","publishOpenCartEvent","addedItems","shoppingCartContext","forEach","publishItemsUpdatedEvent","publishShoppingCartViewEvent","updatedItems","changedProductsContext","publishCartUpdateEvents","newShoppingCartContext","currentItems","currentState","previousItems","updatedItem","previousItem","find","currentItem","UPDATE_PRODUCTS_FROM_CART_MUTATION","CART_ITEMS_PAGINATION_ARGUMENTS","CART_FRAGMENT","updateProductsFromCart","cartId","Error","fetchGraphQl","variables","cartItems","cart_item_uid","then","errors","handleFetchError","payload","transformCart","updateCartItems","emit"],"mappings":"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"}