@dropins/storefront-cart 0.1.0 → 0.1.1-alpha68

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/api/addProductsToCart/addProductsToCart.d.ts +13 -0
  2. package/api/addProductsToCart/addProductsToCart.d.ts.map +1 -0
  3. package/api/addProductsToCart/graphql/AddProductsToCartMutation.d.ts +2 -0
  4. package/api/addProductsToCart/graphql/AddProductsToCartMutation.d.ts.map +1 -0
  5. package/api/addProductsToCart/index.d.ts +2 -0
  6. package/api/addProductsToCart/index.d.ts.map +1 -0
  7. package/api/createEmptyCart/createEmptyCart.d.ts +2 -0
  8. package/api/createEmptyCart/createEmptyCart.d.ts.map +1 -0
  9. package/api/createEmptyCart/graphql/CreateCartMutation.d.ts +2 -0
  10. package/api/createEmptyCart/graphql/CreateCartMutation.d.ts.map +1 -0
  11. package/api/createEmptyCart/index.d.ts +2 -0
  12. package/api/createEmptyCart/index.d.ts.map +1 -0
  13. package/api/fetch-graphql/fetch-graphql.d.ts +8 -0
  14. package/api/fetch-graphql/fetch-graphql.d.ts.map +1 -0
  15. package/api/fetch-graphql/index.d.ts +2 -0
  16. package/api/fetch-graphql/index.d.ts.map +1 -0
  17. package/api/getCartData/getCartData.d.ts +4 -0
  18. package/api/getCartData/getCartData.d.ts.map +1 -0
  19. package/api/getCartData/graphql/CartQuery.d.ts +3 -0
  20. package/api/getCartData/graphql/CartQuery.d.ts.map +1 -0
  21. package/api/getCartData/index.d.ts +2 -0
  22. package/api/getCartData/index.d.ts.map +1 -0
  23. package/api/getEstimateShipping/getEstimateShipping.d.ts +16 -0
  24. package/api/getEstimateShipping/getEstimateShipping.d.ts.map +1 -0
  25. package/api/getEstimateShipping/graphql/countriesAndRegionsQueries.d.ts +12 -0
  26. package/api/getEstimateShipping/graphql/countriesAndRegionsQueries.d.ts.map +1 -0
  27. package/api/getEstimateShipping/graphql/estimateShippingMethodsMutation.d.ts +2 -0
  28. package/api/getEstimateShipping/graphql/estimateShippingMethodsMutation.d.ts.map +1 -0
  29. package/api/getEstimateShipping/index.d.ts +2 -0
  30. package/api/getEstimateShipping/index.d.ts.map +1 -0
  31. package/api/getStoreConfig/getStoreConfig.d.ts +4 -0
  32. package/api/getStoreConfig/getStoreConfig.d.ts.map +1 -0
  33. package/api/getStoreConfig/graphql/StoreConfigQuery.d.ts +2 -0
  34. package/api/getStoreConfig/graphql/StoreConfigQuery.d.ts.map +1 -0
  35. package/api/getStoreConfig/index.d.ts +2 -0
  36. package/api/getStoreConfig/index.d.ts.map +1 -0
  37. package/api/graphql/CartFragment.d.ts +3 -0
  38. package/api/graphql/CartFragment.d.ts.map +1 -0
  39. package/api/index.d.ts +11 -0
  40. package/api/index.d.ts.map +1 -0
  41. package/api/initialize/index.d.ts +2 -0
  42. package/api/initialize/index.d.ts.map +1 -0
  43. package/api/initialize/initialize.d.ts +11 -0
  44. package/api/initialize/initialize.d.ts.map +1 -0
  45. package/api/initializeCart/graphql/MergeCartsMutation.d.ts +2 -0
  46. package/api/initializeCart/graphql/MergeCartsMutation.d.ts.map +1 -0
  47. package/api/initializeCart/index.d.ts +2 -0
  48. package/api/initializeCart/index.d.ts.map +1 -0
  49. package/api/initializeCart/initializeCart.d.ts +4 -0
  50. package/api/initializeCart/initializeCart.d.ts.map +1 -0
  51. package/api/resetCart/index.d.ts +2 -0
  52. package/api/resetCart/index.d.ts.map +1 -0
  53. package/api/resetCart/resetCart.d.ts +4 -0
  54. package/api/resetCart/resetCart.d.ts.map +1 -0
  55. package/api/updateProductsFromCart/graphql/UpdateProductsMutation.d.ts +2 -0
  56. package/api/updateProductsFromCart/graphql/UpdateProductsMutation.d.ts.map +1 -0
  57. package/api/updateProductsFromCart/index.d.ts +2 -0
  58. package/api/updateProductsFromCart/index.d.ts.map +1 -0
  59. package/api/updateProductsFromCart/updateProductsFromCart.d.ts +9 -0
  60. package/api/updateProductsFromCart/updateProductsFromCart.d.ts.map +1 -0
  61. package/api.d.ts +1 -0
  62. package/api.js +26 -1
  63. package/api.js.map +1 -0
  64. package/chunks/MiniCart.js +2 -0
  65. package/chunks/MiniCart.js.map +1 -0
  66. package/chunks/getEstimateShipping.js +39 -0
  67. package/chunks/getEstimateShipping.js.map +1 -0
  68. package/chunks/getStoreConfig.js +253 -0
  69. package/chunks/getStoreConfig.js.map +1 -0
  70. package/chunks/updateProductsFromCart.js +21 -0
  71. package/chunks/updateProductsFromCart.js.map +1 -0
  72. package/components/Cart/Cart.d.ts +11 -0
  73. package/components/Cart/Cart.d.ts.map +1 -0
  74. package/components/Cart/index.d.ts +3 -0
  75. package/components/Cart/index.d.ts.map +1 -0
  76. package/components/EmptyCart/EmptyCart.d.ts +8 -0
  77. package/components/EmptyCart/EmptyCart.d.ts.map +1 -0
  78. package/components/EmptyCart/index.d.ts +3 -0
  79. package/components/EmptyCart/index.d.ts.map +1 -0
  80. package/components/MiniCart/MiniCart.d.ts +12 -0
  81. package/components/MiniCart/MiniCart.d.ts.map +1 -0
  82. package/components/MiniCart/index.d.ts +3 -0
  83. package/components/MiniCart/index.d.ts.map +1 -0
  84. package/components/index.d.ts +4 -0
  85. package/components/index.d.ts.map +1 -0
  86. package/containers/Cart/Cart.d.ts +15 -0
  87. package/containers/Cart/Cart.d.ts.map +1 -0
  88. package/containers/Cart/index.d.ts +3 -0
  89. package/containers/Cart/index.d.ts.map +1 -0
  90. package/containers/Cart.d.ts +3 -0
  91. package/containers/Cart.js +2 -1
  92. package/containers/Cart.js.map +1 -0
  93. package/containers/MiniCart/MiniCart.d.ts +12 -0
  94. package/containers/MiniCart/MiniCart.d.ts.map +1 -0
  95. package/containers/MiniCart/index.d.ts +3 -0
  96. package/containers/MiniCart/index.d.ts.map +1 -0
  97. package/containers/MiniCart.d.ts +3 -0
  98. package/containers/MiniCart.js +2 -1
  99. package/containers/MiniCart.js.map +1 -0
  100. package/containers/index.d.ts +3 -0
  101. package/containers/index.d.ts.map +1 -0
  102. package/data/models/acdl-models.d.ts +73 -0
  103. package/data/models/acdl-models.d.ts.map +1 -0
  104. package/data/models/cart-model.d.ts +82 -0
  105. package/data/models/cart-model.d.ts.map +1 -0
  106. package/data/models/index.d.ts +3 -0
  107. package/data/models/index.d.ts.map +1 -0
  108. package/data/models/store-models.d.ts +13 -0
  109. package/data/models/store-models.d.ts.map +1 -0
  110. package/data/transforms/__fixtures__/cartModel.d.ts +4 -0
  111. package/data/transforms/__fixtures__/cartModel.d.ts.map +1 -0
  112. package/data/transforms/__fixtures__/productTypesData.d.ts +640 -0
  113. package/data/transforms/__fixtures__/productTypesData.d.ts.map +1 -0
  114. package/data/transforms/acdl-context.d.ts +11 -0
  115. package/data/transforms/acdl-context.d.ts.map +1 -0
  116. package/data/transforms/index.d.ts +3 -0
  117. package/data/transforms/index.d.ts.map +1 -0
  118. package/data/transforms/transform-cart.d.ts +4 -0
  119. package/data/transforms/transform-cart.d.ts.map +1 -0
  120. package/data/transforms/transform-store-config.d.ts +4 -0
  121. package/data/transforms/transform-store-config.d.ts.map +1 -0
  122. package/hooks/index.d.ts +2 -0
  123. package/hooks/index.d.ts.map +1 -0
  124. package/hooks/useEstimatedShipping.d.ts +26 -0
  125. package/hooks/useEstimatedShipping.d.ts.map +1 -0
  126. package/i18n/en_US.json.d.ts +49 -0
  127. package/lib/acdl.d.ts +26 -0
  128. package/lib/acdl.d.ts.map +1 -0
  129. package/lib/cookies.d.ts +2 -0
  130. package/lib/cookies.d.ts.map +1 -0
  131. package/lib/fetch-error.d.ts +8 -0
  132. package/lib/fetch-error.d.ts.map +1 -0
  133. package/lib/persisted-data.d.ts +5 -0
  134. package/lib/persisted-data.d.ts.map +1 -0
  135. package/lib/state.d.ts +11 -0
  136. package/lib/state.d.ts.map +1 -0
  137. package/package.json +1 -1
  138. package/render/Provider.d.ts +8 -0
  139. package/render/Provider.d.ts.map +1 -0
  140. package/render/index.d.ts +2 -0
  141. package/render/index.d.ts.map +1 -0
  142. package/render/render.d.ts +4 -0
  143. package/render/render.d.ts.map +1 -0
  144. package/render.d.ts +1 -0
  145. package/render.js +3 -1
  146. package/render.js.map +1 -0
  147. package/108.js +0 -1
  148. package/12.js +0 -1
  149. package/148.js +0 -1
  150. package/176.js +0 -1
  151. package/180.js +0 -1
  152. package/220.js +0 -1
  153. package/328.js +0 -1
  154. package/388.js +0 -1
  155. package/4.js +0 -1
  156. package/424.js +0 -1
  157. package/456.js +0 -1
  158. package/484.js +0 -1
  159. package/488.js +0 -1
  160. package/524.js +0 -1
  161. package/543.js +0 -1
  162. package/604.js +0 -1
  163. package/664.js +0 -1
  164. package/680.js +0 -1
  165. package/728.js +0 -1
  166. package/756.js +0 -1
  167. package/764.js +0 -1
  168. package/772.js +0 -1
  169. package/805.js +0 -1
  170. package/820.js +0 -1
  171. package/824.js +0 -1
  172. package/832.js +0 -1
  173. package/844.js +0 -1
  174. package/868.js +0 -1
  175. package/916.js +0 -1
  176. package/920.js +0 -1
  177. package/928.js +0 -1
  178. package/940.js +0 -1
  179. package/984.js +0 -1
  180. package/992.js +0 -1
  181. package/996.js +0 -1
  182. package/runtime.js +0 -1
