@dropins/storefront-cart 0.1.1-alpha77 → 0.1.1-alpha83
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 +3 -3
- package/api.js.map +1 -1
- package/chunks/getEstimatedTotals.js +70 -0
- package/chunks/getEstimatedTotals.js.map +1 -0
- package/chunks/getStoreConfig.js +42 -17
- package/chunks/getStoreConfig.js.map +1 -1
- package/containers/Cart.js +1 -1
- package/containers/Cart.js.map +1 -1
- package/containers/MiniCart.js +1 -1
- package/containers/MiniCart.js.map +1 -1
- package/package.json +1 -1
- package/render.js +2 -2
- package/render.js.map +1 -1
- package/chunks/getEstimateShipping.js +0 -39
- package/chunks/getEstimateShipping.js.map +0 -1
package/api.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
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
|
|
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 g}from"./chunks/updateProductsFromCart.js";import{u as H}from"./chunks/updateProductsFromCart.js";import{a as Y,g as j,c as q,b as B}from"./chunks/getEstimatedTotals.js";import"@dropins/tools/fetch-graphql.js";import"@dropins/tools/lib.js";const E=`
|
|
2
2
|
mutation ADD_PRODUCTS_TO_CART_MUTATION(
|
|
3
3
|
$cartId: String!,
|
|
4
4
|
$cartItems: [CartItemInput!]!,
|
|
@@ -18,9 +18,9 @@ import{C,a as T,s as n,f as m,h as u,t as l,c as I}from"./chunks/getStoreConfig.
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
${T}
|
|
21
|
-
`,G=async e=>{let r=!1;const s=n.cartId||await
|
|
21
|
+
`,G=async e=>{let r=!1;const s=n.cartId||await h().then(a=>(r=!0,a));return m(E,{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"):g(t,o,n.locale||"en-US")}return t})},_=`
|
|
22
22
|
mutation CREATE_EMPTY_CART_MUTATION {
|
|
23
23
|
createEmptyCart
|
|
24
24
|
}
|
|
25
|
-
`,
|
|
25
|
+
`,h=async()=>{const{disableGuestCart:e}=I.getConfig();if(e)throw new Error("Guest cart is disabled");return await m(_).then(({data:r})=>{const s=r.createEmptyCart;return n.cartId=s,s})};export{G as addProductsToCart,I as config,h as createEmptyCart,m as fetchGraphQl,P as getCartData,D as getConfig,Y as getCountries,j as getEstimateShipping,q as getEstimatedTotals,B 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
26
|
//# sourceMappingURL=api.js.map
|
package/api.js.map
CHANGED
|
@@ -1 +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":"
|
|
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":"0fAEO,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,70 @@
|
|
|
1
|
+
import{s as l,f as d,h as u,C as m,a as T,t as E}from"./getStoreConfig.js";import"@dropins/tools/event-bus.js";const I=`
|
|
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
|
+
carrier_code
|
|
17
|
+
method_code
|
|
18
|
+
error_message
|
|
19
|
+
price_excl_tax {
|
|
20
|
+
currency
|
|
21
|
+
value
|
|
22
|
+
}
|
|
23
|
+
price_incl_tax {
|
|
24
|
+
currency
|
|
25
|
+
value
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
`,g=`
|
|
30
|
+
query COUNTRIES_QUERY {
|
|
31
|
+
countries {
|
|
32
|
+
label: full_name_locale
|
|
33
|
+
id
|
|
34
|
+
}
|
|
35
|
+
storeConfig {
|
|
36
|
+
defaultCountry: default_country
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
`,f=`
|
|
40
|
+
query REGIONS_QUERY($id: String) {
|
|
41
|
+
country(id: $id) {
|
|
42
|
+
available_regions {
|
|
43
|
+
code
|
|
44
|
+
name
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
`,N=async r=>{const t=l.cartId;if(!t)throw new Error("No cart ID found");if(!r)throw new Error("No address parameter found");const{countryCode:o,postcode:n,region:e}=r;return d(I,{variables:{cartId:t,address:{country_code:o||"US",postcode:n||"",region:{region:(e==null?void 0:e.region)||"",region_code:(e==null?void 0:e.code)||"",region_id:(e==null?void 0:e.id)||0}}}}).then(({errors:i,data:s})=>{if(i)return u(i);const c=s.estimateShippingMethods;return c.length===0?null:c.find(a=>!a.error_message)})},M=async()=>d(g,{}).then(({errors:r,data:t})=>{var e,i;if(r)return u(r);const o=((e=t==null?void 0:t.countries)==null?void 0:e.sort((s,c)=>s.label.localeCompare(c.label)))||[],n=((i=t==null?void 0:t.storeConfig)==null?void 0:i.defaultCountry)||"US";return o.forEach(s=>{s.isDefaultCountry=s.id===n}),o}),U=async r=>d(f,{variables:{id:r}}).then(({errors:t,data:o})=>{var n;return t?u(t):((n=o==null?void 0:o.country)==null?void 0:n.available_regions)||[]}),S=`
|
|
49
|
+
mutation GET_ESTIMATED_TOTALS_MUTATION(
|
|
50
|
+
$cartId: String!
|
|
51
|
+
$address: EstimateAddressInput!,
|
|
52
|
+
$shipping_method: ShippingMethodInput,
|
|
53
|
+
${m}
|
|
54
|
+
|
|
55
|
+
) {
|
|
56
|
+
estimateTotals(
|
|
57
|
+
input: {
|
|
58
|
+
cart_id: $cartId
|
|
59
|
+
address: $address
|
|
60
|
+
shipping_method: $shipping_method
|
|
61
|
+
}
|
|
62
|
+
) {
|
|
63
|
+
cart {
|
|
64
|
+
...CartFragment
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
${T}
|
|
69
|
+
`,$=async r=>{var c,a;const t=l.cartId;if(!t)throw new Error("No cart ID found");if(!r)throw new Error("No address parameter found");const{countryCode:o,postcode:n,region:e}=r,i=(c=r.shipping_method)==null?void 0:c.carrier_code,s=(a=r.shipping_method)==null?void 0:a.method_code;return d(S,{variables:{cartId:t,address:{country_code:o||"US",postcode:n||"00000",region:{region:(e==null?void 0:e.region)||"region",region_code:(e==null?void 0:e.code)||"regionCode",region_id:(e==null?void 0:e.id)||0}},shipping_method:{carrier_code:i||"",method_code:s||""}}}).then(({errors:_,data:h})=>{if(_)return u(_);const p=h.estimateTotals;return p?E(p.cart):null})};export{M as a,U as b,$ as c,N as g};
|
|
70
|
+
//# sourceMappingURL=getEstimatedTotals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getEstimatedTotals.js","sources":["../../src/api/getEstimateShipping/graphql/estimateShippingMethodsMutation.ts","../../src/api/getEstimateShipping/graphql/countriesAndRegionsQueries.ts","../../src/api/getEstimateShipping/getEstimateShipping.ts","../../src/api/getEstimatedTotals/graphql/GetEstimatedTotalsMutation.ts","../../src/api/getEstimatedTotals/getEstimatedTotals.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 carrier_code\n method_code\n error_message\n price_excl_tax {\n currency\n value\n }\n price_incl_tax {\n currency\n value\n }\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 region?: string;\n code?: string;\n id?: number;\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: region?.region || '',\n region_code: region?.code || '',\n region_id: region?.id || 0,\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 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","import {\n CART_FRAGMENT,\n CART_ITEMS_PAGINATION_ARGUMENTS,\n} from '@/cart/api/graphql/CartFragment';\n\nexport const GET_ESTIMATED_TOTALS_MUTATION = `\n mutation GET_ESTIMATED_TOTALS_MUTATION(\n $cartId: String!\n $address: EstimateAddressInput!,\n $shipping_method: ShippingMethodInput,\n ${CART_ITEMS_PAGINATION_ARGUMENTS}\n\n ) {\n estimateTotals(\n input: {\n cart_id: $cartId\n address: $address\n shipping_method: $shipping_method\n }\n ) {\n cart {\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 { GET_ESTIMATED_TOTALS_MUTATION } from './graphql/GetEstimatedTotalsMutation';\n\nexport interface EstimateAddressShippingInput {\n countryCode: string;\n postcode?: string;\n region?: {\n region?: string;\n code?: string;\n id?: number;\n };\n shipping_method?: {\n carrier_code?: string;\n method_code?: string;\n };\n}\n\nexport const getEstimatedTotals = async (\n address: EstimateAddressShippingInput\n): Promise<CartModel | 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 const carrier_code = address.shipping_method?.carrier_code;\n const method_code = address.shipping_method?.method_code;\n\n return fetchGraphQl(GET_ESTIMATED_TOTALS_MUTATION, {\n variables: {\n cartId,\n address: {\n country_code: countryCode || 'US',\n postcode: postcode || '00000',\n region: {\n region: region?.region || 'region',\n region_code: region?.code || 'regionCode',\n region_id: region?.id || 0,\n },\n },\n shipping_method: {\n carrier_code: carrier_code || '',\n method_code: method_code || '',\n },\n },\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n const estimatedData: { cart: any } = data.estimateTotals;\n\n if (estimatedData) {\n const payload = transformCart(estimatedData.cart);\n\n return payload;\n }\n\n return null;\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","region_id","id","then","errors","data","handleFetchError","estimateShippingMethods","length","find","method","error_message","getCountries","sortedCountries","countries","sort","a","b","label","localeCompare","defaultCountry","storeConfig","forEach","country","isDefaultCountry","getRegions","countryId","available_regions","GET_ESTIMATED_TOTALS_MUTATION","CART_ITEMS_PAGINATION_ARGUMENTS","CART_FRAGMENT","getEstimatedTotals","carrier_code","shipping_method","method_code","estimatedData","estimateTotals","transformCart","cart"],"mappings":"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"}
|
package/chunks/getStoreConfig.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{events as
|
|
1
|
+
import{events as l}from"@dropins/tools/event-bus.js";import{FetchGraphQL as N}from"@dropins/tools/fetch-graphql.js";import{Initializer as z}from"@dropins/tools/lib.js";function U(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}const M={cartId:null,authenticated:!1},c=new Proxy(M,{set(e,t,n){var r;if(e[t]=n,t==="cartId"){if(n===c.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=c.config)==null?void 0:r.cartExpiresInDays;a||console.warn('Missing "expiresInDays" config. Cookie expiration will default to 30 days.');const u=new Date;u.setDate(u.getDate()+(a??30)),document.cookie=`DROPIN__CART__CART-ID=${n}; expires=${u.toUTCString()}; path=/`}return!0},get(e,t){return t==="cartId"?U("DROPIN__CART__CART-ID"):e[t]}});function k(e){e?sessionStorage.setItem("DROPIN__CART__CART__DATA",JSON.stringify(e)):sessionStorage.removeItem("DROPIN__CART__CART__DATA")}function ue(){const e=sessionStorage.getItem("DROPIN__CART__CART__DATA");return e?JSON.parse(e):null}const G=new z({init:async e=>{const t={disableGuestCart:!1,...e};G.config.setConfig(t),o()},listeners:()=>[l.on("authenticated",async e=>{e!==c.authenticated&&(c.authenticated=e,o().catch(console.error))}),l.on("locale",async e=>{e!==c.locale&&(c.locale=e,o().catch(console.error))}),l.on("cart/reset",()=>{P().catch(console.error)}),l.on("cart/data",e=>{k(e)})]}),F=G.config,{setEndpoint:ie,setFetchGraphQlHeader:le,removeFetchGraphQlHeader:se,setFetchGraphQlHeaders:oe,fetchGraphQl:_,getConfig:_e}=new N().getMethods();function g(e){var t,n,r,a,u,i,s;return e?{id:e.id,totalQuantity:X(e),errors:q(e==null?void 0:e.itemsV2),items:A(e==null?void 0:e.itemsV2),miniCartMaxItems:A(e==null?void 0:e.itemsV2).slice(0,((t=c.config)==null?void 0:t.miniCartMaxItemsDisplay)??10),total:{includingTax:{value:e.prices.grand_total.value,currency:e.prices.grand_total.currency},excludingTax:{value:e.prices.grand_total_excluding_tax.value,currency:e.prices.grand_total_excluding_tax.currency}},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:(u=e.prices.subtotal_including_tax)==null?void 0:u.currency},includingDiscountOnly:{value:(i=e.prices.subtotal_with_discount_excluding_tax)==null?void 0:i.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&&Y(e.shipping_addresses)}}: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 A(e){var n;if(!((n=e==null?void 0:e.items)!=null&&n.length))return[];const t=c.config;return e.items.map(r=>{var a,u,i,s,f,C,h,b,x,I,v,T,S,R,E;return{itemType:r.__typename,uid:r.uid,url:{urlKey:r.product.url_key,categories:r.product.categories.map($=>$.url_key)},quantity:r.quantity,sku:r.product.sku,name:r.product.name,image:{src:t!=null&&t.useConfigurableParentThumbnail?r.product.thumbnail.url:((u=(a=r.configured_variant)==null?void 0:a.thumbnail)==null?void 0:u.url)||r.product.thumbnail.url,alt:t!=null&&t.useConfigurableParentThumbnail?r.product.thumbnail.label:((s=(i=r.configured_variant)==null?void 0:i.thumbnail)==null?void 0:s.label)||r.product.thumbnail.label},price:{value:r.prices.price.value,currency:r.prices.price.currency},taxedPrice:{value:r.prices.price_including_tax.value,currency:r.prices.price_including_tax.currency},rowTotal:{value:r.prices.row_total.value,currency:r.prices.row_total.currency},rowTotalIncludingTax:{value:r.prices.row_total_including_tax.value,currency:r.prices.row_total_including_tax.currency},links: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:(f=r.prices.original_row_total)==null?void 0:f.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:(I=(x=r.configured_variant)==null?void 0:x.price_range)==null?void 0:I.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:(v=r.product.price_range)==null?void 0:v.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"?((R=(S=r.configured_variant)==null?void 0:S.price_range)==null?void 0:R.maximum_price.discount.amount_off)>0:((E=r.product.price_range)==null?void 0:E.maximum_price.discount.amount_off)>0,bundleOptions:r.__typename==="BundleCartItem"?L(r.bundle_options):null,selectedOptions:B(r.configurable_options),customizableOptions:V(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 q(e){var n;const t=(n=e==null?void 0:e.items)==null?void 0:n.reduce((r,a)=>{var u;return(u=a.errors)==null||u.forEach(i=>{r.push({uid:a.uid,text:i.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 L(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 B(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 V(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,u)=>a?`${a}, ${u.label}`:u.label,"");break}}),n}function X(e){var t,n;return((t=c.config)==null?void 0:t.cartSummaryDisplayTotal)===0?e.itemsV2.items.length:((n=c.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 Y(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 H(e){if(!e)return null;const t=n=>{switch(n){case 1:return"EXCLUDING_TAX";case 2:return"INCLUDING_TAX";case 3:return"INCLUDING_EXCLUDING_TAX";default:return"EXCLUDING_TAX"}};return{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,shoppingCartDisplaySetting:{zeroTax:e.shopping_cart_display_zero_tax,subtotal:t(e.shopping_cart_display_subtotal),price:t(e.shopping_cart_display_price),shipping:t(e.shopping_cart_display_shipping),fullSummary:e.shopping_cart_display_full_summary,grandTotal:e.shopping_cart_display_grand_total,taxGiftWrapping:e.shopping_cart_display_tax_gift_wrapping},useConfigurableParentThumbnail:e.configurable_thumbnail_source==="parent"}}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 P(),console.error(r),null;throw Error(r)},p=`
|
|
2
2
|
customizable_options {
|
|
3
3
|
type
|
|
4
4
|
customizable_option_uid
|
|
@@ -14,7 +14,7 @@ import{events as i}from"@dropins/tools/event-bus.js";import{FetchGraphQL as z}fr
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
`,
|
|
17
|
+
`,w=`
|
|
18
18
|
price_range {
|
|
19
19
|
minimum_price {
|
|
20
20
|
regular_price {
|
|
@@ -45,7 +45,7 @@ import{events as i}from"@dropins/tools/event-bus.js";import{FetchGraphQL as z}fr
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
|
-
`,
|
|
48
|
+
`,y=`
|
|
49
49
|
fragment CartFragment on Cart {
|
|
50
50
|
id
|
|
51
51
|
total_quantity
|
|
@@ -67,6 +67,10 @@ fragment CartFragment on Cart {
|
|
|
67
67
|
currency
|
|
68
68
|
value
|
|
69
69
|
}
|
|
70
|
+
grand_total_excluding_tax {
|
|
71
|
+
currency
|
|
72
|
+
value
|
|
73
|
+
}
|
|
70
74
|
applied_taxes {
|
|
71
75
|
label,
|
|
72
76
|
amount {
|
|
@@ -110,6 +114,21 @@ fragment CartFragment on Cart {
|
|
|
110
114
|
value
|
|
111
115
|
currency
|
|
112
116
|
}
|
|
117
|
+
row_total_including_tax {
|
|
118
|
+
value
|
|
119
|
+
currency
|
|
120
|
+
}
|
|
121
|
+
price_including_tax {
|
|
122
|
+
value
|
|
123
|
+
currency
|
|
124
|
+
}
|
|
125
|
+
fixed_product_taxes {
|
|
126
|
+
amount {
|
|
127
|
+
value
|
|
128
|
+
currency
|
|
129
|
+
}
|
|
130
|
+
label
|
|
131
|
+
}
|
|
113
132
|
original_row_total{
|
|
114
133
|
value
|
|
115
134
|
currency
|
|
@@ -129,7 +148,7 @@ fragment CartFragment on Cart {
|
|
|
129
148
|
url_path
|
|
130
149
|
url_key
|
|
131
150
|
}
|
|
132
|
-
${
|
|
151
|
+
${w}
|
|
133
152
|
}
|
|
134
153
|
...on SimpleCartItem {
|
|
135
154
|
${p}
|
|
@@ -147,7 +166,7 @@ fragment CartFragment on Cart {
|
|
|
147
166
|
label
|
|
148
167
|
url
|
|
149
168
|
}
|
|
150
|
-
${
|
|
169
|
+
${w}
|
|
151
170
|
}
|
|
152
171
|
${p}
|
|
153
172
|
}
|
|
@@ -192,14 +211,14 @@ fragment CartFragment on Cart {
|
|
|
192
211
|
postcode
|
|
193
212
|
}
|
|
194
213
|
}
|
|
195
|
-
`,
|
|
214
|
+
`,m=`
|
|
196
215
|
$pageSize: Int! = 100,
|
|
197
216
|
$currentPage: Int! = 1,
|
|
198
217
|
$itemsSortInput: QuoteItemsSortInput! = {field: CREATED_AT, order: DESC}
|
|
199
|
-
`,
|
|
218
|
+
`,J=`
|
|
200
219
|
query GUEST_CART_QUERY(
|
|
201
220
|
$cartId: String!,
|
|
202
|
-
${
|
|
221
|
+
${m}
|
|
203
222
|
) {
|
|
204
223
|
|
|
205
224
|
cart(cart_id: $cartId){
|
|
@@ -207,10 +226,10 @@ fragment CartFragment on Cart {
|
|
|
207
226
|
}
|
|
208
227
|
}
|
|
209
228
|
|
|
210
|
-
${
|
|
211
|
-
`,
|
|
229
|
+
${y}
|
|
230
|
+
`,K=`
|
|
212
231
|
query CUSTOMER_CART_QUERY(
|
|
213
|
-
${
|
|
232
|
+
${m}
|
|
214
233
|
) {
|
|
215
234
|
|
|
216
235
|
cart: customerCart {
|
|
@@ -218,12 +237,12 @@ fragment CartFragment on Cart {
|
|
|
218
237
|
}
|
|
219
238
|
}
|
|
220
239
|
|
|
221
|
-
${
|
|
222
|
-
`,
|
|
240
|
+
${y}
|
|
241
|
+
`,O=async()=>{const e=c.authenticated,t=c.cartId;if(e)return _(K,{method:"POST"}).then(({errors:n,data:r})=>n?d(n):g(r.cart));if(!t)throw new Error("No cart ID found");return _(J,{method:"POST",cache:"no-cache",variables:{cartId:t}}).then(({errors:n,data:r})=>n?d(n):g(r.cart))},W=`
|
|
223
242
|
mutation MERGE_CARTS_MUTATION(
|
|
224
243
|
$guestCartId: String!,
|
|
225
244
|
$customerCartId: String!,
|
|
226
|
-
${
|
|
245
|
+
${m}
|
|
227
246
|
) {
|
|
228
247
|
mergeCarts(
|
|
229
248
|
source_cart_id: $guestCartId,
|
|
@@ -233,8 +252,8 @@ fragment CartFragment on Cart {
|
|
|
233
252
|
}
|
|
234
253
|
}
|
|
235
254
|
|
|
236
|
-
${
|
|
237
|
-
`,o=async()=>{
|
|
255
|
+
${y}
|
|
256
|
+
`,o=async()=>{c.config=await te();const e=c.authenticated?await Z():await ee();return l.emit("cart/initialized",e),l.emit("cart/data",e),e};async function Z(){const e=c.cartId,t=await O();return t?(c.cartId=t.id,!e||t.id===e?t:await _(W,{variables:{guestCartId:e,customerCartId:t.id}}).then(({data:n})=>g(n.mergeCarts)).catch(()=>(console.error("Could not merge carts"),t))):null}async function ee(){if(F.getConfig().disableGuestCart===!0||!c.cartId)return null;try{return await O()}catch(e){return console.error(e),null}}const P=()=>(c.cartId=null,c.authenticated=!1,o()),re=`
|
|
238
257
|
query STORE_CONFIG_QUERY {
|
|
239
258
|
storeConfig {
|
|
240
259
|
minicart_display
|
|
@@ -245,9 +264,15 @@ query STORE_CONFIG_QUERY {
|
|
|
245
264
|
category_fixed_product_tax_display_setting
|
|
246
265
|
product_fixed_product_tax_display_setting
|
|
247
266
|
sales_fixed_product_tax_display_setting
|
|
267
|
+
shopping_cart_display_full_summary
|
|
268
|
+
shopping_cart_display_grand_total
|
|
269
|
+
shopping_cart_display_price
|
|
270
|
+
shopping_cart_display_shipping
|
|
271
|
+
shopping_cart_display_subtotal
|
|
272
|
+
shopping_cart_display_tax_gift_wrapping
|
|
248
273
|
shopping_cart_display_zero_tax
|
|
249
274
|
configurable_thumbnail_source
|
|
250
275
|
}
|
|
251
276
|
}
|
|
252
|
-
`,
|
|
277
|
+
`,te=async()=>_(re,{method:"GET",cache:"force-cache"}).then(({errors:e,data:t})=>e?d(e):H(t.storeConfig));export{m as C,y as a,ie as b,F as c,le as d,oe as e,_ as f,_e as g,d as h,G as i,O as j,o as k,P as l,te as m,ue as n,se as r,c as s,g as t};
|
|
253
278
|
//# sourceMappingURL=getStoreConfig.js.map
|
|
@@ -1 +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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"}
|
|
1
|
+
{"version":3,"file":"getStoreConfig.js","sources":["../../src/lib/cookies.ts","../../src/lib/state.ts","../../src/lib/persisted-data.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 { getCookie } from '@/cart/lib/cookies';\nimport { StoreConfigModel } from '@/cart/data/models/store-models';\n\ntype State = {\n cartId: string | null;\n authenticated: boolean;\n locale?: string;\n config?: StoreConfigModel | null;\n};\n\nconst _state: State = (() => ({\n cartId: null,\n authenticated: false,\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 { 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 { 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 // Initialize cart\n initializeCart();\n },\n\n listeners: () => [\n events.on('authenticated', async (authenticated) => {\n if (authenticated !== state.authenticated) {\n state.authenticated = authenticated;\n initializeCart().catch(console.error);\n }\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 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 includingTax: {\n value: data.prices.grand_total.value,\n currency: data.prices.grand_total.currency,\n },\n excludingTax: {\n value: data.prices.grand_total_excluding_tax.value,\n currency: data.prices.grand_total_excluding_tax.currency,\n },\n },\n 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 };\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 taxedPrice: {\n value: item.prices.price_including_tax.value,\n currency: item.prices.price_including_tax.currency,\n },\n rowTotal: {\n value: item.prices.row_total.value,\n currency: item.prices.row_total.currency,\n },\n rowTotalIncludingTax: {\n value: item.prices.row_total_including_tax.value,\n currency: item.prices.row_total_including_tax.currency,\n },\n links: transformLinks(item.links),\n\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 const transformTaxDisplaySetting = (taxDisplaySetting: number) => {\n switch (taxDisplaySetting) {\n case 1:\n return 'EXCLUDING_TAX';\n case 2:\n return 'INCLUDING_TAX';\n case 3:\n return 'INCLUDING_EXCLUDING_TAX';\n default:\n return 'EXCLUDING_TAX';\n }\n };\n\n 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 shoppingCartDisplaySetting: {\n zeroTax: data.shopping_cart_display_zero_tax,\n subtotal: transformTaxDisplaySetting(data.shopping_cart_display_subtotal),\n price: transformTaxDisplaySetting(data.shopping_cart_display_price),\n shipping: transformTaxDisplaySetting(data.shopping_cart_display_shipping),\n fullSummary: data.shopping_cart_display_full_summary,\n grandTotal: data.shopping_cart_display_grand_total,\n taxGiftWrapping: data.shopping_cart_display_tax_gift_wrapping,\n },\n useConfigurableParentThumbnail:\n data.configurable_thumbnail_source === 'parent',\n };\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 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 }\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 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_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, { method: 'POST' }).then(\n ({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n return transformCart(data.cart);\n }\n );\n }\n\n // Guest Cart\n if (!cartId) throw new Error('No cart ID found');\n\n return fetchGraphQl(GUEST_CART_QUERY, {\n method: 'POST',\n cache: 'no-cache',\n variables: { cartId },\n }).then(({ errors, data }) => {\n if (errors) return handleFetchError(errors);\n\n return transformCart(data.cart);\n });\n};\n","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 return transformCart(data.mergeCarts);\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_full_summary\n shopping_cart_display_grand_total\n shopping_cart_display_price\n shopping_cart_display_shipping\n shopping_cart_display_subtotal\n shopping_cart_display_tax_gift_wrapping\n shopping_cart_display_zero_tax\n configurable_thumbnail_source\n }\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","_state","cartId","authenticated","state","Proxy","set","target","key","value","expiresInDays","config","cartExpiresInDays","console","warn","expires","Date","setDate","getDate","toUTCString","get","setPersistedData","data","sessionStorage","setItem","JSON","stringify","removeItem","getPersistedData","getItem","parse","initialize","Initializer","init","_config","disableGuestCart","setConfig","initializeCart","listeners","events","on","catch","error","locale","resetCart","payload","setEndpoint","setFetchGraphQlHeader","removeFetchGraphQlHeader","setFetchGraphQlHeaders","fetchGraphQl","getConfig","FetchGraphQL","getMethods","transformCart","id","totalQuantity","transformQuantity","errors","transformErrors","itemsV2","items","transformItems","miniCartMaxItems","slice","miniCartMaxItemsDisplay","total","includingTax","prices","grand_total","currency","excludingTax","grand_total_excluding_tax","subtotal","subtotal_excluding_tax","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","taxedPrice","price_including_tax","rowTotal","row_total","rowTotalIncludingTax","row_total_including_tax","links","transformLinks","customizable_options","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","transformTaxDisplaySetting","taxDisplaySetting","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","shoppingCartDisplaySetting","zeroTax","shopping_cart_display_zero_tax","shopping_cart_display_subtotal","shopping_cart_display_price","shopping_cart_display_shipping","fullSummary","shopping_cart_display_full_summary","grandTotal","shopping_cart_display_grand_total","taxGiftWrapping","shopping_cart_display_tax_gift_wrapping","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","then","cart","cache","variables","MERGE_CARTS_MUTATION","getStoreConfig","getCustomerCartPayload","getGuestCartPayload","emit","existingCartId","guestCartId","customerCartId","mergeCarts","STORE_CONFIG_QUERY","storeConfig"],"mappings":"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"}
|
package/containers/Cart.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useState as o,useCallback as W,useEffect as w}from"@dropins/tools/preact-compat.js";import{events as X}from"@dropins/tools/event-bus.js";import{Divider as Y,PriceSummary as A,Price as h,Picker as q,Input as G,Button as H,CartList as ee,CartItem as te,Image as J}from"@dropins/tools/components.js";import{E as ae}from"../chunks/MiniCart.js";import{classes as S,VComponent as U}from"@dropins/tools/lib.js";import{jsx as a,jsxs as $,Fragment as K}from"@dropins/tools/preact-jsx-runtime.js";import{s as re,n as ne}from"../chunks/getStoreConfig.js";import{b as ie,u as se}from"../chunks/updateProductsFromCart.js";import{g as ce,a as oe,b as le}from"../chunks/getEstimateShipping.js";import{useText as de}from"@dropins/tools/i18n.js";import"@dropins/tools/fetch-graphql.js";const ue=({className:b,children:m,emptyCart:l,heading:d,products:u,priceSummary:p,...t})=>a("div",{...t,className:S(["cart-cart",b]),children:$("div",{className:S(["cart-cart__wrapper"]),children:[d&&$("div",{className:S(["cart-cart__heading",["cart-cart__heading--full-width",!u||!p]]),children:[a(U,{node:d,className:"cart-cart__heading-text"}),a(Y,{variant:"primary",className:S(["cart-cart__heading-divider"])})]}),a("div",{className:S(["cart-cart__content",["cart-cart__content--empty",!u],["cart-cart__content--full-width",!p]]),children:u||a(U,{node:l,className:"cart-cart__empty-cart"})}),u&&p&&a(U,{node:p,className:S(["cart-cart__price-summary"])})]})}),pe=()=>{const[b,m]=o([]),[l,d]=o("US"),[u,p]=o(""),[t,_]=o(""),[D,E]=o([]),[z,f]=o(!1),[B,P]=o(),[R,k]=o(""),[N,F]=o(!1),y=W(i=>{const{shippingCountry:n,shippingState:c="",shippingZip:r=""}=i,Z={countryCode:n,postcode:r,region:{code:c}};F(!0),ce(Z).then(C=>{C&&(P({amount:C.amount.value,currency:C.amount.currency}),d(n),p(c),_(r),k(c||r||n))}).finally(()=>{F(!1)})},[]),O=i=>{i.preventDefault(),p(""),_("");const n=i.target.value;d(n)};return w(()=>{oe().then(i=>{let n="US";const c=i.map(r=>(r.isDefaultCountry&&(n=r.id),{text:r.label,value:r.id}));m(c),d(n)})},[]),w(()=>{f(!0),le(l).then(i=>{const n=i.map(c=>({text:c.name,value:c.code}));E(n)}).finally(()=>{f(!1)})},[l,f]),{loading:N,regionsLoading:z,estimatedDestinationText:R,countries:b,selectedCountry:l,selectedRegion:u,selectedZip:t,regions:D,estimatedShippingPrice:B,handleEstimateShipping:y,handleCountrySelected:O}},me=({children:b,initialData:m=null,routeProduct:l,routeEmptyCartCTA:d,routeCheckout:u,...p})=>{var C,j,Q,V;const[t,_]=o(m),[D,E]=o(new Set),{loading:z,regionsLoading:f,countries:B,regions:P,selectedCountry:R,selectedRegion:k,selectedZip:N,estimatedDestinationText:F,estimatedShippingPrice:y,handleCountrySelected:O,handleEstimateShipping:i}=pe(),n=(e,s)=>{E(g=>(e?g.add(s):g.delete(s),new Set(g)))},c=(e,s)=>{n(!0,e),se([{uid:e,quantity:s}]).finally(()=>{n(!1,e)})},r=de({applyButton:"Cart.PriceSummary.estimatedShippingForm.apply.label",checkout:"Cart.PriceSummary.checkout",countryField:"Cart.PriceSummary.estimatedShippingForm.country.placeholder",discountedPrice:"Cart.CartItem.discountedPrice",download:"Cart.CartItem.download",freeShipping:"Cart.PriceSummary.freeShipping",heading:"Cart.Cart.heading",message:"Cart.CartItem.message",regularPrice:"Cart.CartItem.regularPrice",recipient:"Cart.CartItem.recipient",sender:"Cart.CartItem.sender",stateField:"Cart.PriceSummary.estimatedShippingForm.state.placeholder",taxToBeDetermined:"Cart.PriceSummary.taxToBeDetermined",zipField:"Cart.PriceSummary.estimatedShippingForm.zip.placeholder",file:"Cart.CartItem.file",files:"Cart.CartItem.files"});w(()=>{const e=X.on("cart/data",s=>{var v,x;_(s);const g=(x=(v=s==null?void 0:s.addresses)==null?void 0:v.shipping)==null?void 0:x[0];if(g){const{countryCode:I,regionCode:L,zipCode:T}=g;i({shippingCountry:I,shippingState:L,shippingZip:T})}},{eager:!0});return()=>{e==null||e.off()}},[i]),w(()=>{m&&Object.keys(m).length>0&&ie(m,re.locale||"en-US")},[m]);const Z=(t==null?void 0:t.totalQuantity)??0?a(A,{"data-testid":"price-summary",loading:z,heading:"Order Summary",total:{price:a(h,{amount:t==null?void 0:t.total.value,currency:t==null?void 0:t.total.currency}),estimated:!0},subTotal:{price:a(h,{"data-testid":"subtotal",amount:(C=t==null?void 0:t.subtotal.excludingTax)==null?void 0:C.value,currency:(j=t==null?void 0:t.subtotal.excludingTax)==null?void 0:j.currency})},shipping:t!=null&&t.isVirtual?void 0:{price:(y==null?void 0:y.amount)==0?a("span",{"data-testId":"free-shipping",children:r.freeShipping}):y?a(h,{...y}):a("span",{children:r.taxToBeDetermined}),estimated:!0,countryField:a(q,{name:"shippingCountry",placeholder:r.countryField,value:R,variant:"primary",options:B,handleSelect:O,"data-testid":"estimate-shipping-country-selector"}),stateField:P.length>0?a(q,{name:"shippingState",placeholder:r.stateField,variant:"primary",options:P,value:k,"data-testid":"estimate-shipping-state-selector",disabled:f}):a(G,{"aria-label":r.stateField,name:"shippingState",placeholder:r.stateField,variant:"primary",value:k,disabled:f,"data-testid":"estimate-shipping-state-input",maxLength:50}),zipField:a(G,{"aria-label":r.zipField,name:"shippingZip",placeholder:r.zipField,variant:"primary","data-testid":"estimate-shipping-zip-input",value:N,maxLength:12}),estimateButton:a(H,{variant:"secondary","data-testid":"estimate-shipping-apply-button","aria-label":r.applyButton,children:r.applyButton}),destinationText:F||r.taxToBeDetermined,onEstimate:i},taxTotal:{price:t!=null&&t.totalTax?a(h,{"data-testid":"tax-total",amount:(Q=t==null?void 0:t.totalTax)==null?void 0:Q.value,currency:(V=t==null?void 0:t.totalTax)==null?void 0:V.currency}):a("span",{"data-testid":"tax-total",children:r.taxToBeDetermined}),estimated:!0},primaryAction:u?a(H,{"data-testid":"checkout-button",variant:"primary",href:u({cartId:t.id}),children:r.checkout}):void 0,discounts:t==null?void 0:t.appliedDiscounts.map(e=>({label:e.label,price:a(h,{"data-testid":"summary-discount-total",amount:-e.amount.value,currency:e.amount.currency,sale:!0})}))}):void 0;return a(ue,{...p,heading:a("div",{children:r.heading}),emptyCart:a(ae,{ctaLinkURL:d==null?void 0:d()}),priceSummary:Z,products:(t==null?void 0:t.totalQuantity)??0?a(ee,{children:t==null?void 0:t.items.map((e,s)=>{var x,I,L,T;const g=D.has(e.uid),v={...e.bundleOptions??{},...e.selectedOptions??{},...e.customizableOptions,...e.recipient?{[r.recipient]:e.recipient}:{},...e.recipientEmail&&e.recipient?{[r.recipient]:`${e.recipient} (${e.recipientEmail})`}:{},...e.sender?{[r.sender]:e.sender}:{},...e.senderEmail&&e.sender?{[r.sender]:`${e.sender} (${e.senderEmail})`}:{},...e.message?{[r.message]:e.message}:{},...e.links&&e.links.count?e.links.count>1?{[r.files.replace("{count}",e.links.count.toString())]:e.links.result}:{[r.file.replace("{count}",e.links.count.toString())]:e.links.result}:{}};return a(te,{"data-testid":"cart-item",ariaLabel:e.name,updating:g,image:l?a("a",{href:l(e),children:a(J,{loading:s<4?"eager":"lazy",src:e.image.src,alt:e.image.alt,width:"300",height:"300",params:{width:300}})}):a(J,{loading:s<4?"eager":"lazy",src:e.image.src,alt:e.image.alt,width:"300",height:"300",params:{width:300}}),title:a("span",{children:l?a("a",{href:l(e),children:e.name}):a(K,{children:e.name})}),sku:a("span",{children:e.sku}),configurations:Object.keys(v).length>0?v:void 0,quantity:e.quantity,price:a(h,{amount:(x=e.regularPrice)==null?void 0:x.value,currency:(I=e.regularPrice)==null?void 0:I.currency,style:{font:"inherit"}}),total:$(K,{children:[a(h,{amount:e.total.value,currency:e.total.currency,variant:e.discounted?"strikethrough":"default","data-testid":"regular-total","aria-label":r.regularPrice}),e.discounted&&a(h,{amount:(L=e.discountedTotal)==null?void 0:L.value,currency:(T=e.discountedTotal)==null?void 0:T.currency,sale:e.discounted,"data-testid":"discount-total","aria-label":r.discountedPrice})]}),onQuantity:M=>{c(e.uid,M)},onRemove:()=>{c(e.uid,0)}},e.uid)})}):void 0})};me.getInitialData=async function(){return ne()};export{me as Cart,me as default};
|
|
1
|
+
import{useState as y,useEffect as ee,useCallback as ve}from"@dropins/tools/preact-compat.js";import{events as Ie}from"@dropins/tools/event-bus.js";import{Divider as be,PriceSummary as _e,Price as c,Picker as ge,Input as me,Button as ye,CartList as Se,CartItem as Te,Image as he}from"@dropins/tools/components.js";import{E as Ne}from"../chunks/MiniCart.js";import{classes as z,VComponent as ne}from"@dropins/tools/lib.js";import{jsx as r,jsxs as te,Fragment as M}from"@dropins/tools/preact-jsx-runtime.js";import{s as re,m as De,n as Ee}from"../chunks/getStoreConfig.js";import{b as Le,u as Pe}from"../chunks/updateProductsFromCart.js";import{c as Ce,a as we,b as Ue,g as Ge}from"../chunks/getEstimatedTotals.js";import{useText as fe}from"@dropins/tools/i18n.js";import"@dropins/tools/fetch-graphql.js";const ke=({className:f,children:I,emptyCart:x,heading:h,products:o,priceSummary:v,...n})=>r("div",{...n,className:z(["cart-cart",f]),children:te("div",{className:z(["cart-cart__wrapper"]),children:[h&&te("div",{className:z(["cart-cart__heading",["cart-cart__heading--full-width",!o||!v]]),children:[r(ne,{node:h,className:"cart-cart__heading-text"}),r(be,{variant:"primary",className:z(["cart-cart__heading-divider"])})]}),r("div",{className:z(["cart-cart__content",["cart-cart__content--empty",!o],["cart-cart__content--full-width",!v]]),children:o||r(ne,{node:x,className:"cart-cart__empty-cart"})}),o&&v&&r(ne,{node:v,className:z(["cart-cart__price-summary"])})]})}),Xe=()=>{const[f,I]=y();return{handleEstimateTotals:(h,o)=>{const{shippingCountry:v,shippingState:n="",shippingZip:k=""}=h,B={countryCode:v,postcode:k,region:{region:n},shipping_method:{carrier_code:(o==null?void 0:o.carrier_code)||"",method_code:(o==null?void 0:o.method_code)||""}};Ce(B).then(l=>{var X,S,E,L,P,s,F,C,w,_,U,T,a,d,m,p,i,t,H,O;l&&I({estimatedTaxTotal:{amount:(X=l.totalTax)==null?void 0:X.value,currency:(S=l.totalTax)==null?void 0:S.currency},estimatedSubTotal:{excludingTax:{amount:(L=(E=l.subtotal)==null?void 0:E.excludingTax)==null?void 0:L.value,currency:(s=(P=l.subtotal)==null?void 0:P.excludingTax)==null?void 0:s.currency},includingTax:{amount:(C=(F=l.subtotal)==null?void 0:F.includingTax)==null?void 0:C.value,currency:(_=(w=l.subtotal)==null?void 0:w.includingTax)==null?void 0:_.currency},includingDiscountOnly:{amount:(T=(U=l.subtotal)==null?void 0:U.includingDiscountOnly)==null?void 0:T.value,currency:(d=(a=l.subtotal)==null?void 0:a.includingDiscountOnly)==null?void 0:d.currency}},estimatedGrandTotalPrice:{includingTax:{amount:(m=l.total)==null?void 0:m.includingTax.value,currency:(p=l.total)==null?void 0:p.includingTax.currency},excludingTax:{amount:(i=l.total)==null?void 0:i.excludingTax.value,currency:(t=l.total)==null?void 0:t.excludingTax.currency}},estimatedAppliedTaxes:{taxes:(H=l.appliedTaxes)==null?void 0:H.map(u=>{var N,D;return{label:u.label,amount:{value:(N=u.amount)==null?void 0:N.value,currency:(D=u.amount)==null?void 0:D.currency}}})},estimatedItems:{items:(O=l.items)==null?void 0:O.map(u=>{var N,D,R,Z,$,j,Q,V,q,W;return{uid:u.uid,price:{amount:(N=u.price)==null?void 0:N.value,currency:(D=u.price)==null?void 0:D.currency},taxedPrice:{amount:(R=u.taxedPrice)==null?void 0:R.value,currency:(Z=u.taxedPrice)==null?void 0:Z.currency},rowTotal:{amount:($=u.rowTotal)==null?void 0:$.value,currency:(j=u.rowTotal)==null?void 0:j.currency},rowTotalIncludingTax:{amount:(Q=u.rowTotalIncludingTax)==null?void 0:Q.value,currency:(V=u.rowTotalIncludingTax)==null?void 0:V.currency},regularPrice:{amount:(q=u.regularPrice)==null?void 0:q.value,currency:(W=u.regularPrice)==null?void 0:W.currency}}})}})})},estimatedTotals:f}},Fe=()=>{const[f,I]=y([]),[x,h]=y("US"),[o,v]=y(""),[n,k]=y(""),[B,l]=y([]),[X,S]=y(!1),[E,L]=y(),[P,s]=y(),[F,C]=y(""),[w,_]=y(!1),U=async a=>{const{shippingCountry:d,shippingState:m="",shippingZip:p=""}=a,i={countryCode:d,postcode:p,region:{region:m}};return _(!0),Ge(i).then(t=>(t&&(L({amount:t.amount.value,currency:t.amount.currency,priceIncludingtax:{amount:t.price_incl_tax.value,currency:t.price_incl_tax.currency},priceExcludingtax:{amount:t.price_excl_tax.value,currency:t.price_excl_tax.currency}}),s({carrier_code:t.carrier_code,method_code:t.method_code}),h(d),v(m),k(p),C(m||p||d)),t)).finally(()=>{_(!1)})},T=a=>{a.preventDefault(),v(""),k("");const d=a.target.value;h(d)};return ee(()=>{we().then(a=>{let d="US";const m=a.map(p=>(p.isDefaultCountry&&(d=p.id),{text:p.label,value:p.id}));I(m),h(d)})},[]),ee(()=>{S(!0),Ue(x).then(a=>{const d=a.map(m=>({text:m.name,value:m.code}));l(d)}).finally(()=>{S(!1)})},[x,S]),{loading:w,regionsLoading:X,estimatedDestinationText:F,countries:f,selectedCountry:x,selectedRegion:o,selectedZip:n,regions:B,estimatedShippingPrice:E,estimatedShippingMethod:P,handleEstimateShipping:U,handleCountrySelected:T}},Ae=({children:f,initialData:I=null,routeProduct:x,routeEmptyCartCTA:h,routeCheckout:o,...v})=>{var O,u,N,D,R,Z,$,j,Q,V,q,W,ae,ie,ce;const[n,k]=y(I),[B,l]=y(new Set),{loading:X,countries:S,regions:E,selectedCountry:L,estimatedDestinationText:P,estimatedShippingPrice:s,handleCountrySelected:F,handleEstimateShipping:C,regionsLoading:w,selectedRegion:_,selectedZip:U}=Fe(),{handleEstimateTotals:T,estimatedTotals:a}=Xe(),d=(e,g)=>{l(b=>(e?b.add(g):b.delete(g),new Set(b)))},m=(e,g)=>{d(!0,e),Pe([{uid:e,quantity:g}]).finally(()=>{d(!1,e),P&&p({shippingCountry:L,shippingState:_,shippingZip:U})})},p=ve(e=>{C(e).then(g=>{if(g){const{carrier_code:b,method_code:G}=g;T(e,{carrier_code:b,method_code:G})}else T(e)})},[C,T]),i=fe({applyButton:"Cart.PriceSummary.estimatedShippingForm.apply.label",checkout:"Cart.PriceSummary.checkout",countryField:"Cart.PriceSummary.estimatedShippingForm.country.placeholder",discountedPrice:"Cart.CartItem.discountedPrice",download:"Cart.CartItem.download",freeShipping:"Cart.PriceSummary.freeShipping",heading:"Cart.Cart.heading",message:"Cart.CartItem.message",regularPrice:"Cart.CartItem.regularPrice",recipient:"Cart.CartItem.recipient",sender:"Cart.CartItem.sender",stateField:"Cart.PriceSummary.estimatedShippingForm.state.placeholder",taxToBeDetermined:"Cart.PriceSummary.taxToBeDetermined",zipField:"Cart.PriceSummary.estimatedShippingForm.zip.placeholder",file:"Cart.CartItem.file",files:"Cart.CartItem.files"});ee(()=>{const e=Ie.on("cart/data",g=>{var G,A;k(g);const b=(A=(G=g==null?void 0:g.addresses)==null?void 0:G.shipping)==null?void 0:A[0];if(b){const{countryCode:J,regionCode:K,zipCode:Y}=b;p({shippingCountry:J,shippingState:K,shippingZip:Y})}},{eager:!0});return()=>{e==null||e.off()}},[]),ee(()=>{I&&Object.keys(I).length>0&&Le(I,re.locale||"en-US")},[I]),De().then(e=>{re.config=e});const t=(O=re.config)==null?void 0:O.shoppingCartDisplaySetting,H=(n==null?void 0:n.totalQuantity)??0?r(_e,{"data-testid":"price-summary",loading:X,heading:"Order Summary",total:{price:a!=null&&a.estimatedGrandTotalPrice?r(c,{...a==null?void 0:a.estimatedGrandTotalPrice.includingTax}):r(c,{amount:n==null?void 0:n.total.includingTax.value,currency:n==null?void 0:n.total.includingTax.currency}),estimated:!0,priceWithoutTax:t!=null&&t.grandTotal?a!=null&&a.estimatedAppliedTaxes?r(c,{...a==null?void 0:a.estimatedGrandTotalPrice.excludingTax}):r(c,{amount:n==null?void 0:n.total.excludingTax.value,currency:n==null?void 0:n.total.excludingTax.currency}):void 0},subTotal:{taxIncluded:(t==null?void 0:t.subtotal)==="INCLUDING_TAX"&&!(t!=null&&t.zeroTax),taxExcluded:(t==null?void 0:t.subtotal)==="INCLUDING_EXCLUDING_TAX",zeroTaxSubtotal:t==null?void 0:t.zeroTax,priceExcludingTax:(u=a==null?void 0:a.estimatedSubTotal)!=null&&u.excludingTax?r(c,{"data-testid":"subtotal",...(N=a==null?void 0:a.estimatedSubTotal)==null?void 0:N.excludingTax}):r(c,{"data-testid":"subtotal",amount:(D=n==null?void 0:n.subtotal.excludingTax)==null?void 0:D.value,currency:(R=n==null?void 0:n.subtotal.excludingTax)==null?void 0:R.currency}),price:!(t!=null&&t.zeroTax)&&(t==null?void 0:t.subtotal)==="INCLUDING_TAX"||!(t!=null&&t.zeroTax)&&(t==null?void 0:t.subtotal)==="INCLUDING_EXCLUDING_TAX"?(Z=a==null?void 0:a.estimatedSubTotal)!=null&&Z.includingTax?r(c,{"data-testid":"subtotal",...($=a==null?void 0:a.estimatedSubTotal)==null?void 0:$.includingTax}):r(c,{"data-testid":"subtotal",amount:(j=n==null?void 0:n.subtotal.includingTax)==null?void 0:j.value,currency:(Q=n==null?void 0:n.subtotal.includingTax)==null?void 0:Q.currency}):r(c,{"data-testid":"subtotal",amount:(V=n==null?void 0:n.subtotal.excludingTax)==null?void 0:V.value,currency:(q=n==null?void 0:n.subtotal.excludingTax)==null?void 0:q.currency})},shipping:n!=null&&n.isVirtual?void 0:{taxIncluded:(t==null?void 0:t.shipping)==="INCLUDING_TAX",taxExcluded:(t==null?void 0:t.shipping)==="INCLUDING_EXCLUDING_TAX",price:(s==null?void 0:s.amount)==0?r("span",{"data-testId":"free-shipping",children:i.freeShipping}):(t==null?void 0:t.shipping)==="INCLUDING_TAX"&&s?r(c,{"data-testid":"shipping",...s.priceIncludingtax}):s?r(c,{...s}):r("span",{children:i.taxToBeDetermined}),estimated:!0,priceExcludingTax:s!=null&&s.priceExcludingtax?r(c,{"data-testid":"shipping-excluding-tax",...s.priceExcludingtax}):r("span",{children:i.taxToBeDetermined}),countryField:r(ge,{name:"shippingCountry",placeholder:i.countryField,value:L,variant:"primary",options:S,handleSelect:F,"data-testid":"estimate-shipping-country-selector"}),stateField:E.length>0?r(ge,{name:"shippingState",placeholder:i.stateField,variant:"primary",options:E,value:_,"data-testid":"estimate-shipping-state-selector",disabled:w}):r(me,{"aria-label":i.stateField,name:"shippingState",placeholder:i.stateField,variant:"primary",value:_,disabled:w,"data-testid":"estimate-shipping-state-input",maxLength:50}),zipField:r(me,{"aria-label":i.zipField,name:"shippingZip",placeholder:i.zipField,variant:"primary","data-testid":"estimate-shipping-zip-input",value:U,maxLength:12}),estimateButton:r(ye,{variant:"secondary","data-testid":"estimate-shipping-apply-button","aria-label":i.applyButton,children:i.applyButton}),destinationText:P||i.taxToBeDetermined,onEstimate:p},taxTotal:n!=null&&n.isVirtual?{price:r("span",{"data-testid":"tax-total",children:i.taxToBeDetermined})}:{price:a!=null&&a.estimatedTaxTotal?r(c,{"data-testid":"tax-total",...a==null?void 0:a.estimatedTaxTotal}):n!=null&&n.totalTax?r(c,{"data-testid":"tax-total",amount:(W=n==null?void 0:n.totalTax)==null?void 0:W.value,currency:(ae=n==null?void 0:n.totalTax)==null?void 0:ae.currency}):r("span",{"data-testid":"tax-total",children:i.taxToBeDetermined}),estimated:!0},taxesApplied:n!=null&&n.isVirtual?void 0:t!=null&&t.fullSummary&&(a!=null&&a.estimatedAppliedTaxes)?(ce=(ie=a==null?void 0:a.estimatedAppliedTaxes)==null?void 0:ie.taxes)==null?void 0:ce.map(e=>({label:e.label,price:r(c,{"data-testid":"applied-taxes",amount:e.amount.value,currency:e.amount.currency})})):t!=null&&t.fullSummary?n==null?void 0:n.appliedTaxes.map(e=>({label:e.label,price:r(c,{"data-testid":"applied-taxes",amount:e.amount.value,currency:e.amount.currency})})):void 0,primaryAction:o?r(ye,{"data-testid":"checkout-button",variant:"primary",href:o({cartId:n.id}),children:i.checkout}):void 0,discounts:n==null?void 0:n.appliedDiscounts.map(e=>({label:e.label,price:r(c,{"data-testid":"summary-discount-total",amount:-e.amount.value,currency:e.amount.currency,sale:!0})}))}):void 0;return r(ke,{...v,heading:r("div",{children:i.heading}),emptyCart:r(Ne,{ctaLinkURL:h==null?void 0:h()}),priceSummary:H,products:(n==null?void 0:n.totalQuantity)??0?r(Se,{children:n==null?void 0:n.items.map((e,g)=>{var A,J,K,Y,le,ue,oe,se,de,pe;const b=B.has(e.uid),G={...e.bundleOptions??{},...e.selectedOptions??{},...e.customizableOptions,...e.recipient?{[i.recipient]:e.recipient}:{},...e.recipientEmail&&e.recipient?{[i.recipient]:`${e.recipient} (${e.recipientEmail})`}:{},...e.sender?{[i.sender]:e.sender}:{},...e.senderEmail&&e.sender?{[i.sender]:`${e.sender} (${e.senderEmail})`}:{},...e.message?{[i.message]:e.message}:{},...e.links&&e.links.count?e.links.count>1?{[i.files.replace("{count}",e.links.count.toString())]:e.links.result}:{[i.file.replace("{count}",e.links.count.toString())]:e.links.result}:{}};return r(Te,{ariaLabel:e.name,updating:b,"data-testid":"cart-item",taxIncluded:(t==null?void 0:t.price)==="INCLUDING_TAX",taxExcluded:(t==null?void 0:t.price)==="INCLUDING_EXCLUDING_TAX",image:x?r("a",{href:x(e),children:r(he,{loading:g<4?"eager":"lazy",src:e.image.src,alt:e.image.alt,width:"300",height:"300",params:{width:300}})}):r(he,{loading:g<4?"eager":"lazy",src:e.image.src,alt:e.image.alt,width:"300",height:"300",params:{width:300}}),title:r("span",{children:x?r("a",{href:x(e),children:e.name}):r(M,{children:e.name})}),sku:r("span",{children:e.sku}),configurations:Object.keys(G).length>0?G:void 0,quantity:e.quantity,price:(t==null?void 0:t.price)==="INCLUDING_TAX"?r(c,{amount:e.discounted?(A=e.regularPrice)==null?void 0:A.value:(J=e.taxedPrice)==null?void 0:J.value,currency:e.discounted?(K=e.regularPrice)==null?void 0:K.currency:(Y=e.taxedPrice)==null?void 0:Y.currency,style:{font:"inherit"},"data-testid":"including-tax-item-price"}):r(c,{amount:(le=e.regularPrice)==null?void 0:le.value,currency:(ue=e.regularPrice)==null?void 0:ue.currency,style:{font:"inherit"},"data-testid":"regular-item-price"}),total:(t==null?void 0:t.price)==="INCLUDING_EXCLUDING_TAX"||(t==null?void 0:t.price)==="INCLUDING_TAX"?r(M,{children:e.discounted?te(M,{children:[r(c,{amount:e.total.value,currency:e.total.currency,variant:e.discounted?"strikethrough":"default","data-testid":"including-tax-row-total","aria-label":i.regularPrice}),r(c,{amount:(oe=e.rowTotalIncludingTax)==null?void 0:oe.value,currency:(se=e.rowTotalIncludingTax)==null?void 0:se.currency,sale:e.discounted,"data-testid":"discount-total","aria-label":i.discountedPrice})]}):r(c,{amount:e.rowTotalIncludingTax.value,currency:e.rowTotalIncludingTax.currency,"data-testid":"including-tax-row-total","aria-label":i.regularPrice})}):te(M,{children:[r(c,{amount:e.total.value,currency:e.total.currency,variant:e.discounted?"strikethrough":"default","data-testid":"regular-total","aria-label":i.regularPrice}),e.discounted&&r(c,{amount:(de=e.discountedTotal)==null?void 0:de.value,currency:(pe=e.discountedTotal)==null?void 0:pe.currency,sale:e.discounted,"data-testid":"discount-total","aria-label":i.discountedPrice})]}),totalExcludingTax:(t==null?void 0:t.price)==="INCLUDING_EXCLUDING_TAX"?r(c,{amount:e.rowTotal.value,currency:e.rowTotal.currency,"data-testid":"excluding-tax-total","aria-label":i.regularPrice}):void 0,onQuantity:xe=>{m(e.uid,xe)},onRemove:()=>{m(e.uid,0)}},e.uid)})}):void 0})};Ae.getInitialData=async function(){return Ee()};export{Ae as Cart,Ae as default};
|
|
2
2
|
//# sourceMappingURL=Cart.js.map
|
package/containers/Cart.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Cart.js","sources":["../../src/components/Cart/Cart.tsx","../../src/hooks/useEstimatedShipping.ts","../../src/containers/Cart/Cart.tsx"],"sourcesContent":["import { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { VComponent, classes } from '@adobe/elsie/lib';\nimport { Divider } from '@adobe/elsie/components';\n\nimport '@/cart/components/Cart/Cart.css';\n\nexport interface CartProps extends HTMLAttributes<HTMLDivElement> {\n emptyCart: VNode;\n heading?: VNode;\n products?: VNode;\n priceSummary?: VNode<HTMLAttributes<HTMLElement>>;\n}\n\nexport const Cart: FunctionComponent<CartProps> = ({\n className,\n children,\n emptyCart,\n heading,\n products,\n priceSummary,\n ...props\n}) => {\n return (\n <div {...props} className={classes(['cart-cart', className])}>\n <div className={classes(['cart-cart__wrapper'])}>\n {/* Heading */}\n {heading && (\n <div\n className={classes([\n 'cart-cart__heading',\n ['cart-cart__heading--full-width', !products || !priceSummary],\n ])}\n >\n <VComponent node={heading} className=\"cart-cart__heading-text\" />\n\n <Divider\n variant=\"primary\"\n className={classes(['cart-cart__heading-divider'])}\n />\n </div>\n )}\n\n {/* Content */}\n <div\n className={classes([\n 'cart-cart__content',\n ['cart-cart__content--empty', !products],\n ['cart-cart__content--full-width', !priceSummary],\n ])}\n >\n {products || (\n <VComponent node={emptyCart} className=\"cart-cart__empty-cart\" />\n )}\n </div>\n {products && priceSummary && (\n <VComponent\n node={priceSummary}\n className={classes(['cart-cart__price-summary'])}\n />\n )}\n </div>\n </div>\n );\n};\n","import { useCallback, useEffect, useState } from 'preact/compat';\n\nimport {\n EstimateAddressInput,\n getCountries,\n getEstimateShipping,\n getRegions,\n} from '@/cart/api';\nimport { PriceProps } from '@adobe/elsie/components';\n\nexport const useEstimatedShipping = () => {\n /* State data related to estimating costs in the Price Summary component */\n const [countries, setCountries] = useState<{ text: string; value: string }[]>(\n []\n );\n const [selectedCountry, setSelectedCountry] = useState<string>('US');\n const [selectedRegion, setSelectedRegion] = useState<string>('');\n const [selectedZip, setSelectedZip] = useState<string>('');\n const [regions, setRegions] = useState<{ text: string; value: string }[]>([]);\n const [regionsLoading, setRegionsLoading] = useState<boolean>(false);\n const [estimatedShippingPrice, setEstimatedShippingPrice] =\n useState<PriceProps | null>();\n const [estimatedDestinationText, setEstimatedDestinationText] =\n useState<string>('');\n const [priceSummaryLoading, setPriceSummaryLoading] =\n useState<boolean>(false);\n\n const handleEstimateShipping = useCallback(\n (formValues: {\n shippingCountry: string;\n shippingState?: string;\n shippingZip?: string;\n }) => {\n const {\n shippingCountry,\n shippingState = '',\n shippingZip = '',\n } = formValues;\n\n const addressData: EstimateAddressInput = {\n countryCode: shippingCountry,\n postcode: shippingZip,\n region: {\n code: shippingState,\n },\n };\n\n setPriceSummaryLoading(true);\n\n getEstimateShipping(addressData)\n .then((data) => {\n if (data) {\n setEstimatedShippingPrice({\n amount: data.amount.value,\n currency: data.amount.currency,\n });\n\n setSelectedCountry(shippingCountry);\n setSelectedRegion(shippingState);\n setSelectedZip(shippingZip);\n\n setEstimatedDestinationText(\n shippingState || shippingZip || shippingCountry\n );\n }\n })\n .finally(() => {\n setPriceSummaryLoading(false);\n });\n },\n []\n );\n\n const handleCountrySelected = (event: Event) => {\n event.preventDefault();\n\n setSelectedRegion('');\n setSelectedZip('');\n\n const value = (event.target as HTMLSelectElement).value;\n setSelectedCountry(value);\n };\n\n // Get list of countries on initial load\n useEffect(() => {\n getCountries().then((countries) => {\n let defaultCountry = 'US';\n const transformedCountries = countries.map((country) => {\n if (country.isDefaultCountry) {\n defaultCountry = country.id;\n }\n return {\n text: country.label,\n value: country.id,\n };\n });\n setCountries(transformedCountries);\n setSelectedCountry(defaultCountry);\n });\n }, []);\n\n // Update regions when country is updated\n useEffect(() => {\n setRegionsLoading(true);\n getRegions(selectedCountry)\n .then((regions) => {\n const transformedRegions = regions.map((region) => {\n return {\n text: region.name,\n value: region.code,\n };\n });\n setRegions(transformedRegions);\n })\n .finally(() => {\n setRegionsLoading(false);\n });\n }, [selectedCountry, setRegionsLoading]);\n\n return {\n loading: priceSummaryLoading,\n regionsLoading,\n estimatedDestinationText,\n countries,\n selectedCountry,\n selectedRegion,\n selectedZip,\n regions,\n estimatedShippingPrice,\n handleEstimateShipping,\n handleCountrySelected,\n };\n};\n","import { HTMLAttributes, useEffect, useState } from 'preact/compat';\nimport { Container } from '@adobe/elsie/lib';\nimport { events } from '@adobe/event-bus';\nimport { CartModel } from '@/cart/data/models';\nimport {\n Button,\n CartItem,\n CartList,\n Input,\n Image,\n Picker,\n Price,\n PriceSummary,\n} from '@adobe/elsie/components';\nimport { Cart as CartComponent, EmptyCart } from '@/cart/components';\nimport { updateProductsFromCart } from '@/cart/api';\nimport { useText } from '@adobe/elsie/i18n';\nimport { getPersistedData } from '@/cart/lib/persisted-data';\n\nimport { publishShoppingCartViewEvent } from '@/cart/lib/acdl';\nimport { state } from '@/cart/lib/state';\nimport { useEstimatedShipping } from '@/cart/hooks';\n\ninterface CheckoutRouteContext {\n cartId: string;\n}\nexport interface CartProps extends HTMLAttributes<HTMLDivElement> {\n // Links\n routeProduct?: (item: CartModel['items'][0]) => string;\n routeEmptyCartCTA?: () => string;\n routeCheckout?: (context: CheckoutRouteContext) => string;\n}\n\nexport const Cart: Container<CartProps, CartModel | null> = ({\n children,\n initialData = null,\n routeProduct,\n routeEmptyCartCTA,\n routeCheckout,\n ...props\n}) => {\n const [data, setData] = useState<CartModel | null>(initialData);\n const [itemsLoading, setItemLoading] = useState<Set<string>>(new Set());\n\n const {\n loading: priceSummaryLoading,\n regionsLoading,\n countries,\n regions,\n selectedCountry,\n selectedRegion,\n selectedZip,\n estimatedDestinationText,\n estimatedShippingPrice,\n handleCountrySelected,\n handleEstimateShipping,\n } = useEstimatedShipping();\n\n const handleItemsLoading = (state: boolean, uid: string) => {\n setItemLoading((prev) => {\n state ? prev.add(uid) : prev.delete(uid);\n return new Set(prev);\n });\n };\n\n const handleItemQuantityUpdate = (uid: string, quantity: number) => {\n handleItemsLoading(true, uid);\n\n updateProductsFromCart([{ uid, quantity }]).finally(() => {\n handleItemsLoading(false, uid);\n });\n };\n\n const dictionary = useText({\n applyButton: 'Cart.PriceSummary.estimatedShippingForm.apply.label',\n checkout: 'Cart.PriceSummary.checkout',\n countryField: 'Cart.PriceSummary.estimatedShippingForm.country.placeholder',\n discountedPrice: 'Cart.CartItem.discountedPrice',\n download: 'Cart.CartItem.download',\n freeShipping: 'Cart.PriceSummary.freeShipping',\n heading: 'Cart.Cart.heading',\n message: 'Cart.CartItem.message',\n regularPrice: 'Cart.CartItem.regularPrice',\n recipient: 'Cart.CartItem.recipient',\n sender: 'Cart.CartItem.sender',\n stateField: 'Cart.PriceSummary.estimatedShippingForm.state.placeholder',\n taxToBeDetermined: 'Cart.PriceSummary.taxToBeDetermined',\n zipField: 'Cart.PriceSummary.estimatedShippingForm.zip.placeholder',\n file: 'Cart.CartItem.file',\n files: 'Cart.CartItem.files',\n });\n\n // Subscribe to cart data events\n useEffect(() => {\n const event = events.on(\n 'cart/data',\n (payload) => {\n setData(payload as CartModel);\n\n const shippingAddress = payload?.addresses?.shipping?.[0];\n\n if (shippingAddress) {\n const { countryCode, regionCode, zipCode } = shippingAddress;\n handleEstimateShipping({\n shippingCountry: countryCode,\n shippingState: regionCode,\n shippingZip: zipCode,\n });\n }\n },\n { eager: true }\n );\n\n return () => {\n event?.off();\n };\n }, [handleEstimateShipping]);\n\n // Publish shopping cart view event only once when the component is mounted and initialData is available\n useEffect(() => {\n if (initialData && Object.keys(initialData).length > 0) {\n publishShoppingCartViewEvent(initialData, state.locale || 'en-US');\n }\n }, [initialData]);\n\n const priceSummary =\n data?.totalQuantity ?? 0 ? (\n <PriceSummary\n data-testid=\"price-summary\"\n loading={priceSummaryLoading}\n heading=\"Order Summary\"\n total={{\n price: (\n <Price amount={data?.total.value} currency={data?.total.currency} />\n ),\n estimated: true,\n }}\n subTotal={{\n price: (\n <Price\n data-testid=\"subtotal\"\n amount={data?.subtotal.excludingTax?.value}\n currency={data?.subtotal.excludingTax?.currency}\n />\n ),\n }}\n shipping={\n data?.isVirtual\n ? undefined\n : {\n price:\n estimatedShippingPrice?.amount == 0 ? (\n <span data-testId=\"free-shipping\">\n {dictionary.freeShipping}\n </span>\n ) : estimatedShippingPrice ? (\n <Price {...estimatedShippingPrice} />\n ) : (\n <span>{dictionary.taxToBeDetermined}</span>\n ),\n estimated: true,\n countryField: (\n <Picker\n name=\"shippingCountry\"\n placeholder={dictionary.countryField}\n value={selectedCountry}\n variant=\"primary\"\n options={countries}\n handleSelect={handleCountrySelected}\n data-testid=\"estimate-shipping-country-selector\"\n />\n ),\n stateField:\n regions.length > 0 ? (\n <Picker\n name=\"shippingState\"\n placeholder={dictionary.stateField}\n variant=\"primary\"\n options={regions}\n value={selectedRegion}\n data-testid=\"estimate-shipping-state-selector\"\n disabled={regionsLoading}\n />\n ) : (\n <Input\n aria-label={dictionary.stateField}\n name=\"shippingState\"\n placeholder={dictionary.stateField}\n variant=\"primary\"\n value={selectedRegion}\n disabled={regionsLoading}\n data-testid=\"estimate-shipping-state-input\"\n maxLength={50}\n />\n ),\n zipField: (\n <Input\n aria-label={dictionary.zipField}\n name=\"shippingZip\"\n placeholder={dictionary.zipField}\n variant=\"primary\"\n data-testid=\"estimate-shipping-zip-input\"\n value={selectedZip}\n maxLength={12}\n />\n ),\n estimateButton: (\n <Button\n variant=\"secondary\"\n data-testid=\"estimate-shipping-apply-button\"\n aria-label={dictionary.applyButton}\n >\n {dictionary.applyButton}\n </Button>\n ),\n destinationText:\n estimatedDestinationText || dictionary.taxToBeDetermined,\n onEstimate: handleEstimateShipping,\n }\n }\n taxTotal={{\n price: data?.totalTax ? (\n <Price\n data-testid=\"tax-total\"\n amount={data?.totalTax?.value}\n currency={data?.totalTax?.currency}\n />\n ) : (\n <span data-testid=\"tax-total\">{dictionary.taxToBeDetermined}</span>\n ),\n estimated: true,\n }}\n primaryAction={\n routeCheckout ? (\n <Button\n data-testid=\"checkout-button\"\n variant=\"primary\"\n href={routeCheckout({\n cartId: data!.id,\n })}\n >\n {dictionary.checkout}\n </Button>\n ) : undefined\n }\n discounts={data?.appliedDiscounts.map((discount) => {\n return {\n label: discount.label,\n price: (\n <Price\n data-testid=\"summary-discount-total\"\n amount={-discount.amount.value}\n currency={discount.amount.currency}\n sale={true}\n />\n ),\n };\n })}\n />\n ) : undefined;\n\n return (\n <CartComponent\n {...props}\n heading={<div>{dictionary.heading}</div>}\n emptyCart={<EmptyCart ctaLinkURL={routeEmptyCartCTA?.()} />}\n priceSummary={priceSummary}\n products={\n data?.totalQuantity ?? 0 ? (\n <CartList>\n {data?.items.map((item, index) => {\n const isLoading = itemsLoading.has(item.uid);\n\n const configurations = {\n ...(item.bundleOptions ?? {}),\n ...(item.selectedOptions ?? {}),\n ...item.customizableOptions,\n ...(item.recipient\n ? { [dictionary.recipient]: item.recipient }\n : {}),\n ...(item.recipientEmail && item.recipient\n ? {\n [dictionary.recipient]: `${item.recipient} (${item.recipientEmail})`,\n }\n : {}),\n ...(item.sender ? { [dictionary.sender]: item.sender } : {}),\n ...(item.senderEmail && item.sender\n ? {\n [dictionary.sender]: `${item.sender} (${item.senderEmail})`,\n }\n : {}),\n ...(item.message ? { [dictionary.message]: item.message } : {}),\n ...(item.links && item.links.count\n ? item.links.count > 1\n ? {\n [dictionary.files.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {\n [dictionary.file.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {}),\n };\n\n return (\n <CartItem\n data-testid=\"cart-item\"\n ariaLabel={item.name}\n key={item.uid}\n updating={isLoading}\n image={\n routeProduct ? (\n <a href={routeProduct(item)}>\n <Image\n loading={index < 4 ? 'eager' : 'lazy'}\n src={item.image.src}\n alt={item.image.alt}\n width=\"300\"\n height=\"300\"\n params={{ width: 300 }}\n />\n </a>\n ) : (\n <Image\n loading={index < 4 ? 'eager' : 'lazy'}\n src={item.image.src}\n alt={item.image.alt}\n width=\"300\"\n height=\"300\"\n params={{ width: 300 }}\n />\n )\n }\n title={\n <span>\n {routeProduct ? (\n <a href={routeProduct(item)}>{item.name}</a>\n ) : (\n <>{item.name}</>\n )}\n </span>\n }\n sku={<span>{item.sku}</span>}\n configurations={\n Object.keys(configurations).length > 0\n ? configurations\n : undefined\n }\n quantity={item.quantity}\n price={\n <Price\n amount={item.regularPrice?.value}\n currency={item.regularPrice?.currency}\n style={{ font: 'inherit' }}\n />\n }\n total={\n <>\n <Price\n amount={item.total.value}\n currency={item.total.currency}\n variant={item.discounted ? 'strikethrough' : 'default'}\n data-testid=\"regular-total\"\n aria-label={dictionary.regularPrice}\n />\n\n {item.discounted && (\n <Price\n amount={item.discountedTotal?.value}\n currency={item.discountedTotal?.currency}\n sale={item.discounted}\n data-testid=\"discount-total\"\n aria-label={dictionary.discountedPrice}\n />\n )}\n </>\n }\n onQuantity={(value) => {\n handleItemQuantityUpdate(item.uid, value);\n }}\n onRemove={() => {\n handleItemQuantityUpdate(item.uid, 0);\n }}\n />\n );\n })}\n </CartList>\n ) : undefined\n }\n />\n );\n};\n\nCart.getInitialData = async function () {\n return getPersistedData();\n};\n"],"names":["Cart","className","children","emptyCart","heading","products","priceSummary","props","_jsx","classes","_jsxs","VComponent","node","Divider","variant","useEstimatedShipping","countries","setCountries","useState","selectedCountry","setSelectedCountry","selectedRegion","setSelectedRegion","selectedZip","setSelectedZip","regions","setRegions","regionsLoading","setRegionsLoading","estimatedShippingPrice","setEstimatedShippingPrice","estimatedDestinationText","setEstimatedDestinationText","priceSummaryLoading","setPriceSummaryLoading","handleEstimateShipping","useCallback","formValues","shippingCountry","shippingState","shippingZip","addressData","countryCode","postcode","region","code","then","data","amount","value","currency","finally","handleCountrySelected","event","preventDefault","target","useEffect","getCountries","defaultCountry","transformedCountries","map","country","isDefaultCountry","id","text","label","getRegions","transformedRegions","name","loading","initialData","routeProduct","routeEmptyCartCTA","routeCheckout","setData","itemsLoading","setItemLoading","Set","handleItemsLoading","state","uid","prev","add","delete","handleItemQuantityUpdate","quantity","updateProductsFromCart","dictionary","useText","applyButton","checkout","countryField","discountedPrice","download","freeShipping","message","regularPrice","recipient","sender","stateField","taxToBeDetermined","zipField","file","files","events","on","payload","shippingAddress","addresses","shipping","regionCode","zipCode","eager","off","Object","keys","length","locale","totalQuantity","PriceSummary","total","price","Price","estimated","subTotal","subtotal","excludingTax","isVirtual","undefined","Picker","placeholder","options","handleSelect","disabled","Input","maxLength","estimateButton","Button","destinationText","onEstimate","taxTotal","totalTax","primaryAction","href","cartId","discounts","appliedDiscounts","discount","sale","CartComponent","EmptyCart","ctaLinkURL","CartList","items","item","index","isLoading","has","configurations","bundleOptions","selectedOptions","customizableOptions","recipientEmail","senderEmail","links","count","replace","toString","result","CartItem","ariaLabel","updating","image","Image","src","alt","width","height","params","title","_Fragment","sku","style","font","discounted","discountedTotal","onQuantity","onRemove","getInitialData","getPersistedData"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Cart.js","sources":["../../src/components/Cart/Cart.tsx","../../src/hooks/useEstimatedTotals.tsx","../../src/hooks/useEstimatedShipping.ts","../../src/containers/Cart/Cart.tsx"],"sourcesContent":["import { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { VComponent, classes } from '@adobe/elsie/lib';\nimport { Divider } from '@adobe/elsie/components';\n\nimport '@/cart/components/Cart/Cart.css';\n\nexport interface CartProps extends HTMLAttributes<HTMLDivElement> {\n emptyCart: VNode;\n heading?: VNode;\n products?: VNode;\n priceSummary?: VNode<HTMLAttributes<HTMLElement>>;\n}\n\nexport const Cart: FunctionComponent<CartProps> = ({\n className,\n children,\n emptyCart,\n heading,\n products,\n priceSummary,\n ...props\n}) => {\n return (\n <div {...props} className={classes(['cart-cart', className])}>\n <div className={classes(['cart-cart__wrapper'])}>\n {/* Heading */}\n {heading && (\n <div\n className={classes([\n 'cart-cart__heading',\n ['cart-cart__heading--full-width', !products || !priceSummary],\n ])}\n >\n <VComponent node={heading} className=\"cart-cart__heading-text\" />\n\n <Divider\n variant=\"primary\"\n className={classes(['cart-cart__heading-divider'])}\n />\n </div>\n )}\n\n {/* Content */}\n <div\n className={classes([\n 'cart-cart__content',\n ['cart-cart__content--empty', !products],\n ['cart-cart__content--full-width', !priceSummary],\n ])}\n >\n {products || (\n <VComponent node={emptyCart} className=\"cart-cart__empty-cart\" />\n )}\n </div>\n {products && priceSummary && (\n <VComponent\n node={priceSummary}\n className={classes(['cart-cart__price-summary'])}\n />\n )}\n </div>\n </div>\n );\n};\n","import { useState } from 'preact/compat';\nimport { PriceProps } from '@adobe/elsie/components';\n\nimport { getEstimatedTotals } from '@/cart/api';\n\nexport const useEstimatedTotals = () => {\n const [estimatedTotals, setEstimatedTotals] = useState<any>();\n\n const handleEstimateTotals = (\n formValues: {\n shippingCountry: string;\n shippingState?: string;\n shippingZip?: string;\n },\n shippingMethods?: {\n carrier_code: string;\n method_code: string;\n }\n ) => {\n const {\n shippingCountry,\n shippingState = '',\n shippingZip = '',\n } = formValues;\n\n const inputData = {\n countryCode: shippingCountry,\n postcode: shippingZip,\n region: {\n region: shippingState,\n },\n shipping_method: {\n carrier_code: shippingMethods?.carrier_code || '',\n method_code: shippingMethods?.method_code || '',\n },\n };\n\n getEstimatedTotals(inputData).then((data) => {\n if (data) {\n setEstimatedTotals({\n estimatedTaxTotal: {\n amount: data.totalTax?.value,\n currency: data.totalTax?.currency,\n },\n estimatedSubTotal: {\n excludingTax: {\n amount: data.subtotal?.excludingTax?.value,\n currency: data.subtotal?.excludingTax?.currency,\n },\n includingTax: {\n amount: data.subtotal?.includingTax?.value,\n currency: data.subtotal?.includingTax?.currency,\n },\n includingDiscountOnly: {\n amount: data.subtotal?.includingDiscountOnly?.value,\n currency: data.subtotal?.includingDiscountOnly?.currency,\n },\n },\n estimatedGrandTotalPrice: {\n includingTax: {\n amount: data.total?.includingTax.value,\n currency: data.total?.includingTax.currency,\n },\n excludingTax: {\n amount: data.total?.excludingTax.value,\n currency: data.total?.excludingTax.currency,\n },\n },\n estimatedAppliedTaxes: {\n taxes: data.appliedTaxes?.map((tax) => {\n return {\n label: tax.label,\n amount: {\n value: tax.amount?.value,\n currency: tax.amount?.currency,\n },\n };\n }),\n },\n estimatedItems: {\n items: data.items?.map((item) => {\n return {\n uid: item.uid,\n price: {\n amount: item.price?.value,\n currency: item.price?.currency,\n },\n taxedPrice: {\n amount: item.taxedPrice?.value,\n currency: item.taxedPrice?.currency,\n },\n rowTotal: {\n amount: item.rowTotal?.value,\n currency: item.rowTotal?.currency,\n },\n rowTotalIncludingTax: {\n amount: item.rowTotalIncludingTax?.value,\n currency: item.rowTotalIncludingTax?.currency,\n },\n regularPrice: {\n amount: item.regularPrice?.value,\n currency: item.regularPrice?.currency,\n },\n };\n }),\n },\n } as PriceProps);\n }\n });\n };\n\n return {\n handleEstimateTotals,\n estimatedTotals,\n };\n};\n","import { useEffect, useState } from 'preact/compat';\n\nimport {\n EstimateAddressInput,\n getCountries,\n getEstimateShipping,\n getRegions,\n} from '@/cart/api';\nimport { PriceProps } from '@adobe/elsie/components';\n\nexport const useEstimatedShipping = () => {\n /* State data related to estimating costs in the Price Summary component */\n const [countries, setCountries] = useState<{ text: string; value: string }[]>(\n []\n );\n const [selectedCountry, setSelectedCountry] = useState<string>('US');\n const [selectedRegion, setSelectedRegion] = useState<string>('');\n const [selectedZip, setSelectedZip] = useState<string>('');\n const [regions, setRegions] = useState<{ text: string; value: string }[]>([]);\n const [regionsLoading, setRegionsLoading] = useState<boolean>(false);\n const [estimatedShippingPrice, setEstimatedShippingPrice] = useState<\n PriceProps | null | any\n >();\n const [estimatedShippingMethod, setEstimatedShippingMethod] = useState<any>();\n const [estimatedDestinationText, setEstimatedDestinationText] =\n useState<string>('');\n const [priceSummaryLoading, setPriceSummaryLoading] =\n useState<boolean>(false);\n\n const handleEstimateShipping = async (formValues: {\n shippingCountry: string;\n shippingState?: string;\n shippingZip?: string;\n }) => {\n const {\n shippingCountry,\n shippingState = '',\n shippingZip = '',\n } = formValues;\n\n const addressData: EstimateAddressInput = {\n countryCode: shippingCountry,\n postcode: shippingZip,\n region: {\n region: shippingState,\n },\n };\n\n setPriceSummaryLoading(true);\n\n return getEstimateShipping(addressData)\n .then((data) => {\n if (data) {\n setEstimatedShippingPrice({\n amount: data.amount.value,\n currency: data.amount.currency,\n priceIncludingtax: {\n amount: data.price_incl_tax.value,\n currency: data.price_incl_tax.currency,\n },\n priceExcludingtax: {\n amount: data.price_excl_tax.value,\n currency: data.price_excl_tax.currency,\n },\n });\n setEstimatedShippingMethod({\n carrier_code: data.carrier_code,\n method_code: data.method_code,\n });\n\n setSelectedCountry(shippingCountry);\n setSelectedRegion(shippingState);\n setSelectedZip(shippingZip);\n\n setEstimatedDestinationText(\n shippingState || shippingZip || shippingCountry\n );\n }\n return data;\n })\n\n .finally(() => {\n setPriceSummaryLoading(false);\n });\n };\n\n const handleCountrySelected = (event: Event) => {\n event.preventDefault();\n\n setSelectedRegion('');\n setSelectedZip('');\n\n const value = (event.target as HTMLSelectElement).value;\n setSelectedCountry(value);\n };\n\n // Get list of countries on initial load\n useEffect(() => {\n getCountries().then((countries) => {\n let defaultCountry = 'US';\n const transformedCountries = countries.map((country) => {\n if (country.isDefaultCountry) {\n defaultCountry = country.id;\n }\n return {\n text: country.label,\n value: country.id,\n };\n });\n setCountries(transformedCountries);\n setSelectedCountry(defaultCountry);\n });\n }, []);\n\n // Update regions when country is updated\n useEffect(() => {\n setRegionsLoading(true);\n getRegions(selectedCountry)\n .then((regions) => {\n const transformedRegions = regions.map((region) => {\n return {\n text: region.name,\n value: region.code,\n };\n });\n setRegions(transformedRegions);\n })\n .finally(() => {\n setRegionsLoading(false);\n });\n }, [selectedCountry, setRegionsLoading]);\n\n return {\n loading: priceSummaryLoading,\n regionsLoading,\n estimatedDestinationText,\n countries,\n selectedCountry,\n selectedRegion,\n selectedZip,\n regions,\n estimatedShippingPrice,\n estimatedShippingMethod,\n handleEstimateShipping,\n handleCountrySelected,\n };\n};\n","import {\n HTMLAttributes,\n useCallback,\n useEffect,\n useState,\n} from 'preact/compat';\nimport { Container } from '@adobe/elsie/lib';\nimport { events } from '@adobe/event-bus';\nimport { CartModel } from '@/cart/data/models';\nimport {\n Button,\n CartItem,\n CartList,\n Input,\n Image,\n Picker,\n Price,\n PriceSummary,\n} from '@adobe/elsie/components';\nimport { Cart as CartComponent, EmptyCart } from '@/cart/components';\nimport { updateProductsFromCart, getStoreConfig } from '@/cart/api';\nimport { useText } from '@adobe/elsie/i18n';\nimport { getPersistedData } from '@/cart/lib/persisted-data';\n\nimport { publishShoppingCartViewEvent } from '@/cart/lib/acdl';\nimport { state } from '@/cart/lib/state';\nimport { useEstimatedShipping, useEstimatedTotals } from '@/cart/hooks';\n\ninterface CheckoutRouteContext {\n cartId: string;\n}\nexport interface CartProps extends HTMLAttributes<HTMLDivElement> {\n // Links\n routeProduct?: (item: CartModel['items'][0]) => string;\n routeEmptyCartCTA?: () => string;\n routeCheckout?: (context: CheckoutRouteContext) => string;\n}\n\nexport const Cart: Container<CartProps, CartModel | null> = ({\n children,\n initialData = null,\n routeProduct,\n routeEmptyCartCTA,\n routeCheckout,\n ...props\n}) => {\n const [data, setData] = useState<CartModel | null>(initialData);\n const [itemsLoading, setItemLoading] = useState<Set<string>>(new Set());\n\n const {\n loading: priceSummaryLoading,\n countries,\n regions,\n selectedCountry,\n estimatedDestinationText,\n estimatedShippingPrice,\n handleCountrySelected,\n handleEstimateShipping,\n regionsLoading,\n selectedRegion,\n selectedZip,\n } = useEstimatedShipping();\n\n const { handleEstimateTotals, estimatedTotals } = useEstimatedTotals();\n\n const handleItemsLoading = (state: boolean, uid: string) => {\n setItemLoading((prev) => {\n state ? prev.add(uid) : prev.delete(uid);\n return new Set(prev);\n });\n };\n\n const handleItemQuantityUpdate = (uid: string, quantity: number) => {\n handleItemsLoading(true, uid);\n\n updateProductsFromCart([{ uid, quantity }]).finally(() => {\n handleItemsLoading(false, uid);\n if (estimatedDestinationText) {\n handleEstimations({\n shippingCountry: selectedCountry,\n shippingState: selectedRegion,\n shippingZip: selectedZip,\n });\n }\n });\n };\n\n const handleEstimations = useCallback(\n (formValues: any) => {\n handleEstimateShipping(formValues).then((data) => {\n if (data) {\n const { carrier_code, method_code } = data;\n const incomingEstimatedShippingMethods = {\n carrier_code,\n method_code,\n };\n handleEstimateTotals(formValues, incomingEstimatedShippingMethods);\n } else {\n handleEstimateTotals(formValues);\n }\n });\n },\n [handleEstimateShipping, handleEstimateTotals]\n );\n\n const dictionary = useText({\n applyButton: 'Cart.PriceSummary.estimatedShippingForm.apply.label',\n checkout: 'Cart.PriceSummary.checkout',\n countryField: 'Cart.PriceSummary.estimatedShippingForm.country.placeholder',\n discountedPrice: 'Cart.CartItem.discountedPrice',\n download: 'Cart.CartItem.download',\n freeShipping: 'Cart.PriceSummary.freeShipping',\n heading: 'Cart.Cart.heading',\n message: 'Cart.CartItem.message',\n regularPrice: 'Cart.CartItem.regularPrice',\n recipient: 'Cart.CartItem.recipient',\n sender: 'Cart.CartItem.sender',\n stateField: 'Cart.PriceSummary.estimatedShippingForm.state.placeholder',\n taxToBeDetermined: 'Cart.PriceSummary.taxToBeDetermined',\n zipField: 'Cart.PriceSummary.estimatedShippingForm.zip.placeholder',\n file: 'Cart.CartItem.file',\n files: 'Cart.CartItem.files',\n });\n\n // Subscribe to cart data events\n useEffect(() => {\n const event = events.on(\n 'cart/data',\n (payload) => {\n setData(payload as CartModel);\n\n const shippingAddress = payload?.addresses?.shipping?.[0];\n\n if (shippingAddress) {\n const { countryCode, regionCode, zipCode } = shippingAddress;\n handleEstimations({\n shippingCountry: countryCode,\n shippingState: regionCode,\n shippingZip: zipCode,\n });\n }\n },\n { eager: true }\n );\n\n return () => {\n event?.off();\n };\n }, []);\n\n // Publish shopping cart view event only once when the component is mounted and initialData is available\n useEffect(() => {\n if (initialData && Object.keys(initialData).length > 0) {\n publishShoppingCartViewEvent(initialData, state.locale || 'en-US');\n }\n }, [initialData]);\n\n // Add StoreConfig Into State\n getStoreConfig().then((config) => {\n state.config = config;\n });\n\n const cartTaxesConfig = state.config?.shoppingCartDisplaySetting;\n\n const priceSummary =\n data?.totalQuantity ?? 0 ? (\n <PriceSummary\n data-testid=\"price-summary\"\n loading={priceSummaryLoading}\n heading=\"Order Summary\"\n total={{\n price: estimatedTotals?.estimatedGrandTotalPrice ? (\n <Price\n {...estimatedTotals?.estimatedGrandTotalPrice.includingTax}\n />\n ) : (\n <Price\n amount={data?.total.includingTax.value}\n currency={data?.total.includingTax.currency}\n />\n ),\n estimated: true,\n priceWithoutTax: cartTaxesConfig?.grandTotal ? (\n estimatedTotals?.estimatedAppliedTaxes ? (\n <Price\n {...estimatedTotals?.estimatedGrandTotalPrice.excludingTax}\n />\n ) : (\n <Price\n amount={data?.total.excludingTax.value}\n currency={data?.total.excludingTax.currency}\n />\n )\n ) : undefined,\n }}\n subTotal={{\n taxIncluded:\n cartTaxesConfig?.subtotal === 'INCLUDING_TAX' &&\n !cartTaxesConfig?.zeroTax,\n taxExcluded: cartTaxesConfig?.subtotal === 'INCLUDING_EXCLUDING_TAX',\n zeroTaxSubtotal: cartTaxesConfig?.zeroTax,\n priceExcludingTax: estimatedTotals?.estimatedSubTotal\n ?.excludingTax ? (\n <Price\n data-testid=\"subtotal\"\n {...estimatedTotals?.estimatedSubTotal?.excludingTax}\n />\n ) : (\n <Price\n data-testid=\"subtotal\"\n amount={data?.subtotal.excludingTax?.value}\n currency={data?.subtotal.excludingTax?.currency}\n />\n ),\n price:\n (!cartTaxesConfig?.zeroTax &&\n cartTaxesConfig?.subtotal === 'INCLUDING_TAX') ||\n (!cartTaxesConfig?.zeroTax &&\n cartTaxesConfig?.subtotal === 'INCLUDING_EXCLUDING_TAX') ? (\n estimatedTotals?.estimatedSubTotal?.includingTax ? (\n <Price\n data-testid=\"subtotal\"\n {...estimatedTotals?.estimatedSubTotal?.includingTax}\n />\n ) : (\n <Price\n data-testid=\"subtotal\"\n amount={data?.subtotal.includingTax?.value}\n currency={data?.subtotal.includingTax?.currency}\n />\n )\n ) : (\n <Price\n data-testid=\"subtotal\"\n amount={data?.subtotal.excludingTax?.value}\n currency={data?.subtotal.excludingTax?.currency}\n />\n ),\n }}\n shipping={\n data?.isVirtual\n ? undefined\n : {\n taxIncluded: cartTaxesConfig?.shipping === 'INCLUDING_TAX',\n taxExcluded:\n cartTaxesConfig?.shipping === 'INCLUDING_EXCLUDING_TAX',\n price:\n estimatedShippingPrice?.amount == 0 ? (\n <span data-testId=\"free-shipping\">\n {dictionary.freeShipping}\n </span>\n ) : cartTaxesConfig?.shipping === 'INCLUDING_TAX' &&\n estimatedShippingPrice ? (\n <Price\n data-testid=\"shipping\"\n {...estimatedShippingPrice.priceIncludingtax}\n />\n ) : estimatedShippingPrice ? (\n <Price {...estimatedShippingPrice} />\n ) : (\n <span>{dictionary.taxToBeDetermined}</span>\n ),\n estimated: true,\n priceExcludingTax: estimatedShippingPrice?.priceExcludingtax ? (\n <Price\n data-testid=\"shipping-excluding-tax\"\n {...estimatedShippingPrice.priceExcludingtax}\n />\n ) : (\n <span>{dictionary.taxToBeDetermined}</span>\n ),\n\n countryField: (\n <Picker\n name=\"shippingCountry\"\n placeholder={dictionary.countryField}\n value={selectedCountry}\n variant=\"primary\"\n options={countries}\n handleSelect={handleCountrySelected}\n data-testid=\"estimate-shipping-country-selector\"\n />\n ),\n stateField:\n regions.length > 0 ? (\n <Picker\n name=\"shippingState\"\n placeholder={dictionary.stateField}\n variant=\"primary\"\n options={regions}\n value={selectedRegion}\n data-testid=\"estimate-shipping-state-selector\"\n disabled={regionsLoading}\n />\n ) : (\n <Input\n aria-label={dictionary.stateField}\n name=\"shippingState\"\n placeholder={dictionary.stateField}\n variant=\"primary\"\n value={selectedRegion}\n disabled={regionsLoading}\n data-testid=\"estimate-shipping-state-input\"\n maxLength={50}\n />\n ),\n zipField: (\n <Input\n aria-label={dictionary.zipField}\n name=\"shippingZip\"\n placeholder={dictionary.zipField}\n variant=\"primary\"\n data-testid=\"estimate-shipping-zip-input\"\n value={selectedZip}\n maxLength={12}\n />\n ),\n estimateButton: (\n <Button\n variant=\"secondary\"\n data-testid=\"estimate-shipping-apply-button\"\n aria-label={dictionary.applyButton}\n >\n {dictionary.applyButton}\n </Button>\n ),\n destinationText:\n estimatedDestinationText || dictionary.taxToBeDetermined,\n onEstimate: handleEstimations,\n }\n }\n taxTotal={\n data?.isVirtual\n ? {\n price: (\n <span data-testid=\"tax-total\">\n {dictionary.taxToBeDetermined}\n </span>\n ),\n }\n : {\n price: estimatedTotals?.estimatedTaxTotal ? (\n <Price\n data-testid=\"tax-total\"\n {...estimatedTotals?.estimatedTaxTotal}\n />\n ) : data?.totalTax ? (\n <Price\n data-testid=\"tax-total\"\n amount={data?.totalTax?.value}\n currency={data?.totalTax?.currency}\n />\n ) : (\n <span data-testid=\"tax-total\">\n {dictionary.taxToBeDetermined}\n </span>\n ),\n estimated: true,\n }\n }\n taxesApplied={\n data?.isVirtual\n ? undefined\n : cartTaxesConfig?.fullSummary &&\n estimatedTotals?.estimatedAppliedTaxes\n ? estimatedTotals?.estimatedAppliedTaxes?.taxes?.map((tax: any) => {\n return {\n label: tax.label,\n price: (\n <Price\n data-testid=\"applied-taxes\"\n amount={tax.amount.value}\n currency={tax.amount.currency}\n />\n ),\n };\n })\n : cartTaxesConfig?.fullSummary\n ? data?.appliedTaxes.map((tax) => {\n return {\n label: tax.label,\n price: (\n <Price\n data-testid=\"applied-taxes\"\n amount={tax.amount.value}\n currency={tax.amount.currency}\n />\n ),\n };\n })\n : undefined\n }\n primaryAction={\n routeCheckout ? (\n <Button\n data-testid=\"checkout-button\"\n variant=\"primary\"\n href={routeCheckout({\n cartId: data!.id,\n })}\n >\n {dictionary.checkout}\n </Button>\n ) : undefined\n }\n discounts={data?.appliedDiscounts.map((discount) => {\n return {\n label: discount.label,\n price: (\n <Price\n data-testid=\"summary-discount-total\"\n amount={-discount.amount.value}\n currency={discount.amount.currency}\n sale={true}\n />\n ),\n };\n })}\n />\n ) : undefined;\n\n return (\n <CartComponent\n {...props}\n heading={<div>{dictionary.heading}</div>}\n emptyCart={<EmptyCart ctaLinkURL={routeEmptyCartCTA?.()} />}\n priceSummary={priceSummary}\n products={\n data?.totalQuantity ?? 0 ? (\n <CartList>\n {data?.items.map((item, index) => {\n const isLoading = itemsLoading.has(item.uid);\n\n const configurations = {\n ...(item.bundleOptions ?? {}),\n ...(item.selectedOptions ?? {}),\n ...item.customizableOptions,\n ...(item.recipient\n ? { [dictionary.recipient]: item.recipient }\n : {}),\n ...(item.recipientEmail && item.recipient\n ? {\n [dictionary.recipient]: `${item.recipient} (${item.recipientEmail})`,\n }\n : {}),\n ...(item.sender ? { [dictionary.sender]: item.sender } : {}),\n ...(item.senderEmail && item.sender\n ? {\n [dictionary.sender]: `${item.sender} (${item.senderEmail})`,\n }\n : {}),\n ...(item.message ? { [dictionary.message]: item.message } : {}),\n ...(item.links && item.links.count\n ? item.links.count > 1\n ? {\n [dictionary.files.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {\n [dictionary.file.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {}),\n };\n\n return (\n <CartItem\n ariaLabel={item.name}\n key={item.uid}\n updating={isLoading}\n data-testid=\"cart-item\"\n taxIncluded={cartTaxesConfig?.price === 'INCLUDING_TAX'}\n taxExcluded={\n cartTaxesConfig?.price === 'INCLUDING_EXCLUDING_TAX'\n }\n image={\n routeProduct ? (\n <a href={routeProduct(item)}>\n <Image\n loading={index < 4 ? 'eager' : 'lazy'}\n src={item.image.src}\n alt={item.image.alt}\n width=\"300\"\n height=\"300\"\n params={{ width: 300 }}\n />\n </a>\n ) : (\n <Image\n loading={index < 4 ? 'eager' : 'lazy'}\n src={item.image.src}\n alt={item.image.alt}\n width=\"300\"\n height=\"300\"\n params={{ width: 300 }}\n />\n )\n }\n title={\n <span>\n {routeProduct ? (\n <a href={routeProduct(item)}>{item.name}</a>\n ) : (\n <>{item.name}</>\n )}\n </span>\n }\n sku={<span>{item.sku}</span>}\n configurations={\n Object.keys(configurations).length > 0\n ? configurations\n : undefined\n }\n quantity={item.quantity}\n //unit price\n price={\n cartTaxesConfig?.price === 'INCLUDING_TAX' ? (\n <Price\n amount={\n item.discounted\n ? item.regularPrice?.value\n : item.taxedPrice?.value\n }\n currency={\n item.discounted\n ? item.regularPrice?.currency\n : item.taxedPrice?.currency\n }\n style={{ font: 'inherit' }}\n data-testid=\"including-tax-item-price\"\n />\n ) : (\n <Price\n amount={item.regularPrice?.value}\n currency={item.regularPrice?.currency}\n style={{ font: 'inherit' }}\n data-testid=\"regular-item-price\"\n />\n )\n }\n //row total\n total={\n cartTaxesConfig?.price === 'INCLUDING_EXCLUDING_TAX' ||\n cartTaxesConfig?.price === 'INCLUDING_TAX' ? (\n <>\n {item.discounted ? (\n <>\n <Price\n amount={item.total.value}\n currency={item.total.currency}\n variant={\n item.discounted ? 'strikethrough' : 'default'\n }\n data-testid=\"including-tax-row-total\"\n aria-label={dictionary.regularPrice}\n />\n <Price\n amount={item.rowTotalIncludingTax?.value}\n currency={item.rowTotalIncludingTax?.currency}\n sale={item.discounted}\n data-testid=\"discount-total\"\n aria-label={dictionary.discountedPrice}\n />\n </>\n ) : (\n <Price\n amount={item.rowTotalIncludingTax.value}\n currency={item.rowTotalIncludingTax.currency}\n data-testid=\"including-tax-row-total\"\n aria-label={dictionary.regularPrice}\n />\n )}\n </>\n ) : (\n <>\n <Price\n amount={item.total.value}\n currency={item.total.currency}\n variant={\n item.discounted ? 'strikethrough' : 'default'\n }\n data-testid=\"regular-total\"\n aria-label={dictionary.regularPrice}\n />\n\n {item.discounted && (\n <Price\n amount={item.discountedTotal?.value}\n currency={item.discountedTotal?.currency}\n sale={item.discounted}\n data-testid=\"discount-total\"\n aria-label={dictionary.discountedPrice}\n />\n )}\n </>\n )\n }\n totalExcludingTax={\n cartTaxesConfig?.price === 'INCLUDING_EXCLUDING_TAX' ? (\n <Price\n amount={item.rowTotal.value}\n currency={item.rowTotal.currency}\n data-testid=\"excluding-tax-total\"\n aria-label={dictionary.regularPrice}\n />\n ) : undefined\n }\n onQuantity={(value) => {\n handleItemQuantityUpdate(item.uid, value);\n }}\n onRemove={() => {\n handleItemQuantityUpdate(item.uid, 0);\n }}\n />\n );\n })}\n </CartList>\n ) : undefined\n }\n />\n );\n};\n\nCart.getInitialData = async function () {\n return getPersistedData();\n};\n"],"names":["Cart","className","children","emptyCart","heading","products","priceSummary","props","_jsx","classes","_jsxs","VComponent","node","Divider","variant","useEstimatedTotals","estimatedTotals","setEstimatedTotals","useState","handleEstimateTotals","formValues","shippingMethods","shippingCountry","shippingState","shippingZip","inputData","countryCode","postcode","region","shipping_method","carrier_code","method_code","then","data","estimatedTaxTotal","amount","totalTax","value","currency","estimatedSubTotal","excludingTax","subtotal","includingTax","includingDiscountOnly","estimatedGrandTotalPrice","total","estimatedAppliedTaxes","taxes","appliedTaxes","map","tax","label","estimatedItems","items","item","uid","price","taxedPrice","rowTotal","rowTotalIncludingTax","regularPrice","useEstimatedShipping","countries","setCountries","selectedCountry","setSelectedCountry","selectedRegion","setSelectedRegion","selectedZip","setSelectedZip","regions","setRegions","regionsLoading","setRegionsLoading","estimatedShippingPrice","setEstimatedShippingPrice","estimatedShippingMethod","setEstimatedShippingMethod","estimatedDestinationText","setEstimatedDestinationText","priceSummaryLoading","setPriceSummaryLoading","handleEstimateShipping","addressData","getEstimateShipping","priceIncludingtax","price_incl_tax","priceExcludingtax","price_excl_tax","finally","handleCountrySelected","event","preventDefault","target","useEffect","getCountries","defaultCountry","transformedCountries","country","isDefaultCountry","id","text","getRegions","transformedRegions","name","code","loading","initialData","routeProduct","routeEmptyCartCTA","routeCheckout","setData","itemsLoading","setItemLoading","Set","handleItemsLoading","state","prev","add","delete","handleItemQuantityUpdate","quantity","updateProductsFromCart","handleEstimations","useCallback","dictionary","useText","applyButton","checkout","countryField","discountedPrice","download","freeShipping","message","recipient","sender","stateField","taxToBeDetermined","zipField","file","files","events","on","payload","shippingAddress","addresses","shipping","regionCode","zipCode","eager","off","Object","keys","length","locale","getStoreConfig","config","cartTaxesConfig","shoppingCartDisplaySetting","totalQuantity","PriceSummary","Price","estimated","priceWithoutTax","grandTotal","undefined","subTotal","taxIncluded","zeroTax","taxExcluded","zeroTaxSubtotal","priceExcludingTax","isVirtual","Picker","placeholder","options","handleSelect","disabled","Input","maxLength","estimateButton","Button","destinationText","onEstimate","taxTotal","taxesApplied","fullSummary","primaryAction","href","cartId","discounts","appliedDiscounts","discount","sale","CartComponent","EmptyCart","ctaLinkURL","CartList","index","isLoading","has","configurations","bundleOptions","selectedOptions","customizableOptions","recipientEmail","senderEmail","links","count","replace","toString","result","CartItem","ariaLabel","updating","image","Image","src","alt","width","height","params","title","_Fragment","sku","discounted","style","font","discountedTotal","totalExcludingTax","onQuantity","onRemove","getInitialData","getPersistedData"],"mappings":"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"}
|
package/containers/MiniCart.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useState as
|
|
1
|
+
import{useState as T,useEffect as S}from"@dropins/tools/preact-compat.js";import{s as M,n as q}from"../chunks/getStoreConfig.js";import{events as F}from"@dropins/tools/event-bus.js";import{E as R}from"../chunks/MiniCart.js";import{classes as A,VComponent as p}from"@dropins/tools/lib.js";import{Divider as V,Price as i,Button as O,CartList as B,CartItem as H,Image as $}from"@dropins/tools/components.js";import{jsxs as l,jsx as e,Fragment as _}from"@dropins/tools/preact-jsx-runtime.js";import{useText as j}from"@dropins/tools/i18n.js";import{b as J,u as K}from"../chunks/updateProductsFromCart.js";import"@dropins/tools/fetch-graphql.js";const W=({className:N,children:s,emptyCart:u,heading:g,products:o,subtotal:d,subtotalExcludingTaxes:y,ctas:t,...m})=>{const I=j({subtotal:"Cart.MiniCart.subtotal",subtotalExcludingTaxes:"Cart.MiniCart.subtotalExcludingTaxes"});return l("div",{...m,className:A(["cart-mini-cart",N]),children:[o&&g&&l("div",{className:"cart-mini-cart__heading",children:[e(p,{node:g,className:"cart-mini-cart__heading-text"}),e(V,{variant:"primary",className:"cart-mini-cart__heading-divider"})]}),o?l(_,{children:[e("div",{className:"cart-mini-cart__products",children:o}),l("div",{className:"cart-mini-cart__footer",children:[d&&l("div",{className:"cart-mini-cart__footer__estimated-total",children:[I.subtotal,e(p,{node:d})]}),y&&l("div",{className:"cart-mini-cart__footer__estimated-total-excluding-taxes",children:[I.subtotalExcludingTaxes,e(p,{node:y,className:A(["dropin-price-summary__price","dropin-price-summary__price--muted"])})]}),t&&e(p,{node:t,className:"cart-mini-cart__footer__ctas"})]})]}):e(p,{node:u,className:"cart-mini-cart__empty-cart"})]})},Y=({children:N,initialData:s=null,routeProduct:u,routeCart:g,routeCheckout:o,routeEmptyCartCTA:d,...y})=>{var v,x;const[t,m]=T(s),[I,z]=T(new Set),a=(v=M.config)==null?void 0:v.shoppingCartDisplaySetting,b=(r,c)=>{z(h=>(r?h.add(c):h.delete(c),new Set(h)))};S(()=>{const r=F.on("cart/data",c=>{m(c)},{eager:!0});return()=>{r==null||r.off()}},[]);const n=j({cartLink:"Cart.MiniCart.cartLink",checkoutLink:"Cart.MiniCart.checkoutLink",discountedPrice:"Cart.CartItem.discountedPrice",heading:"Cart.MiniCart.heading",message:"Cart.CartItem.message",recipient:"Cart.CartItem.recipient",regularPrice:"Cart.CartItem.regularPrice",sender:"Cart.CartItem.sender",file:"Cart.CartItem.file",files:"Cart.CartItem.files"}),Q=(r,c)=>{b(!0,r),K([{uid:r,quantity:c}]).finally(()=>{b(!1,r)})};return S(()=>{s&&Object.keys(s).length>0&&J(s,M.locale||"en-US")},[s]),e(W,{...y,heading:e("div",{children:n.heading.replace("{count}",((t==null?void 0:t.totalQuantity)??0).toString())}),emptyCart:e(R,{ctaLinkURL:d==null?void 0:d()}),subtotal:(t==null?void 0:t.subtotal)&&((a==null?void 0:a.subtotal)==="INCLUDING_TAX"||(a==null?void 0:a.subtotal)==="INCLUDING_EXCLUDING_TAX"?e(i,{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"}}):e(i,{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"}})),subtotalExcludingTaxes:(t==null?void 0:t.subtotal)&&((a==null?void 0:a.subtotal)==="INCLUDING_EXCLUDING_TAX"?e(i,{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),ctas:l("div",{children:[o&&e(O,{variant:"primary",href:o(),children:n.checkoutLink}),g&&e(O,{variant:"tertiary",href:g(),children:n.cartLink})]}),products:(t==null?void 0:t.totalQuantity)??0?e(B,{children:(x=t==null?void 0:t.miniCartMaxItems)==null?void 0:x.map((r,c)=>{var f,k,C,U,P,w,D,E,G,X;const h=I.has(r.uid),L={...r.bundleOptions??{},...r.selectedOptions??{},...r.customizableOptions,...r.recipient?{[n.recipient]:r.recipient}:{},...r.recipientEmail&&r.recipient?{[n.recipient]:`${r.recipient} (${r.recipientEmail})`}:{},...r.sender?{[n.sender]:r.sender}:{},...r.senderEmail&&r.sender?{[n.sender]:`${r.sender} (${r.senderEmail})`}:{},...r.message?{[n.message]:r.message}:{},...r.links&&r.links.count?r.links.count>1?{[n.files.replace("{count}",r.links.count.toString())]:r.links.result}:{[n.file.replace("{count}",r.links.count.toString())]:r.links.result}:{}};return e(H,{"data-testid":"cart-item",updating:h,taxIncluded:(a==null?void 0:a.price)==="INCLUDING_TAX",taxExcluded:(a==null?void 0:a.price)==="INCLUDING_EXCLUDING_TAX",image:u?e("a",{href:u(r),children:e($,{loading:c<4?"eager":"lazy",src:r.image.src,alt:r.image.alt,width:"300",height:"300",params:{width:300}})}):e($,{loading:c<4?"eager":"lazy",src:r.image.src,alt:r.image.alt,width:"300",height:"300",params:{width:300}}),title:e("span",{children:u?e("a",{href:u(r),children:r.name}):r.name}),sku:e("span",{children:r.sku}),configurations:Object.keys(L).length>0?L:void 0,quantity:r.quantity,price:(a==null?void 0:a.price)==="INCLUDING_TAX"?e(i,{amount:r.discounted?(f=r.regularPrice)==null?void 0:f.value:(k=r.taxedPrice)==null?void 0:k.value,currency:r.discounted?(C=r.regularPrice)==null?void 0:C.currency:(U=r.taxedPrice)==null?void 0:U.currency,style:{font:"inherit"},"data-testid":"including-tax-item-price"}):e(i,{amount:(P=r.regularPrice)==null?void 0:P.value,currency:(w=r.regularPrice)==null?void 0:w.currency,style:{font:"inherit"},"data-testid":"regular-item-price"}),total:(a==null?void 0:a.price)==="INCLUDING_EXCLUDING_TAX"||(a==null?void 0:a.price)==="INCLUDING_TAX"?e(_,{children:r.discounted?l(_,{children:[e(i,{amount:r.total.value,currency:r.total.currency,variant:"strikethrough","data-testid":"including-tax-row-total","aria-label":n.regularPrice}),e(i,{amount:(D=r.rowTotalIncludingTax)==null?void 0:D.value,currency:(E=r.rowTotalIncludingTax)==null?void 0:E.currency,sale:r.discounted,"data-testid":"discount-total","aria-label":n.discountedPrice})]}):e(i,{amount:r.rowTotalIncludingTax.value,currency:r.rowTotalIncludingTax.currency,"data-testid":"including-tax-row-total","aria-label":n.regularPrice})}):l(_,{children:[e(i,{amount:r.total.value,currency:r.total.currency,variant:r.discounted?"strikethrough":"default","data-testid":"regular-total","aria-label":n.regularPrice}),r.discounted&&e(i,{amount:(G=r.discountedTotal)==null?void 0:G.value,currency:(X=r.discountedTotal)==null?void 0:X.currency,sale:r.discounted,"data-testid":"discount-total","aria-label":n.discountedPrice})]}),totalExcludingTax:(a==null?void 0:a.price)==="INCLUDING_EXCLUDING_TAX"?e(i,{amount:r.rowTotal.value,currency:r.rowTotal.currency,"data-testid":"excluding-tax-total","aria-label":n.regularPrice}):void 0,onRemove:()=>{Q(r.uid,0)}},r.uid)})}):void 0})};Y.getInitialData=async function(){return q()};export{Y as MiniCart,Y as default};
|
|
2
2
|
//# sourceMappingURL=MiniCart.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MiniCart.js","sources":["../../src/components/MiniCart/MiniCart.tsx","../../src/containers/MiniCart/MiniCart.tsx"],"sourcesContent":["import { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { VComponent, classes } from '@adobe/elsie/lib';\nimport { Divider } from '@adobe/elsie/components';\nimport { useText } from '@adobe/elsie/i18n';\n\nimport '@/cart/components/MiniCart/MiniCart.css';\n\nexport interface MiniCartProps extends HTMLAttributes<HTMLDivElement> {\n emptyCart: VNode;\n heading?: VNode;\n products?: VNode;\n estimatedTotal?: VNode;\n ctas?: VNode;\n}\n\nexport const MiniCart: FunctionComponent<MiniCartProps> = ({\n className,\n children,\n emptyCart,\n heading,\n products,\n estimatedTotal,\n ctas,\n ...props\n}) => {\n const dictionary = useText({\n estimatedTotal: 'Cart.MiniCart.estimatedTotal',\n });\n\n return (\n <div {...props} className={classes(['cart-mini-cart', className])}>\n {/* Heading */}\n {products && heading && (\n <div className=\"cart-mini-cart__heading\">\n <VComponent node={heading} className=\"cart-mini-cart__heading-text\" />\n\n <Divider\n variant=\"primary\"\n className=\"cart-mini-cart__heading-divider\"\n />\n </div>\n )}\n\n {/* Content */}\n {products ? (\n <>\n <div className=\"cart-mini-cart__products\">{products}</div>\n\n <div className=\"cart-mini-cart__footer\">\n {estimatedTotal && (\n <div className=\"cart-mini-cart__footer__estimated-total\">\n {dictionary.estimatedTotal}\n <VComponent node={estimatedTotal} />\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 <VComponent node={emptyCart} className=\"cart-mini-cart__empty-cart\" />\n )}\n </div>\n );\n};\n","import { HTMLAttributes, useEffect, useState } from 'preact/compat';\nimport { Container } from '@adobe/elsie/lib';\nimport { CartModel } from '@/cart/data/models';\nimport { getPersistedData } from '@/cart/lib/persisted-data';\nimport { events } from '@adobe/event-bus';\nimport { EmptyCart, MiniCart as MiniCartComponent } from '@/cart/components';\nimport { useText } from '@adobe/elsie/i18n';\nimport {\n Button,\n CartItem,\n CartList,\n Image,\n Price,\n} from '@adobe/elsie/components';\nimport { updateProductsFromCart } from '@/cart/api';\nimport { publishShoppingCartViewEvent } 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}\n\nexport const MiniCart: Container<MiniCartProps, CartModel | null> = ({\n children,\n initialData = null,\n routeProduct,\n routeCart,\n routeCheckout,\n routeEmptyCartCTA,\n ...props\n}) => {\n const [data, setData] = useState<CartModel | null>(initialData);\n const [itemsLoading, setItemLoading] = useState<Set<string>>(new Set());\n\n const handleItemsLoading = (state: boolean, uid: string) => {\n setItemLoading((prev) => {\n state ? prev.add(uid) : prev.delete(uid);\n return new Set(prev);\n });\n };\n\n useEffect(() => {\n const event = events.on(\n 'cart/data',\n (payload) => {\n setData(payload);\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 discountedPrice: 'Cart.CartItem.discountedPrice',\n heading: 'Cart.MiniCart.heading',\n message: 'Cart.CartItem.message',\n recipient: 'Cart.CartItem.recipient',\n regularPrice: 'Cart.CartItem.regularPrice',\n sender: 'Cart.CartItem.sender',\n file: 'Cart.CartItem.file',\n files: 'Cart.CartItem.files',\n });\n\n const handleItemQuantityUpdate = (uid: string, quantity: number) => {\n handleItemsLoading(true, uid);\n\n updateProductsFromCart([{ uid, quantity }]).finally(() => {\n handleItemsLoading(false, uid);\n });\n };\n\n // Publish shopping cart view event only once when the component is mounted and initialData is available\n useEffect(() => {\n if (initialData && Object.keys(initialData).length > 0) {\n publishShoppingCartViewEvent(initialData, state.locale || 'en-US');\n }\n }, [initialData]);\n\n return (\n <MiniCartComponent\n {...props}\n heading={\n <div>\n {dictionary.heading.replace(\n '{count}',\n (data?.totalQuantity ?? 0).toString()\n )}\n </div>\n }\n emptyCart={<EmptyCart ctaLinkURL={routeEmptyCartCTA?.()} />}\n estimatedTotal={\n data?.total && (\n <Price\n amount={data?.total.value}\n currency={data?.total.currency}\n style={{ font: 'inherit' }}\n />\n )\n }\n ctas={\n <div>\n {routeCheckout && (\n <Button variant=\"primary\" href={routeCheckout()}>\n {dictionary.checkoutLink}\n </Button>\n )}\n {routeCart && (\n <Button variant=\"tertiary\" href={routeCart()}>\n {dictionary.cartLink}\n </Button>\n )}\n </div>\n }\n products={\n data?.totalQuantity ?? 0 ? (\n <CartList>\n {data?.miniCartMaxItems?.map((item, index) => {\n const isLoading = itemsLoading.has(item.uid);\n\n const configurations = {\n ...(item.bundleOptions ?? {}),\n ...(item.selectedOptions ?? {}),\n ...item.customizableOptions,\n ...(item.recipient\n ? { [dictionary.recipient]: item.recipient }\n : {}),\n ...(item.recipientEmail && item.recipient\n ? {\n [dictionary.recipient]: `${item.recipient} (${item.recipientEmail})`,\n }\n : {}),\n ...(item.sender ? { [dictionary.sender]: item.sender } : {}),\n ...(item.senderEmail && item.sender\n ? {\n [dictionary.sender]: `${item.sender} (${item.senderEmail})`,\n }\n : {}),\n ...(item.message ? { [dictionary.message]: item.message } : {}),\n ...(item.links && item.links.count\n ? item.links.count > 1\n ? {\n [dictionary.files.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {\n [dictionary.file.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {}),\n };\n\n return (\n <CartItem\n data-testid=\"cart-item\"\n key={item.uid}\n updating={isLoading}\n image={\n routeProduct ? (\n <a href={routeProduct(item)}>\n <Image\n loading={index < 4 ? 'eager' : 'lazy'}\n src={item.image.src}\n alt={item.image.alt}\n width=\"300\"\n height=\"300\"\n params={{ width: 300 }}\n />\n </a>\n ) : (\n <Image\n loading={index < 4 ? 'eager' : 'lazy'}\n src={item.image.src}\n alt={item.image.alt}\n width=\"300\"\n height=\"300\"\n params={{ width: 300 }}\n />\n )\n }\n title={\n <span>\n {routeProduct ? (\n <a href={routeProduct(item)}>{item.name}</a>\n ) : (\n item.name\n )}\n </span>\n }\n sku={<span>{item.sku}</span>}\n configurations={\n Object.keys(configurations).length > 0\n ? configurations\n : undefined\n }\n quantity={item.quantity}\n price={\n <Price\n amount={item.regularPrice?.value}\n currency={item.regularPrice?.currency}\n weight=\"normal\"\n />\n }\n total={\n <>\n <Price\n amount={item.total.value}\n currency={item.total.currency}\n variant={item.discounted ? 'strikethrough' : 'default'}\n data-testid=\"regular-total\"\n aria-label={dictionary.regularPrice}\n />\n\n {item.discounted && (\n <Price\n amount={item.discountedTotal?.value}\n currency={item.discountedTotal?.currency}\n sale={item.discounted}\n data-testid=\"discount-total\"\n aria-label={dictionary.discountedPrice}\n />\n )}\n </>\n }\n onRemove={() => {\n handleItemQuantityUpdate(item.uid, 0);\n }}\n />\n );\n })}\n </CartList>\n ) : undefined\n }\n />\n );\n};\n\nMiniCart.getInitialData = async function () {\n return getPersistedData();\n};\n"],"names":["MiniCart","className","children","emptyCart","heading","products","estimatedTotal","ctas","props","dictionary","useText","_jsxs","classes","_jsx","VComponent","node","Divider","variant","_Fragment","initialData","routeProduct","routeCart","routeCheckout","routeEmptyCartCTA","data","setData","useState","itemsLoading","setItemLoading","Set","handleItemsLoading","state","uid","prev","add","delete","useEffect","event","events","on","payload","eager","off","cartLink","checkoutLink","discountedPrice","message","recipient","regularPrice","sender","file","files","handleItemQuantityUpdate","quantity","updateProductsFromCart","finally","Object","keys","length","locale","MiniCartComponent","replace","totalQuantity","toString","EmptyCart","ctaLinkURL","total","Price","amount","value","currency","style","font","Button","href","CartList","miniCartMaxItems","map","item","index","isLoading","has","configurations","bundleOptions","selectedOptions","customizableOptions","recipientEmail","senderEmail","links","count","result","CartItem","updating","image","Image","loading","src","alt","width","height","params","title","name","sku","undefined","price","weight","discounted","discountedTotal","sale","onRemove","getInitialData","getPersistedData"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MiniCart.js","sources":["../../src/components/MiniCart/MiniCart.tsx","../../src/containers/MiniCart/MiniCart.tsx"],"sourcesContent":["import { FunctionComponent, VNode } from 'preact';\nimport { HTMLAttributes } from 'preact/compat';\nimport { VComponent, classes } from '@adobe/elsie/lib';\nimport { Divider } from '@adobe/elsie/components';\nimport { useText } from '@adobe/elsie/i18n';\n\nimport '@/cart/components/MiniCart/MiniCart.css';\n\nexport interface MiniCartProps extends HTMLAttributes<HTMLDivElement> {\n emptyCart: VNode;\n heading?: VNode;\n products?: VNode;\n subtotal?: VNode;\n subtotalExcludingTaxes?: VNode;\n ctas?: VNode;\n}\n\nexport const MiniCart: FunctionComponent<MiniCartProps> = ({\n className,\n children,\n emptyCart,\n heading,\n products,\n subtotal,\n subtotalExcludingTaxes,\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 {/* Heading */}\n {products && heading && (\n <div className=\"cart-mini-cart__heading\">\n <VComponent node={heading} className=\"cart-mini-cart__heading-text\" />\n\n <Divider\n variant=\"primary\"\n className=\"cart-mini-cart__heading-divider\"\n />\n </div>\n )}\n\n {/* Content */}\n {products ? (\n <>\n <div className=\"cart-mini-cart__products\">{products}</div>\n\n <div className=\"cart-mini-cart__footer\">\n {subtotal && (\n <div className=\"cart-mini-cart__footer__estimated-total\">\n {dictionary.subtotal}\n <VComponent node={subtotal} />\n </div>\n )}\n {subtotalExcludingTaxes && (\n <div className=\"cart-mini-cart__footer__estimated-total-excluding-taxes\">\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 {ctas && (\n <VComponent\n node={ctas}\n className=\"cart-mini-cart__footer__ctas\"\n />\n )}\n </div>\n </>\n ) : (\n <VComponent node={emptyCart} className=\"cart-mini-cart__empty-cart\" />\n )}\n </div>\n );\n};\n","import { HTMLAttributes, useEffect, useState } from 'preact/compat';\nimport { Container } from '@adobe/elsie/lib';\nimport { CartModel } from '@/cart/data/models';\nimport { getPersistedData } from '@/cart/lib/persisted-data';\nimport { events } from '@adobe/event-bus';\nimport { EmptyCart, MiniCart as MiniCartComponent } from '@/cart/components';\nimport { useText } from '@adobe/elsie/i18n';\nimport {\n Button,\n CartItem,\n CartList,\n Image,\n Price,\n} from '@adobe/elsie/components';\nimport { updateProductsFromCart } from '@/cart/api';\nimport { publishShoppingCartViewEvent } 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}\n\nexport const MiniCart: Container<MiniCartProps, CartModel | null> = ({\n children,\n initialData = null,\n routeProduct,\n routeCart,\n routeCheckout,\n routeEmptyCartCTA,\n ...props\n}) => {\n const [data, setData] = useState<CartModel | null>(initialData);\n const [itemsLoading, setItemLoading] = useState<Set<string>>(new Set());\n const cartTaxesConfig = state.config?.shoppingCartDisplaySetting;\n\n const handleItemsLoading = (state: boolean, uid: string) => {\n setItemLoading((prev) => {\n state ? prev.add(uid) : prev.delete(uid);\n return new Set(prev);\n });\n };\n\n useEffect(() => {\n const event = events.on(\n 'cart/data',\n (payload) => {\n setData(payload);\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 discountedPrice: 'Cart.CartItem.discountedPrice',\n heading: 'Cart.MiniCart.heading',\n message: 'Cart.CartItem.message',\n recipient: 'Cart.CartItem.recipient',\n regularPrice: 'Cart.CartItem.regularPrice',\n sender: 'Cart.CartItem.sender',\n file: 'Cart.CartItem.file',\n files: 'Cart.CartItem.files',\n });\n\n const handleItemQuantityUpdate = (uid: string, quantity: number) => {\n handleItemsLoading(true, uid);\n\n updateProductsFromCart([{ uid, quantity }]).finally(() => {\n handleItemsLoading(false, uid);\n });\n };\n\n // Publish shopping cart view event only once when the component is mounted and initialData is available\n useEffect(() => {\n if (initialData && Object.keys(initialData).length > 0) {\n publishShoppingCartViewEvent(initialData, state.locale || 'en-US');\n }\n }, [initialData]);\n\n return (\n <MiniCartComponent\n {...props}\n heading={\n <div>\n {dictionary.heading.replace(\n '{count}',\n (data?.totalQuantity ?? 0).toString()\n )}\n </div>\n }\n emptyCart={<EmptyCart ctaLinkURL={routeEmptyCartCTA?.()} />}\n subtotal={\n data?.subtotal &&\n (cartTaxesConfig?.subtotal === 'INCLUDING_TAX' ||\n cartTaxesConfig?.subtotal === 'INCLUDING_EXCLUDING_TAX' ? (\n <Price\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 <Price\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 }\n subtotalExcludingTaxes={\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 ctas={\n <div>\n {routeCheckout && (\n <Button variant=\"primary\" href={routeCheckout()}>\n {dictionary.checkoutLink}\n </Button>\n )}\n {routeCart && (\n <Button variant=\"tertiary\" href={routeCart()}>\n {dictionary.cartLink}\n </Button>\n )}\n </div>\n }\n products={\n data?.totalQuantity ?? 0 ? (\n <CartList>\n {data?.miniCartMaxItems?.map((item, index) => {\n const isLoading = itemsLoading.has(item.uid);\n\n const configurations = {\n ...(item.bundleOptions ?? {}),\n ...(item.selectedOptions ?? {}),\n ...item.customizableOptions,\n ...(item.recipient\n ? { [dictionary.recipient]: item.recipient }\n : {}),\n ...(item.recipientEmail && item.recipient\n ? {\n [dictionary.recipient]: `${item.recipient} (${item.recipientEmail})`,\n }\n : {}),\n ...(item.sender ? { [dictionary.sender]: item.sender } : {}),\n ...(item.senderEmail && item.sender\n ? {\n [dictionary.sender]: `${item.sender} (${item.senderEmail})`,\n }\n : {}),\n ...(item.message ? { [dictionary.message]: item.message } : {}),\n ...(item.links && item.links.count\n ? item.links.count > 1\n ? {\n [dictionary.files.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {\n [dictionary.file.replace(\n '{count}',\n item.links.count.toString()\n )]: item.links.result,\n }\n : {}),\n };\n\n return (\n <CartItem\n data-testid=\"cart-item\"\n key={item.uid}\n updating={isLoading}\n taxIncluded={cartTaxesConfig?.price === 'INCLUDING_TAX'}\n taxExcluded={\n cartTaxesConfig?.price === 'INCLUDING_EXCLUDING_TAX'\n }\n image={\n routeProduct ? (\n <a href={routeProduct(item)}>\n <Image\n loading={index < 4 ? 'eager' : 'lazy'}\n src={item.image.src}\n alt={item.image.alt}\n width=\"300\"\n height=\"300\"\n params={{ width: 300 }}\n />\n </a>\n ) : (\n <Image\n loading={index < 4 ? 'eager' : 'lazy'}\n src={item.image.src}\n alt={item.image.alt}\n width=\"300\"\n height=\"300\"\n params={{ width: 300 }}\n />\n )\n }\n title={\n <span>\n {routeProduct ? (\n <a href={routeProduct(item)}>{item.name}</a>\n ) : (\n item.name\n )}\n </span>\n }\n sku={<span>{item.sku}</span>}\n configurations={\n Object.keys(configurations).length > 0\n ? configurations\n : undefined\n }\n quantity={item.quantity}\n price={\n cartTaxesConfig?.price === 'INCLUDING_TAX' ? (\n <Price\n amount={\n item.discounted\n ? item.regularPrice?.value\n : item.taxedPrice?.value\n }\n currency={\n item.discounted\n ? item.regularPrice?.currency\n : item.taxedPrice?.currency\n }\n style={{ font: 'inherit' }}\n data-testid=\"including-tax-item-price\"\n />\n ) : (\n <Price\n amount={item.regularPrice?.value}\n currency={item.regularPrice?.currency}\n style={{ font: 'inherit' }}\n data-testid=\"regular-item-price\"\n />\n )\n }\n total={\n cartTaxesConfig?.price === 'INCLUDING_EXCLUDING_TAX' ||\n cartTaxesConfig?.price === 'INCLUDING_TAX' ? (\n <>\n {item.discounted ? (\n <>\n <Price\n amount={item.total.value}\n currency={item.total.currency}\n variant={'strikethrough'}\n data-testid=\"including-tax-row-total\"\n aria-label={dictionary.regularPrice}\n />\n <Price\n amount={item.rowTotalIncludingTax?.value}\n currency={item.rowTotalIncludingTax?.currency}\n sale={item.discounted}\n data-testid=\"discount-total\"\n aria-label={dictionary.discountedPrice}\n />\n </>\n ) : (\n <Price\n amount={item.rowTotalIncludingTax.value}\n currency={item.rowTotalIncludingTax.currency}\n data-testid=\"including-tax-row-total\"\n aria-label={dictionary.regularPrice}\n />\n )}\n </>\n ) : (\n <>\n <Price\n amount={item.total.value}\n currency={item.total.currency}\n variant={\n item.discounted ? 'strikethrough' : 'default'\n }\n data-testid=\"regular-total\"\n aria-label={dictionary.regularPrice}\n />\n\n {item.discounted && (\n <Price\n amount={item.discountedTotal?.value}\n currency={item.discountedTotal?.currency}\n sale={item.discounted}\n data-testid=\"discount-total\"\n aria-label={dictionary.discountedPrice}\n />\n )}\n </>\n )\n }\n totalExcludingTax={\n cartTaxesConfig?.price === 'INCLUDING_EXCLUDING_TAX' ? (\n <Price\n amount={item.rowTotal.value}\n currency={item.rowTotal.currency}\n data-testid=\"excluding-tax-total\"\n aria-label={dictionary.regularPrice}\n />\n ) : undefined\n }\n onRemove={() => {\n handleItemQuantityUpdate(item.uid, 0);\n }}\n />\n );\n })}\n </CartList>\n ) : undefined\n }\n />\n );\n};\n\nMiniCart.getInitialData = async function () {\n return getPersistedData();\n};\n"],"names":["MiniCart","className","children","emptyCart","heading","products","subtotal","subtotalExcludingTaxes","ctas","props","dictionary","useText","_jsxs","classes","_jsx","VComponent","node","Divider","variant","_Fragment","initialData","routeProduct","routeCart","routeCheckout","routeEmptyCartCTA","data","setData","useState","itemsLoading","setItemLoading","Set","cartTaxesConfig","state","config","shoppingCartDisplaySetting","handleItemsLoading","uid","prev","add","delete","useEffect","event","events","on","payload","eager","off","cartLink","checkoutLink","discountedPrice","message","recipient","regularPrice","sender","file","files","handleItemQuantityUpdate","quantity","updateProductsFromCart","finally","Object","keys","length","locale","MiniCartComponent","replace","totalQuantity","toString","EmptyCart","ctaLinkURL","Price","amount","includingTax","value","currency","style","font","excludingTax","undefined","Button","href","CartList","miniCartMaxItems","map","item","index","isLoading","has","configurations","bundleOptions","selectedOptions","customizableOptions","recipientEmail","senderEmail","links","count","result","CartItem","updating","taxIncluded","price","taxExcluded","image","Image","loading","src","alt","width","height","params","title","name","sku","discounted","taxedPrice","total","rowTotalIncludingTax","sale","discountedTotal","totalExcludingTax","rowTotal","onRemove","getInitialData","getPersistedData"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name": "@dropins/storefront-cart", "version": "0.1.1-
|
|
1
|
+
{"name": "@dropins/storefront-cart", "version": "0.1.1-alpha83", "@dropins/tools": "0.24.0-alpha3"}
|
package/render.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
(function(i,r){try{if(typeof document<"u"){const a=document.createElement("style"),n=r.styleId;for(const t in r.attributes)a.setAttribute(t,r.attributes[t]);a.setAttribute("data-dropin",n),a.appendChild(document.createTextNode(i));const e=document.querySelector('style[data-dropin="sdk"]');if(e)e.after(a);else{const t=document.querySelector('link[rel="stylesheet"], style');t?t.before(a):document.head.append(a)}}}catch(a){console.error("dropin-styles (injectCodeFunction)",a)}})(".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-cart{container-type:inline-size;container-name:cart}.cart-cart__wrapper{display:grid;grid-template-rows:auto 1fr;grid-gap:var(--spacing-medium)}.cart-cart__heading{display:grid;row-gap:var(--spacing-xsmall);padding:var(--spacing-medium);padding-bottom:0;font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);color:var(--color-neutral-800)}.cart-cart__heading-divider{width:100%;margin:var(--spacing-xxsmall) 0 0 0}.cart-cart__content{display:grid;grid-template-columns:1fr;padding:0 var(--spacing-medium)}.cart-cart__empty-cart{justify-self:center;align-self:center;width:100%;max-width:800px}.cart-cart__price-summary{padding:var(--spacing-small) var(--spacing-medium);background-color:var(--color-neutral-200)}.dropin-price-summary__shipping--zip,.dropin-price-summary__shipping--state{background-color:var(--color-neutral-50)}@container cart (width >= 1024px){.cart-cart__wrapper{grid-template-columns:repeat(var(--grid-3-columns),1fr);grid-column-gap:var(--grid-3-gutters);margin:0 var(--grid-3-margins)}.cart-cart__heading{padding:var(--spacing-medium) 0 0 0}.cart-cart__content{padding:0}.cart-cart__heading,.cart-cart__content{grid-column:1 / span 8}.cart-cart__price-summary{grid-row:1 / span 3;grid-column:9 / span 4;padding:var(--spacing-medium);height:min-content}.cart-cart__heading--full-width,.cart-cart__content--empty,.cart-cart__content--full-width{grid-column:1 / span 12}}.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-top:var(--spacing-medium);padding-bottom:var(--spacing-medium)}.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)}.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__ctas{display:grid;grid-auto-flow:row;gap:var(--spacing-xsmall)}",{styleId:"Cart"});
|
|
2
|
-
import{deepmerge as
|
|
1
|
+
(function(i,r){try{if(typeof document<"u"){const a=document.createElement("style"),n=r.styleId;for(const t in r.attributes)a.setAttribute(t,r.attributes[t]);a.setAttribute("data-dropin",n),a.appendChild(document.createTextNode(i));const e=document.querySelector('style[data-dropin="sdk"]');if(e)e.after(a);else{const t=document.querySelector('link[rel="stylesheet"], style');t?t.before(a):document.head.append(a)}}}catch(a){console.error("dropin-styles (injectCodeFunction)",a)}})(".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-cart{container-type:inline-size;container-name:cart}.cart-cart__wrapper{display:grid;grid-template-rows:auto 1fr;grid-gap:var(--spacing-medium)}.cart-cart__heading{display:grid;row-gap:var(--spacing-xsmall);padding:var(--spacing-medium);padding-bottom:0;font:var(--type-headline-1-font);letter-spacing:var(--type-headline-1-letter-spacing);color:var(--color-neutral-800)}.cart-cart__heading-divider{width:100%;margin:var(--spacing-xxsmall) 0 0 0}.cart-cart__content{display:grid;grid-template-columns:1fr;padding:0 var(--spacing-medium)}.cart-cart__empty-cart{justify-self:center;align-self:center;width:100%;max-width:800px}.cart-cart__price-summary{padding:var(--spacing-small) var(--spacing-medium);background-color:var(--color-neutral-200)}.dropin-price-summary__shipping--zip,.dropin-price-summary__shipping--state{background-color:var(--color-neutral-50)}@container cart (width >= 1024px){.cart-cart__wrapper{grid-template-columns:repeat(var(--grid-3-columns),1fr);grid-column-gap:var(--grid-3-gutters);margin:0 var(--grid-3-margins)}.cart-cart__heading{padding:var(--spacing-medium) 0 0 0}.cart-cart__content{padding:0}.cart-cart__heading,.cart-cart__content{grid-column:1 / span 8}.cart-cart__price-summary{grid-row:1 / span 3;grid-column:9 / span 4;padding:var(--spacing-medium);height:min-content}.cart-cart__heading--full-width,.cart-cart__content--empty,.cart-cart__content--full-width{grid-column:1 / span 12}}.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-top:var(--spacing-medium);padding-bottom:var(--spacing-medium)}.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__footer__ctas{display:grid;grid-auto-flow:row;gap:var(--spacing-xsmall);padding-top:var(--spacing-small)}",{styleId:"Cart"});
|
|
2
|
+
import{deepmerge as l,Render as p}from"@dropins/tools/lib.js";import{useState as u,useEffect as f}from"@dropins/tools/preact-hooks.js";import{UIProvider as g}from"@dropins/tools/components.js";import{events as m}from"@dropins/tools/event-bus.js";import{c as d}from"./chunks/getStoreConfig.js";import{jsx as r}from"@dropins/tools/preact-jsx-runtime.js";import"@dropins/tools/fetch-graphql.js";const h={Cart:{heading:"Shopping Cart"},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",estimatedShippingForm:{country:{placeholder:"Country"},state:{placeholder:"State"},zip:{placeholder:"Zip Code"},apply:{label:"Apply"}},freeShipping:"Free"},CartItem:{discountedPrice:"Discounted Price",download:"file",message:"Note",recipient:"To",regularPrice:"Regular Price",sender:"From",file:"{count} file",files:"{count} files"}},C={Cart:h},S={default:C},x=({children:n})=>{var o;const[e,a]=u(),c=(o=d.getConfig())==null?void 0:o.langDefinitions;f(()=>{const t=m.on("locale",i=>{i!==e&&a(i)},{eager:!0});return()=>{t==null||t.off()}},[e]);const s=l(S,c??{});return r(g,{lang:e,langDefinitions:s,children:n})},w=new p(r(x,{}));export{w as render};
|
|
3
3
|
//# sourceMappingURL=render.js.map
|
package/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sources":["../src/render/Provider.tsx","../src/render/render.tsx"],"sourcesContent":["import { FunctionComponent } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { UIProvider } from '@adobe/elsie/components';\nimport { Lang } from '@adobe/elsie/i18n';\nimport { events } from '@adobe/event-bus';\nimport { config } from '../api';\nimport { deepmerge } from '@adobe/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","import { Render } from '@adobe/elsie/lib';\nimport { Provider } from './Provider';\n\nexport const render = new Render(<Provider />);\n"],"names":["langDefinitions","default","en_US","Provider","children","locale","setLang","useState","userLangDefinitions","config","getConfig","useEffect","localeEvent","events","on","payload","eager","off","definitions","deepmerge","_jsx","UIProvider","lang","render","Render"],"mappings":"
|
|
1
|
+
{"version":3,"file":"render.js","sources":["../src/render/Provider.tsx","../src/render/render.tsx"],"sourcesContent":["import { FunctionComponent } from 'preact';\nimport { useState, useEffect } from 'preact/hooks';\nimport { UIProvider } from '@adobe/elsie/components';\nimport { Lang } from '@adobe/elsie/i18n';\nimport { events } from '@adobe/event-bus';\nimport { config } from '../api';\nimport { deepmerge } from '@adobe/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","import { Render } from '@adobe/elsie/lib';\nimport { Provider } from './Provider';\n\nexport const render = new Render(<Provider />);\n"],"names":["langDefinitions","default","en_US","Provider","children","locale","setLang","useState","userLangDefinitions","config","getConfig","useEffect","localeEvent","events","on","payload","eager","off","definitions","deepmerge","_jsx","UIProvider","lang","render","Render"],"mappings":"iiCAWMA,EAAkB,CACtBC,QAASC,CACX,EAMaC,EAAiDA,CAAC,CAC7DC,SAAAA,CACF,IAAM,OACJ,KAAM,CAACC,EAAQC,CAAO,EAAIC,EAAe,EAEnCC,GAAsBC,EAAAA,EAAOC,UAAAA,IAAPD,YAAAA,EAAoBT,gBAGhDW,EAAU,IAAM,CACd,MAAMC,EAAcC,EAAOC,GACzB,SACaC,GAAA,CACPA,IAAYV,GAAQC,EAAQS,CAAgB,CAAA,EAElD,CAAEC,MAAO,EAAA,CACX,EACA,MAAO,IAAM,CACXJ,GAAAA,MAAAA,EAAaK,KAAI,CACnB,EACC,CAACZ,CAAM,CAAC,EAGX,MAAMa,EAAcC,EAAUnB,EAAiBQ,GAAuB,CAAE,CAAA,EAExE,OACEY,EAACC,EAAU,CAACC,KAAMjB,EAAQL,gBAAiBkB,EAAYd,SAAAA,CAAAA,CAE3C,CAEhB,EC7CamB,EAAS,IAAIC,EAAOJ,EAACjB,EAAU,CAAA,CAAA,CAAC"}
|
|
@@ -1,39 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|