@@ -0,0 +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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"}
@@ -0,0 +1,12 @@
1
+ import { HTMLAttributes } from 'preact/compat';
2
+ import { Container } from '@dropins/tools/types/elsie/src/lib';
3
+ import { CartModel } from '../../data/models';
4
+
5
+ export interface MiniCartProps extends HTMLAttributes<HTMLDivElement> {
6
+ routeProduct?: (item: CartModel['items'][0]) => string;
7
+ routeCart?: () => string;
8
+ routeCheckout?: () => string;
9
+ routeEmptyCartCTA?: () => string;
10
+ }
11
+ export declare const MiniCart: Container<MiniCartProps, CartModel | null>;
12
+ //# sourceMappingURL=MiniCart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MiniCart.d.ts","sourceRoot":"","sources":["../../../src/containers/MiniCart/MiniCart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAuB,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAgB/C,MAAM,WAAW,aAAc,SAAQ,cAAc,CAAC,cAAc,CAAC;IACnE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;IACvD,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,MAAM,CAAC;CAClC;AAED,eAAO,MAAM,QAAQ,EAAE,SAAS,CAAC,aAAa,EAAE,SAAS,GAAG,IAAI,CA6N/D,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './MiniCart';
2
+ export { MiniCart as default } from './MiniCart';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/containers/MiniCart/index.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,MAAM,qCAAqC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './MiniCart/index'
2
+ import _default from './MiniCart/index'
3
+ export default _default
@@ -1 +1,2 @@
1
- import*as t from"@dropins/tools/event-bus.js";import*as e from"@dropins/tools/fetch-graphql.js";export const id=836;export const ids=[836];export const modules={5416:(t,e,r)=>{r.d(e,{Y:()=>R,c:()=>R});var n=r(2796),i=r(2336),a=r(8122),o=r(4944),c=r(1044),l=r(5092),s=r(2460),d=r(5536),u=r.n(d),m=r(7008),p=r.n(m),f=r(1496),v=r.n(f),y=r(9356),g=r.n(y),h=r(9904),b=r.n(h),w=r(5984),O={attributes:{"data-dropin":"storefront-cart","data-sdk":"0.21.0"},styleTagTransform:function(t,e){window._loadedStyles=window._loadedStyles??{};const r=t?.match(/^\.dropin-(\w+)/)?.[1],n=e.getAttribute("data-sdk"),i=r?`sdk/${r}`:e.getAttribute("data-dropin");e.setAttribute("data-dropin",i),e.removeAttribute("data-sdk");const a=window._loadedStyles[i];if(a){const i=function(t,e){const[r,n]=t.split("-"),[i,a]=e.split("-"),o=[...r.split("."),n],c=[...i.split("."),a],l=parseInt(o[0],10),s=parseInt(c[0],10);if(l!==s)return l>s?t:e;const d=parseInt(o[1],10),u=parseInt(c[1],10);if(d!==u)return d>u?t:e;const m=parseInt(o[2],10),p=parseInt(c[2],10);if(m!==p)return m>p?t:e;if(o[3]&&c[3]){const r=/(alpha|beta)(.*)/,n=o[3].match(r),i=c[3].match(r),a=n[1],l=i[1],s=parseInt(n[2],10),d=parseInt(i[2],10);if(a===l)return s>d?t:e;if("alpha"===a&&"beta"===l)return e;if("beta"===a&&"alpha"===l)return t}return o[3]?e:t}(n,a.sdk);if(!r||r&&i===a.sdk){const e=a.style.textContent;a.style.textContent=`${e}\n/* --- MERGED --- */\n${t}`}else r&&i!==a.sdk&&(a.style.textContent=`/* --- UPGRADED --- */\n${t}`);return void e.remove()}e.textContent=t,window._loadedStyles[i]={sdk:n,core:r,style:e};const o=document.querySelector("head"),{lastDropinStyleInjected:c,lastSDKStyleInjected:l}=window._loadedStyles;r?(l?o.insertBefore(e,l.nextSibling):o.insertBefore(e,o.firstChild),window._loadedStyles.lastSDKStyleInjected=e):(c?o.insertBefore(e,c.nextSibling):l?o.insertBefore(e,l.nextSibling):o.insertBefore(e,o.firstChild),window._loadedStyles.lastDropinStyleInjected=e)}};O.setAttributes=g(),O.insert=v().bind(null,"head"),O.domAPI=p(),O.insertStyleElement=b();u()(w.c,O);w.c&&w.c.locals&&w.c.locals;var j=r(8412),_=["className","children","emptyCart","heading","products","estimatedTotal","ctas"];function P(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function C(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?P(Object(r),!0).forEach((function(e){x(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):P(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function x(t,e,r){var n;return(e="symbol"==typeof(n=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(e,"string"))?n:String(n))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function S(t,e){if(null==t)return{};var r,n,i=function(t,e){if(null==t)return{};var r,n,i={},a=Object.keys(t);for(n=0;n<a.length;n++)r=a[n],e.indexOf(r)>=0||(i[r]=t[r]);return i}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(n=0;n<a.length;n++)r=a[n],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(i[r]=t[r])}return i}var k=t=>{var{className:e,children:r,emptyCart:n,heading:i,products:a,estimatedTotal:d,ctas:u}=t,m=S(t,_),p=(0,s.cF)({estimatedTotal:"Cart.MiniCart.estimatedTotal"});return(0,j.YH)("div",C(C({},m),{},{className:(0,o.i)(["cart-mini-cart",e]),children:[a&&i&&(0,j.YH)("div",{className:"cart-mini-cart__heading",children:[(0,j.im)(c.o,{node:i,className:"cart-mini-cart__heading-text"}),(0,j.im)(l.c,{variant:"primary",className:"cart-mini-cart__heading-divider"})]}),a?(0,j.YH)(j.ae,{children:[(0,j.im)("div",{className:"cart-mini-cart__products",children:a}),(0,j.YH)("div",{className:"cart-mini-cart__footer",children:[d&&(0,j.YH)("div",{className:"cart-mini-cart__footer__estimated-total",children:[p.estimatedTotal,(0,j.im)(c.o,{node:d})]}),u&&(0,j.im)(c.o,{node:u,className:"cart-mini-cart__footer__ctas"})]})]}):(0,j.im)(c.o,{node:n,className:"cart-mini-cart__empty-cart"})]}))},I=r(3912),D=r(8920),T=r(2872),Y=r(3604),E=r(4168),N=r(4072),A=r(1580),L=r(7192),M=r(7218),q=["children","initialData","routeProduct","routeCart","routeCheckout","routeEmptyCartCTA"];function B(t,e,r,n,i,a,o){try{var c=t[a](o),l=c.value}catch(t){return void r(t)}c.done?e(l):Promise.resolve(l).then(n,i)}function H(t){return function(){var e=this,r=arguments;return new Promise((function(n,i){var a=t.apply(e,r);function o(t){B(a,n,i,o,c,"next",t)}function c(t){B(a,n,i,o,c,"throw",t)}o(void 0)}))}}function z(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),r.push.apply(r,n)}return r}function Q(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?z(Object(r),!0).forEach((function(e){F(t,e,r[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):z(Object(r)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))}))}return t}function F(t,e,r){var n;return(e="symbol"==typeof(n=function(t,e){if("object"!=typeof t||!t)return t;var r=t[Symbol.toPrimitive];if(void 0!==r){var n=r.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(e,"string"))?n:String(n))in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function G(t,e){if(null==t)return{};var r,n,i=function(t,e){if(null==t)return{};var r,n,i={},a=Object.keys(t);for(n=0;n<a.length;n++)r=a[n],e.indexOf(r)>=0||(i[r]=t[r]);return i}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(n=0;n<a.length;n++)r=a[n],e.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(t,r)&&(i[r]=t[r])}return i}var R=t=>{var e,r,i,{children:o,initialData:c=null,routeProduct:l,routeCart:d,routeCheckout:u,routeEmptyCartCTA:m}=t,p=G(t,q),[f,v]=(0,n.oT)(c),[y,g]=(0,n.oT)(new Set),h=(t,e)=>{g((r=>(t?r.add(e):r.delete(e),new Set(r))))};(0,n.YB)((()=>{var t=a.events.on("cart/data",(t=>{v(t)}),{eager:!0});return()=>{null==t||t.off()}}),[]);var b=(0,s.cF)({heading:"Cart.MiniCart.heading",regularPrice:"Cart.CartItem.regularPrice",discountedPrice:"Cart.CartItem.discountedPrice",checkoutLink:"Cart.MiniCart.checkoutLink",cartLink:"Cart.MiniCart.cartLink"});return(0,n.YB)((()=>{c&&Object.keys(c).length>0&&(0,L.Ws)(c,M.K.locale||"en-US")}),[c]),(0,j.im)(k,Q(Q({},p),{},{heading:(0,j.im)("div",{children:b.heading.replace("{count}",(null!==(e=null==f?void 0:f.totalQuantity)&&void 0!==e?e:0).toString())}),emptyCart:(0,j.im)(I.Q,{ctaLinkURL:null==m?void 0:m()}),estimatedTotal:(null==f?void 0:f.total)&&(0,j.im)(D.Y,{amount:null==f?void 0:f.total.value,currency:null==f?void 0:f.total.currency,style:{font:"inherit"}}),ctas:(0,j.YH)("div",{children:[u&&(0,j.im)(T.q,{variant:"primary",href:u(),children:b.checkoutLink}),d&&(0,j.im)(T.q,{variant:"tertiary",href:d(),children:b.cartLink})]}),products:null!==(r=null==f?void 0:f.totalQuantity)&&void 0!==r&&r?(0,j.im)(Y.A,{children:null==f||null===(i=f.miniCartMaxItems)||void 0===i?void 0:i.map(((t,e)=>{var r,n,i,a,o=y.has(t.uid);return(0,j.im)(E.Y,{updating:o,image:l?(0,j.im)("a",{href:l(t),children:(0,j.im)(N.W,{loading:e<4?"eager":"lazy",src:t.image.src,alt:t.image.alt,width:"300",height:"300",params:{width:300}})}):(0,j.im)(N.W,{loading:e<4?"eager":"lazy",src:t.image.src,alt:t.image.alt,width:"300",height:"300",params:{width:300}}),title:(0,j.im)("span",{children:l?(0,j.im)("a",{href:l(t),children:t.name}):t.name}),sku:(0,j.im)("span",{children:t.sku}),configurations:t.selectedOptions,quantity:t.quantity,price:(0,j.im)(D.Y,{amount:null===(r=t.regularPrice)||void 0===r?void 0:r.value,currency:null===(n=t.regularPrice)||void 0===n?void 0:n.currency,weight:"normal"}),total:(0,j.YH)(j.ae,{children:[(0,j.im)(D.Y,{amount:t.total.value,currency:t.total.currency,variant:t.discounted?"strikethrough":"default","data-testid":"regular-total","aria-label":b.regularPrice}),t.discounted&&(0,j.im)(D.Y,{amount:null===(i=t.discountedTotal)||void 0===i?void 0:i.value,currency:null===(a=t.discountedTotal)||void 0===a?void 0:a.currency,sale:t.discounted,"data-testid":"discount-total","aria-label":b.discountedPrice})]}),onRemove:()=>{var e,r;e=t.uid,r=0,h(!0,e),(0,A.E)([{uid:e,quantity:r}]).finally((()=>{h(!1,e)}))}},t.uid)}))}):void 0}))};R.getInitialData=H((function*(){return(0,i.u)()}))},5984:(t,e,r)=>{r.d(e,{c:()=>c});var n=r(6008),i=r.n(n),a=r(2076),o=r.n(a)()(i());o.push([t.id,".cart-mini-cart{\n display:flex;\n flex-direction:column;\n height:100%;\n padding:var(--spacing-small) var(--spacing-small) var(--spacing-medium);\n box-sizing:border-box;\n}\n\n.cart-mini-cart__empty-cart{\n width:100%;\n max-width:800px;\n height:100%;\n display:flex;\n flex-direction:column;\n justify-content:center;\n align-self:center;\n}\n\n.cart-mini-cart__heading{\n display:grid;\n row-gap:var(--spacing-xsmall);\n font:var(--type-headline-2-default-font);\n letter-spacing:var(--type-headline-2-default-letter-spacing);\n}\n\n.cart-mini-cart__heading-divider{\n width:100%;\n margin:var(--spacing-xxsmall) 0 0 0;\n}\n\n.cart-mini-cart__products{\n flex:1;\n overflow-y:auto;\n max-height:100%;\n padding-top:var(--spacing-medium);\n padding-bottom:var(--spacing-medium);\n}\n\n.cart-mini-cart__footer{\n display:grid;\n grid-auto-flow:row;\n gap:var(--spacing-small);\n padding-top:var(--spacing-small);\n}\n\n.cart-mini-cart__footer__estimated-total{\n font:var(--type-body-1-emphasized-font);\n letter-spacing:var(--type-body-1-emphasized-letter-spacing);\n display:grid;\n grid-template:max-content / 1fr auto;\n gap:var(--spacing-xsmall);\n}\n\n.cart-mini-cart__footer__ctas{\n display:grid;\n grid-auto-flow:row;\n gap:var(--spacing-xsmall);\n}\n",""]);const c=o},8122:(e,r,n)=>{e.exports=(t=>{var e={};return n.d(e,t),e})({events:()=>t.events})},8616:(t,r,n)=>{t.exports=(t=>{var e={};return n.d(e,t),e})({FetchGraphQL:()=>e.FetchGraphQL})}};import r from"../runtime.js";import*as n from"../756.js";r.C(n);import*as i from"../992.js";r.C(i);import*as a from"../928.js";r.C(a);import*as o from"../805.js";r.C(o);import*as c from"./MiniCart.js";r.C(c);var l,s=(l=5416,r(r.s=l)),d=s.Y,u=s.c;export{d as MiniCart,u as default};
1
+ import{useState as N,useEffect as b}from"@dropins/tools/preact-compat.js";import{s as j,n as E}from"../chunks/getStoreConfig.js";import{events as z}from"@dropins/tools/event-bus.js";import{E as Q}from"../chunks/MiniCart.js";import{classes as U,VComponent as g}from"@dropins/tools/lib.js";import{Divider as q,Price as m,Button as w,CartList as F,CartItem as R,Image as P}from"@dropins/tools/components.js";import{jsxs as i,jsx as r,Fragment as S}from"@dropins/tools/preact-jsx-runtime.js";import{useText as M}from"@dropins/tools/i18n.js";import{b as T,u as V}from"../chunks/updateProductsFromCart.js";import"@dropins/tools/fetch-graphql.js";const B=({className:f,children:c,emptyCart:s,heading:d,products:l,estimatedTotal:o,ctas:h,...a})=>{const p=M({estimatedTotal:"Cart.MiniCart.estimatedTotal"});return i("div",{...a,className:U(["cart-mini-cart",f]),children:[l&&d&&i("div",{className:"cart-mini-cart__heading",children:[r(g,{node:d,className:"cart-mini-cart__heading-text"}),r(q,{variant:"primary",className:"cart-mini-cart__heading-divider"})]}),l?i(S,{children:[r("div",{className:"cart-mini-cart__products",children:l}),i("div",{className:"cart-mini-cart__footer",children:[o&&i("div",{className:"cart-mini-cart__footer__estimated-total",children:[p.estimatedTotal,r(g,{node:o})]}),h&&r(g,{node:h,className:"cart-mini-cart__footer__ctas"})]})]}):r(g,{node:s,className:"cart-mini-cart__empty-cart"})]})},D=({children:f,initialData:c=null,routeProduct:s,routeCart:d,routeCheckout:l,routeEmptyCartCTA:o,...h})=>{var C;const[a,p]=N(c),[x,O]=N(new Set),y=(e,n)=>{O(u=>(e?u.add(n):u.delete(n),new Set(u)))};b(()=>{const e=z.on("cart/data",n=>{p(n)},{eager:!0});return()=>{e==null||e.off()}},[]);const t=M({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"}),$=(e,n)=>{y(!0,e),V([{uid:e,quantity:n}]).finally(()=>{y(!1,e)})};return b(()=>{c&&Object.keys(c).length>0&&T(c,j.locale||"en-US")},[c]),r(B,{...h,heading:r("div",{children:t.heading.replace("{count}",((a==null?void 0:a.totalQuantity)??0).toString())}),emptyCart:r(Q,{ctaLinkURL:o==null?void 0:o()}),estimatedTotal:(a==null?void 0:a.total)&&r(m,{amount:a==null?void 0:a.total.value,currency:a==null?void 0:a.total.currency,style:{font:"inherit"}}),ctas:i("div",{children:[l&&r(w,{variant:"primary",href:l(),children:t.checkoutLink}),d&&r(w,{variant:"tertiary",href:d(),children:t.cartLink})]}),products:(a==null?void 0:a.totalQuantity)??0?r(F,{children:(C=a==null?void 0:a.miniCartMaxItems)==null?void 0:C.map((e,n)=>{var _,v,I,L;const u=x.has(e.uid),k={...e.bundleOptions??{},...e.selectedOptions??{},...e.customizableOptions,...e.recipient?{[t.recipient]:e.recipient}:{},...e.recipientEmail&&e.recipient?{[t.recipient]:`${e.recipient} (${e.recipientEmail})`}:{},...e.sender?{[t.sender]:e.sender}:{},...e.senderEmail&&e.sender?{[t.sender]:`${e.sender} (${e.senderEmail})`}:{},...e.message?{[t.message]:e.message}:{},...e.links&&e.links.count?e.links.count>1?{[t.files.replace("{count}",e.links.count.toString())]:e.links.result}:{[t.file.replace("{count}",e.links.count.toString())]:e.links.result}:{}};return r(R,{"data-testid":"cart-item",updating:u,image:s?r("a",{href:s(e),children:r(P,{loading:n<4?"eager":"lazy",src:e.image.src,alt:e.image.alt,width:"300",height:"300",params:{width:300}})}):r(P,{loading:n<4?"eager":"lazy",src:e.image.src,alt:e.image.alt,width:"300",height:"300",params:{width:300}}),title:r("span",{children:s?r("a",{href:s(e),children:e.name}):e.name}),sku:r("span",{children:e.sku}),configurations:Object.keys(k).length>0?k:void 0,quantity:e.quantity,price:r(m,{amount:(_=e.regularPrice)==null?void 0:_.value,currency:(v=e.regularPrice)==null?void 0:v.currency,weight:"normal"}),total:i(S,{children:[r(m,{amount:e.total.value,currency:e.total.currency,variant:e.discounted?"strikethrough":"default","data-testid":"regular-total","aria-label":t.regularPrice}),e.discounted&&r(m,{amount:(I=e.discountedTotal)==null?void 0:I.value,currency:(L=e.discountedTotal)==null?void 0:L.currency,sale:e.discounted,"data-testid":"discount-total","aria-label":t.discountedPrice})]}),onRemove:()=>{$(e.uid,0)}},e.uid)})}):void 0})};D.getInitialData=async function(){return E()};export{D as MiniCart,D as default};
2
+ //# sourceMappingURL=MiniCart.js.map
@@ -0,0 +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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"}
@@ -0,0 +1,3 @@
1
+ export * from './Cart';
2
+ export * from './MiniCart';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/containers/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * ACDL Shopping Cart Types copied over from:
3
+ * https://github.com/adobe/commerce-events/blob/main/packages/storefront-events-sdk/src/types/schemas/shoppingCart.ts
4
+ */
5
+ export type ShoppingCartContext = {
6
+ id: string | null;
7
+ items?: Array<ShoppingCartItem>;
8
+ prices?: {
9
+ subtotalExcludingTax?: Price;
10
+ subtotalIncludingTax?: Price;
11
+ };
12
+ totalQuantity: number;
13
+ possibleOnepageCheckout?: boolean;
14
+ giftMessageSelected?: boolean;
15
+ giftWrappingSelected?: boolean;
16
+ source?: string;
17
+ };
18
+ export type ChangedProductsContext = {
19
+ items?: ShoppingCartItem[];
20
+ };
21
+ export type Price = {
22
+ value: number;
23
+ currency?: string;
24
+ regularPrice?: number;
25
+ };
26
+ export type Product = {
27
+ productId: number;
28
+ name: string;
29
+ sku: string;
30
+ topLevelSku?: string | null;
31
+ specialToDate?: string | null;
32
+ specialFromDate?: string | null;
33
+ newToDate?: string | null;
34
+ newFromDate?: string | null;
35
+ createdAt?: string | null;
36
+ updatedAt?: string | null;
37
+ manufacturer?: string | null;
38
+ countryOfManufacture?: string | null;
39
+ categories?: string[] | null;
40
+ productType?: string | null;
41
+ pricing?: {
42
+ regularPrice: number;
43
+ minimalPrice?: number;
44
+ maximalPrice?: number;
45
+ specialPrice?: number;
46
+ tierPricing?: {
47
+ customerGroupId?: number | null;
48
+ qty: number;
49
+ value: number;
50
+ }[];
51
+ currencyCode: string | null;
52
+ };
53
+ canonicalUrl?: string | null;
54
+ mainImageUrl?: string | null;
55
+ };
56
+ export type ShoppingCartItem = {
57
+ canApplyMsrp: boolean;
58
+ formattedPrice: string;
59
+ id: string;
60
+ prices: {
61
+ price: Price;
62
+ };
63
+ product: Product;
64
+ configurableOptions?: Array<ConfigurableOption>;
65
+ quantity: number;
66
+ };
67
+ export type ConfigurableOption = {
68
+ id: number;
69
+ optionLabel: string;
70
+ valueId: number;
71
+ valueLabel: string;
72
+ };
73
+ //# sourceMappingURL=acdl-models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acdl-models.d.ts","sourceRoot":"","sources":["../../../src/data/models/acdl-models.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,mBAAmB,GAAG;IAChC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,CAAC,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE;QACP,oBAAoB,CAAC,EAAE,KAAK,CAAC;QAC7B,oBAAoB,CAAC,EAAE,KAAK,CAAC;KAC9B,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,KAAK,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,OAAO,CAAC,EAAE;QACR,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,WAAW,CAAC,EAAE;YACZ,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;YAChC,GAAG,EAAE,MAAM,CAAC;YACZ,KAAK,EAAE,MAAM,CAAC;SACf,EAAE,CAAC;QACJ,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KAC7B,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE;QACN,KAAK,EAAE,KAAK,CAAC;KACd,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;IACjB,mBAAmB,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAChD,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC"}
@@ -0,0 +1,82 @@
1
+ export interface CartModel {
2
+ id: string;
3
+ totalQuantity: number;
4
+ errors?: ItemError[];
5
+ items: Item[];
6
+ miniCartMaxItems: Item[];
7
+ total: Price;
8
+ discount?: Price;
9
+ subtotal: {
10
+ excludingTax: Price;
11
+ includingTax: Price;
12
+ includingDiscountOnly: Price;
13
+ };
14
+ appliedTaxes: TotalPriceModifier[];
15
+ totalTax?: Price;
16
+ appliedDiscounts: TotalPriceModifier[];
17
+ shipping?: Price;
18
+ isVirtual?: boolean;
19
+ addresses: {
20
+ shipping?: {
21
+ countryCode: string;
22
+ zipCode?: string;
23
+ regionCode?: string;
24
+ }[];
25
+ };
26
+ }
27
+ interface TotalPriceModifier {
28
+ amount: Price;
29
+ label: string;
30
+ }
31
+ export interface Item {
32
+ itemType: string;
33
+ uid: string;
34
+ url: ItemURL;
35
+ quantity: number;
36
+ sku: string;
37
+ name: string;
38
+ image: ItemImage;
39
+ links?: ItemLinks;
40
+ price: Price;
41
+ total: Price;
42
+ discountedTotal?: Price;
43
+ discount?: Price;
44
+ regularPrice: Price;
45
+ discounted: boolean;
46
+ bundleOptions?: {
47
+ [key: string]: any;
48
+ };
49
+ selectedOptions?: {
50
+ [key: string]: any;
51
+ };
52
+ customizableOptions?: {
53
+ [key: string]: any;
54
+ };
55
+ message?: string;
56
+ recipient?: string;
57
+ recipientEmail?: string;
58
+ sender?: string;
59
+ senderEmail?: string;
60
+ }
61
+ interface ItemError {
62
+ id: string;
63
+ text: string;
64
+ }
65
+ interface ItemImage {
66
+ src: string;
67
+ alt: string;
68
+ }
69
+ interface Price {
70
+ value: number;
71
+ currency: string;
72
+ }
73
+ interface ItemURL {
74
+ urlKey: string;
75
+ categories: string[];
76
+ }
77
+ interface ItemLinks {
78
+ count: number;
79
+ result: string;
80
+ }
81
+ export {};
82
+ //# sourceMappingURL=cart-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cart-model.d.ts","sourceRoot":"","sources":["../../../src/data/models/cart-model.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,gBAAgB,EAAE,IAAI,EAAE,CAAC;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,QAAQ,EAAE;QACR,YAAY,EAAE,KAAK,CAAC;QACpB,YAAY,EAAE,KAAK,CAAC;QACpB,qBAAqB,EAAE,KAAK,CAAC;KAC9B,CAAC;IACF,YAAY,EAAE,kBAAkB,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,gBAAgB,EAAE,kBAAkB,EAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE;QACT,QAAQ,CAAC,EAAE;YACT,WAAW,EAAE,MAAM,CAAC;YACpB,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,UAAU,CAAC,EAAE,MAAM,CAAC;SACrB,EAAE,CAAC;KACL,CAAC;CACH;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,KAAK,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,IAAI;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,eAAe,CAAC,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,YAAY,EAAE,KAAK,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACvC,eAAe,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACzC,mBAAmB,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,UAAU,SAAS;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,SAAS;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,OAAO;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,3 @@
1
+ export * from './cart-model';
2
+ export * from './store-models';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/data/models/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,13 @@
1
+ export interface StoreConfigModel {
2
+ displayMiniCart: boolean;
3
+ miniCartMaxItemsDisplay: number;
4
+ cartExpiresInDays: number;
5
+ cartSummaryDisplayTotal: number;
6
+ defaultCountry: string;
7
+ categoryFixedProductTaxDisplaySetting: string;
8
+ productFixedProductTaxDisplaySetting: string;
9
+ salesFixedProductTaxDisplaySetting: string;
10
+ shoppingCartDisplayZeroTax: boolean;
11
+ useConfigurableParentThumbnail: boolean;
12
+ }
13
+ //# sourceMappingURL=store-models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"store-models.d.ts","sourceRoot":"","sources":["../../../src/data/models/store-models.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,OAAO,CAAC;IACzB,uBAAuB,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,MAAM,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,qCAAqC,EAAE,MAAM,CAAC;IAC9C,oCAAoC,EAAE,MAAM,CAAC;IAC7C,kCAAkC,EAAE,MAAM,CAAC;IAC3C,0BAA0B,EAAE,OAAO,CAAC;IACpC,8BAA8B,EAAE,OAAO,CAAC;CACzC"}
@@ -0,0 +1,4 @@
1
+ import { CartModel } from '../../models/cart-model';
2
+
3
+ export declare const cart: CartModel;
4
+ //# sourceMappingURL=cartModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cartModel.d.ts","sourceRoot":"","sources":["../../../../src/data/transforms/__fixtures__/cartModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,eAAO,MAAM,IAAI,EAAE,SA2FlB,CAAC"}