@shopify/hydrogen-react 2022.7.0 → 2022.7.1

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 (261) hide show
  1. package/README.md +6 -4
  2. package/dist/dev/CartProvider.cjs +485 -0
  3. package/dist/dev/CartProvider.cjs.map +1 -0
  4. package/dist/dev/CartProvider.js +485 -0
  5. package/dist/dev/CartProvider.js.map +1 -0
  6. package/dist/dev/MediaFile.cjs.map +1 -1
  7. package/dist/dev/MediaFile.js.map +1 -1
  8. package/dist/dev/Metafield.cjs +2 -2
  9. package/dist/dev/Metafield.cjs.map +1 -1
  10. package/dist/dev/ModelViewer.cjs +4 -4
  11. package/dist/dev/ModelViewer.cjs.map +1 -1
  12. package/dist/dev/Money.cjs.map +1 -1
  13. package/dist/dev/Money.js.map +1 -1
  14. package/dist/dev/ProductPrice.cjs.map +1 -1
  15. package/dist/dev/ProductPrice.js.map +1 -1
  16. package/dist/dev/ProductProvider.cjs +14 -14
  17. package/dist/dev/ProductProvider.cjs.map +1 -1
  18. package/dist/dev/ShopPayButton.cjs.map +1 -1
  19. package/dist/dev/ShopPayButton.js.map +1 -1
  20. package/dist/dev/ShopifyProvider.cjs +4 -4
  21. package/dist/dev/ShopifyProvider.cjs.map +1 -1
  22. package/dist/dev/Video.cjs +2 -2
  23. package/dist/dev/_virtual/index.cjs +5 -0
  24. package/dist/dev/_virtual/index.cjs.map +1 -0
  25. package/dist/dev/_virtual/index.js +5 -0
  26. package/dist/dev/_virtual/index.js.map +1 -0
  27. package/dist/dev/_virtual/use-sync-external-store-shim.development.cjs +5 -0
  28. package/dist/dev/_virtual/use-sync-external-store-shim.development.cjs.map +1 -0
  29. package/dist/dev/_virtual/use-sync-external-store-shim.development.js +5 -0
  30. package/dist/dev/_virtual/use-sync-external-store-shim.development.js.map +1 -0
  31. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.cjs +5 -0
  32. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.cjs.map +1 -0
  33. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.js +5 -0
  34. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.js.map +1 -0
  35. package/dist/dev/_virtual/with-selector.cjs +5 -0
  36. package/dist/dev/_virtual/with-selector.cjs.map +1 -0
  37. package/dist/dev/_virtual/with-selector.development.cjs +5 -0
  38. package/dist/dev/_virtual/with-selector.development.cjs.map +1 -0
  39. package/dist/dev/_virtual/with-selector.development.js +5 -0
  40. package/dist/dev/_virtual/with-selector.development.js.map +1 -0
  41. package/dist/dev/_virtual/with-selector.js +5 -0
  42. package/dist/dev/_virtual/with-selector.js.map +1 -0
  43. package/dist/dev/_virtual/with-selector.production.min.cjs +5 -0
  44. package/dist/dev/_virtual/with-selector.production.min.cjs.map +1 -0
  45. package/dist/dev/_virtual/with-selector.production.min.js +5 -0
  46. package/dist/dev/_virtual/with-selector.production.min.js.map +1 -0
  47. package/dist/dev/cart-constants.cjs +17 -0
  48. package/dist/dev/cart-constants.cjs.map +1 -0
  49. package/dist/dev/cart-constants.js +17 -0
  50. package/dist/dev/cart-constants.js.map +1 -0
  51. package/dist/dev/cart-hooks.cjs +89 -0
  52. package/dist/dev/cart-hooks.cjs.map +1 -0
  53. package/dist/dev/cart-hooks.js +89 -0
  54. package/dist/dev/cart-hooks.js.map +1 -0
  55. package/dist/dev/cart-queries.cjs +216 -0
  56. package/dist/dev/cart-queries.cjs.map +1 -0
  57. package/dist/dev/cart-queries.js +216 -0
  58. package/dist/dev/cart-queries.js.map +1 -0
  59. package/dist/dev/flatten-connection.cjs +6 -0
  60. package/dist/dev/flatten-connection.cjs.map +1 -1
  61. package/dist/dev/flatten-connection.js +6 -0
  62. package/dist/dev/flatten-connection.js.map +1 -1
  63. package/dist/dev/index.cjs +6 -0
  64. package/dist/dev/index.cjs.map +1 -1
  65. package/dist/dev/index.js +6 -0
  66. package/dist/dev/index.js.map +1 -1
  67. package/dist/dev/load-script.cjs +3 -3
  68. package/dist/dev/load-script.cjs.map +1 -1
  69. package/dist/dev/node_modules/@xstate/fsm/es/index.cjs +158 -0
  70. package/dist/dev/node_modules/@xstate/fsm/es/index.cjs.map +1 -0
  71. package/dist/dev/node_modules/@xstate/fsm/es/index.js +159 -0
  72. package/dist/dev/node_modules/@xstate/fsm/es/index.js.map +1 -0
  73. package/dist/dev/node_modules/@xstate/react/es/fsm.cjs +94 -0
  74. package/dist/dev/node_modules/@xstate/react/es/fsm.cjs.map +1 -0
  75. package/dist/dev/node_modules/@xstate/react/es/fsm.js +94 -0
  76. package/dist/dev/node_modules/@xstate/react/es/fsm.js.map +1 -0
  77. package/dist/dev/node_modules/@xstate/react/es/useConstant.cjs +30 -0
  78. package/dist/dev/node_modules/@xstate/react/es/useConstant.cjs.map +1 -0
  79. package/dist/dev/node_modules/@xstate/react/es/useConstant.js +12 -0
  80. package/dist/dev/node_modules/@xstate/react/es/useConstant.js.map +1 -0
  81. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.cjs +5 -0
  82. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.cjs.map +1 -0
  83. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js +6 -0
  84. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +1 -0
  85. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.cjs +107 -0
  86. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.cjs.map +1 -0
  87. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +105 -0
  88. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -0
  89. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.cjs +74 -0
  90. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.cjs.map +1 -0
  91. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +72 -0
  92. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -0
  93. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs +138 -0
  94. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs.map +1 -0
  95. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +136 -0
  96. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -0
  97. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.cjs +60 -0
  98. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.cjs.map +1 -0
  99. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +58 -0
  100. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -0
  101. package/dist/dev/node_modules/use-sync-external-store/shim/index.cjs +21 -0
  102. package/dist/dev/node_modules/use-sync-external-store/shim/index.cjs.map +1 -0
  103. package/dist/dev/node_modules/use-sync-external-store/shim/index.js +21 -0
  104. package/dist/dev/node_modules/use-sync-external-store/shim/index.js.map +1 -0
  105. package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.cjs +12 -0
  106. package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.cjs.map +1 -0
  107. package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.js +11 -0
  108. package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -0
  109. package/dist/dev/node_modules/worktop/cookie/index.cjs +27 -0
  110. package/dist/dev/node_modules/worktop/cookie/index.cjs.map +1 -0
  111. package/dist/dev/node_modules/worktop/cookie/index.js +27 -0
  112. package/dist/dev/node_modules/worktop/cookie/index.js.map +1 -0
  113. package/dist/dev/useCartAPIStateMachine.cjs +326 -0
  114. package/dist/dev/useCartAPIStateMachine.cjs.map +1 -0
  115. package/dist/dev/useCartAPIStateMachine.js +326 -0
  116. package/dist/dev/useCartAPIStateMachine.js.map +1 -0
  117. package/dist/dev/useCartActions.cjs +123 -0
  118. package/dist/dev/useCartActions.cjs.map +1 -0
  119. package/dist/dev/useCartActions.js +123 -0
  120. package/dist/dev/useCartActions.js.map +1 -0
  121. package/dist/dev/useMoney.cjs +5 -5
  122. package/dist/dev/useMoney.cjs.map +1 -1
  123. package/dist/prod/CartProvider.cjs +485 -0
  124. package/dist/prod/CartProvider.cjs.map +1 -0
  125. package/dist/prod/CartProvider.js +485 -0
  126. package/dist/prod/CartProvider.js.map +1 -0
  127. package/dist/prod/MediaFile.cjs.map +1 -1
  128. package/dist/prod/MediaFile.js.map +1 -1
  129. package/dist/prod/Metafield.cjs +2 -2
  130. package/dist/prod/Metafield.cjs.map +1 -1
  131. package/dist/prod/ModelViewer.cjs +4 -4
  132. package/dist/prod/ModelViewer.cjs.map +1 -1
  133. package/dist/prod/Money.cjs.map +1 -1
  134. package/dist/prod/Money.js.map +1 -1
  135. package/dist/prod/ProductPrice.cjs.map +1 -1
  136. package/dist/prod/ProductPrice.js.map +1 -1
  137. package/dist/prod/ProductProvider.cjs +14 -14
  138. package/dist/prod/ProductProvider.cjs.map +1 -1
  139. package/dist/prod/ShopPayButton.cjs.map +1 -1
  140. package/dist/prod/ShopPayButton.js.map +1 -1
  141. package/dist/prod/ShopifyProvider.cjs +4 -4
  142. package/dist/prod/ShopifyProvider.cjs.map +1 -1
  143. package/dist/prod/Video.cjs +2 -2
  144. package/dist/prod/_virtual/index.cjs +5 -0
  145. package/dist/prod/_virtual/index.cjs.map +1 -0
  146. package/dist/prod/_virtual/index.js +5 -0
  147. package/dist/prod/_virtual/index.js.map +1 -0
  148. package/dist/prod/_virtual/use-sync-external-store-shim.development.cjs +5 -0
  149. package/dist/prod/_virtual/use-sync-external-store-shim.development.cjs.map +1 -0
  150. package/dist/prod/_virtual/use-sync-external-store-shim.development.js +5 -0
  151. package/dist/prod/_virtual/use-sync-external-store-shim.development.js.map +1 -0
  152. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.cjs +5 -0
  153. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.cjs.map +1 -0
  154. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.js +5 -0
  155. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.js.map +1 -0
  156. package/dist/prod/_virtual/with-selector.cjs +5 -0
  157. package/dist/prod/_virtual/with-selector.cjs.map +1 -0
  158. package/dist/prod/_virtual/with-selector.development.cjs +5 -0
  159. package/dist/prod/_virtual/with-selector.development.cjs.map +1 -0
  160. package/dist/prod/_virtual/with-selector.development.js +5 -0
  161. package/dist/prod/_virtual/with-selector.development.js.map +1 -0
  162. package/dist/prod/_virtual/with-selector.js +5 -0
  163. package/dist/prod/_virtual/with-selector.js.map +1 -0
  164. package/dist/prod/_virtual/with-selector.production.min.cjs +5 -0
  165. package/dist/prod/_virtual/with-selector.production.min.cjs.map +1 -0
  166. package/dist/prod/_virtual/with-selector.production.min.js +5 -0
  167. package/dist/prod/_virtual/with-selector.production.min.js.map +1 -0
  168. package/dist/prod/cart-constants.cjs +17 -0
  169. package/dist/prod/cart-constants.cjs.map +1 -0
  170. package/dist/prod/cart-constants.js +17 -0
  171. package/dist/prod/cart-constants.js.map +1 -0
  172. package/dist/prod/cart-hooks.cjs +89 -0
  173. package/dist/prod/cart-hooks.cjs.map +1 -0
  174. package/dist/prod/cart-hooks.js +89 -0
  175. package/dist/prod/cart-hooks.js.map +1 -0
  176. package/dist/prod/cart-queries.cjs +216 -0
  177. package/dist/prod/cart-queries.cjs.map +1 -0
  178. package/dist/prod/cart-queries.js +216 -0
  179. package/dist/prod/cart-queries.js.map +1 -0
  180. package/dist/prod/flatten-connection.cjs +7 -0
  181. package/dist/prod/flatten-connection.cjs.map +1 -1
  182. package/dist/prod/flatten-connection.js +7 -0
  183. package/dist/prod/flatten-connection.js.map +1 -1
  184. package/dist/prod/index.cjs +6 -0
  185. package/dist/prod/index.cjs.map +1 -1
  186. package/dist/prod/index.js +6 -0
  187. package/dist/prod/index.js.map +1 -1
  188. package/dist/prod/load-script.cjs +3 -3
  189. package/dist/prod/load-script.cjs.map +1 -1
  190. package/dist/prod/node_modules/@xstate/fsm/es/index.cjs +158 -0
  191. package/dist/prod/node_modules/@xstate/fsm/es/index.cjs.map +1 -0
  192. package/dist/prod/node_modules/@xstate/fsm/es/index.js +159 -0
  193. package/dist/prod/node_modules/@xstate/fsm/es/index.js.map +1 -0
  194. package/dist/prod/node_modules/@xstate/react/es/fsm.cjs +94 -0
  195. package/dist/prod/node_modules/@xstate/react/es/fsm.cjs.map +1 -0
  196. package/dist/prod/node_modules/@xstate/react/es/fsm.js +94 -0
  197. package/dist/prod/node_modules/@xstate/react/es/fsm.js.map +1 -0
  198. package/dist/prod/node_modules/@xstate/react/es/useConstant.cjs +30 -0
  199. package/dist/prod/node_modules/@xstate/react/es/useConstant.cjs.map +1 -0
  200. package/dist/prod/node_modules/@xstate/react/es/useConstant.js +12 -0
  201. package/dist/prod/node_modules/@xstate/react/es/useConstant.js.map +1 -0
  202. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.cjs +5 -0
  203. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.cjs.map +1 -0
  204. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js +6 -0
  205. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +1 -0
  206. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.cjs +107 -0
  207. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.cjs.map +1 -0
  208. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +105 -0
  209. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -0
  210. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.cjs +74 -0
  211. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.cjs.map +1 -0
  212. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +72 -0
  213. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -0
  214. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs +138 -0
  215. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs.map +1 -0
  216. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +136 -0
  217. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -0
  218. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.cjs +60 -0
  219. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.cjs.map +1 -0
  220. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +58 -0
  221. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -0
  222. package/dist/prod/node_modules/use-sync-external-store/shim/index.cjs +21 -0
  223. package/dist/prod/node_modules/use-sync-external-store/shim/index.cjs.map +1 -0
  224. package/dist/prod/node_modules/use-sync-external-store/shim/index.js +21 -0
  225. package/dist/prod/node_modules/use-sync-external-store/shim/index.js.map +1 -0
  226. package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.cjs +12 -0
  227. package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.cjs.map +1 -0
  228. package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.js +11 -0
  229. package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -0
  230. package/dist/prod/node_modules/worktop/cookie/index.cjs +27 -0
  231. package/dist/prod/node_modules/worktop/cookie/index.cjs.map +1 -0
  232. package/dist/prod/node_modules/worktop/cookie/index.js +27 -0
  233. package/dist/prod/node_modules/worktop/cookie/index.js.map +1 -0
  234. package/dist/prod/useCartAPIStateMachine.cjs +326 -0
  235. package/dist/prod/useCartAPIStateMachine.cjs.map +1 -0
  236. package/dist/prod/useCartAPIStateMachine.js +326 -0
  237. package/dist/prod/useCartAPIStateMachine.js.map +1 -0
  238. package/dist/prod/useCartActions.cjs +123 -0
  239. package/dist/prod/useCartActions.cjs.map +1 -0
  240. package/dist/prod/useCartActions.js +123 -0
  241. package/dist/prod/useCartActions.js.map +1 -0
  242. package/dist/prod/useMoney.cjs +5 -5
  243. package/dist/prod/useMoney.cjs.map +1 -1
  244. package/dist/types/CartProvider.d.ts +61 -0
  245. package/dist/types/MediaFile.d.ts +0 -1
  246. package/dist/types/Money.d.ts +1 -1
  247. package/dist/types/ProductPrice.d.ts +0 -1
  248. package/dist/types/cart-constants.d.ts +8 -0
  249. package/dist/types/cart-hooks.d.ts +24 -0
  250. package/dist/types/cart-queries.d.ts +10 -0
  251. package/dist/types/cart-types.d.ts +289 -0
  252. package/dist/types/flatten-connection.d.ts +3 -1
  253. package/dist/types/index.d.cts +3 -0
  254. package/dist/types/index.d.ts +3 -0
  255. package/dist/types/useCartAPIStateMachine.d.ts +25 -0
  256. package/dist/types/useCartActions.d.ts +64 -0
  257. package/dist/umd/hydrogen-react.dev.js +1949 -102
  258. package/dist/umd/hydrogen-react.dev.js.map +1 -1
  259. package/dist/umd/hydrogen-react.prod.js +339 -2
  260. package/dist/umd/hydrogen-react.prod.js.map +1 -1
  261. package/package.json +23 -12
@@ -0,0 +1,485 @@
1
+ import { createContext, useContext, useState, useRef, useEffect, useCallback, useMemo, useTransition } from "react";
2
+ import { useCartAPIStateMachine } from "./useCartAPIStateMachine.js";
3
+ import { CART_ID_STORAGE_KEY } from "./cart-constants.js";
4
+ import { jsx } from "react/jsx-runtime";
5
+ const CartContext = createContext(null);
6
+ function useCart() {
7
+ const context = useContext(CartContext);
8
+ if (!context) {
9
+ throw new Error("Expected a Cart Context, but no Cart Context was found");
10
+ }
11
+ return context;
12
+ }
13
+ function CartProvider({
14
+ children,
15
+ numCartLines,
16
+ onCreate,
17
+ onLineAdd,
18
+ onLineRemove,
19
+ onLineUpdate,
20
+ onNoteUpdate,
21
+ onBuyerIdentityUpdate,
22
+ onAttributesUpdate,
23
+ onDiscountCodesUpdate,
24
+ onCreateComplete,
25
+ onLineAddComplete,
26
+ onLineRemoveComplete,
27
+ onLineUpdateComplete,
28
+ onNoteUpdateComplete,
29
+ onBuyerIdentityUpdateComplete,
30
+ onAttributesUpdateComplete,
31
+ onDiscountCodesUpdateComplete,
32
+ data: cart,
33
+ cartFragment = defaultCartFragment,
34
+ customerAccessToken,
35
+ countryCode = "US"
36
+ }) {
37
+ var _a, _b, _c, _d, _e, _f, _g;
38
+ if (countryCode)
39
+ countryCode = countryCode.toUpperCase();
40
+ const [prevCountryCode, setPrevCountryCode] = useState(countryCode);
41
+ const [prevCustomerAccessToken, setPrevCustomerAccessToken] = useState(customerAccessToken);
42
+ const customerOverridesCountryCode = useRef(false);
43
+ if (prevCountryCode !== countryCode || prevCustomerAccessToken !== customerAccessToken) {
44
+ setPrevCountryCode(countryCode);
45
+ setPrevCustomerAccessToken(customerAccessToken);
46
+ customerOverridesCountryCode.current = false;
47
+ }
48
+ const [cartState, cartSend] = useCartAPIStateMachine({
49
+ numCartLines,
50
+ data: cart,
51
+ cartFragment,
52
+ countryCode,
53
+ onCartActionEntry(context, event) {
54
+ try {
55
+ switch (event.type) {
56
+ case "CART_CREATE":
57
+ return onCreate == null ? void 0 : onCreate();
58
+ case "CARTLINE_ADD":
59
+ return onLineAdd == null ? void 0 : onLineAdd();
60
+ case "CARTLINE_REMOVE":
61
+ return onLineRemove == null ? void 0 : onLineRemove();
62
+ case "CARTLINE_UPDATE":
63
+ return onLineUpdate == null ? void 0 : onLineUpdate();
64
+ case "NOTE_UPDATE":
65
+ return onNoteUpdate == null ? void 0 : onNoteUpdate();
66
+ case "BUYER_IDENTITY_UPDATE":
67
+ return onBuyerIdentityUpdate == null ? void 0 : onBuyerIdentityUpdate();
68
+ case "CART_ATTRIBUTES_UPDATE":
69
+ return onAttributesUpdate == null ? void 0 : onAttributesUpdate();
70
+ case "DISCOUNT_CODES_UPDATE":
71
+ return onDiscountCodesUpdate == null ? void 0 : onDiscountCodesUpdate();
72
+ }
73
+ } catch (error) {
74
+ console.error("Cart entry action failed", error);
75
+ }
76
+ },
77
+ onCartActionOptimisticUI(context, event) {
78
+ var _a2, _b2, _c2, _d2;
79
+ if (!(context == null ? void 0 : context.cart))
80
+ return {
81
+ cart: void 0
82
+ };
83
+ switch (event.type) {
84
+ case "CARTLINE_REMOVE":
85
+ return {
86
+ ...context,
87
+ lastValidCart: context.cart,
88
+ cart: {
89
+ ...context.cart,
90
+ lines: (_b2 = (_a2 = context == null ? void 0 : context.cart) == null ? void 0 : _a2.lines) == null ? void 0 : _b2.filter((line) => (line == null ? void 0 : line.id) && !event.payload.lines.includes(line == null ? void 0 : line.id))
91
+ }
92
+ };
93
+ case "CARTLINE_UPDATE":
94
+ return {
95
+ ...context,
96
+ lastValidCart: context.cart,
97
+ cart: {
98
+ ...context.cart,
99
+ lines: (_d2 = (_c2 = context == null ? void 0 : context.cart) == null ? void 0 : _c2.lines) == null ? void 0 : _d2.map((line) => {
100
+ const updatedLine = event.payload.lines.find(({
101
+ id
102
+ }) => id === (line == null ? void 0 : line.id));
103
+ if (updatedLine && updatedLine.quantity) {
104
+ return {
105
+ ...line,
106
+ quantity: updatedLine.quantity
107
+ };
108
+ }
109
+ return line;
110
+ })
111
+ }
112
+ };
113
+ }
114
+ return {
115
+ cart: context.cart ? {
116
+ ...context.cart
117
+ } : void 0
118
+ };
119
+ },
120
+ onCartActionComplete(context, event) {
121
+ const cartActionEvent = event.payload.cartActionEvent;
122
+ try {
123
+ switch (event.type) {
124
+ case "RESOLVE":
125
+ switch (cartActionEvent.type) {
126
+ case "CART_CREATE":
127
+ return onCreateComplete == null ? void 0 : onCreateComplete();
128
+ case "CARTLINE_ADD":
129
+ return onLineAddComplete == null ? void 0 : onLineAddComplete();
130
+ case "CARTLINE_REMOVE":
131
+ return onLineRemoveComplete == null ? void 0 : onLineRemoveComplete();
132
+ case "CARTLINE_UPDATE":
133
+ return onLineUpdateComplete == null ? void 0 : onLineUpdateComplete();
134
+ case "NOTE_UPDATE":
135
+ return onNoteUpdateComplete == null ? void 0 : onNoteUpdateComplete();
136
+ case "BUYER_IDENTITY_UPDATE":
137
+ if (countryCodeNotUpdated(context, cartActionEvent)) {
138
+ customerOverridesCountryCode.current = true;
139
+ }
140
+ return onBuyerIdentityUpdateComplete == null ? void 0 : onBuyerIdentityUpdateComplete();
141
+ case "CART_ATTRIBUTES_UPDATE":
142
+ return onAttributesUpdateComplete == null ? void 0 : onAttributesUpdateComplete();
143
+ case "DISCOUNT_CODES_UPDATE":
144
+ return onDiscountCodesUpdateComplete == null ? void 0 : onDiscountCodesUpdateComplete();
145
+ }
146
+ }
147
+ } catch (error) {
148
+ console.error("onCartActionComplete failed", error);
149
+ }
150
+ }
151
+ });
152
+ const cartReady = useRef(false);
153
+ const cartCompleted = cartState.matches("cartCompleted");
154
+ const countryChanged = (cartState.value === "idle" || cartState.value === "error" || cartState.value === "cartCompleted") && countryCode !== ((_c = (_b = (_a = cartState == null ? void 0 : cartState.context) == null ? void 0 : _a.cart) == null ? void 0 : _b.buyerIdentity) == null ? void 0 : _c.countryCode) && !cartState.context.errors;
155
+ const fetchingFromStorage = useRef(false);
156
+ useEffect(() => {
157
+ if (!cartReady.current && !fetchingFromStorage.current) {
158
+ if (!cart && storageAvailable("localStorage")) {
159
+ fetchingFromStorage.current = true;
160
+ try {
161
+ const cartId = window.localStorage.getItem(CART_ID_STORAGE_KEY);
162
+ if (cartId) {
163
+ cartSend({
164
+ type: "CART_FETCH",
165
+ payload: {
166
+ cartId
167
+ }
168
+ });
169
+ }
170
+ } catch (error) {
171
+ console.warn("error fetching cartId");
172
+ console.warn(error);
173
+ }
174
+ }
175
+ cartReady.current = true;
176
+ }
177
+ }, [cart, cartReady, cartSend]);
178
+ useEffect(() => {
179
+ if (!countryChanged || customerOverridesCountryCode.current)
180
+ return;
181
+ cartSend({
182
+ type: "BUYER_IDENTITY_UPDATE",
183
+ payload: {
184
+ buyerIdentity: {
185
+ countryCode,
186
+ customerAccessToken
187
+ }
188
+ }
189
+ });
190
+ }, [countryCode, customerAccessToken, countryChanged, customerOverridesCountryCode, cartSend]);
191
+ const onCartReadySend = useCallback((cartEvent) => {
192
+ if (!cartReady.current) {
193
+ return console.warn("Cart isn't ready yet");
194
+ }
195
+ cartSend(cartEvent);
196
+ }, [cartSend]);
197
+ useEffect(() => {
198
+ var _a2, _b2, _c2;
199
+ if (((_b2 = (_a2 = cartState == null ? void 0 : cartState.context) == null ? void 0 : _a2.cart) == null ? void 0 : _b2.id) && storageAvailable("localStorage")) {
200
+ try {
201
+ window.localStorage.setItem(CART_ID_STORAGE_KEY, (_c2 = cartState.context.cart) == null ? void 0 : _c2.id);
202
+ } catch (error) {
203
+ console.warn("Failed to save cartId to localStorage", error);
204
+ }
205
+ }
206
+ }, [(_e = (_d = cartState == null ? void 0 : cartState.context) == null ? void 0 : _d.cart) == null ? void 0 : _e.id]);
207
+ useEffect(() => {
208
+ if (cartCompleted && storageAvailable("localStorage")) {
209
+ try {
210
+ window.localStorage.removeItem(CART_ID_STORAGE_KEY);
211
+ } catch (error) {
212
+ console.warn("Failed to delete cartId from localStorage", error);
213
+ }
214
+ }
215
+ }, [cartCompleted]);
216
+ const cartCreate = useCallback((cartInput) => {
217
+ var _a2, _b2;
218
+ if (countryCode && !((_a2 = cartInput.buyerIdentity) == null ? void 0 : _a2.countryCode)) {
219
+ if (cartInput.buyerIdentity == null) {
220
+ cartInput.buyerIdentity = {};
221
+ }
222
+ cartInput.buyerIdentity.countryCode = countryCode;
223
+ }
224
+ if (customerAccessToken && !((_b2 = cartInput.buyerIdentity) == null ? void 0 : _b2.customerAccessToken)) {
225
+ if (cartInput.buyerIdentity == null) {
226
+ cartInput.buyerIdentity = {};
227
+ }
228
+ cartInput.buyerIdentity.customerAccessToken = customerAccessToken;
229
+ }
230
+ onCartReadySend({
231
+ type: "CART_CREATE",
232
+ payload: cartInput
233
+ });
234
+ }, [countryCode, customerAccessToken, onCartReadySend]);
235
+ const cartDisplayState = useDelayedStateUntilHydration(cartState);
236
+ const cartContextValue = useMemo(() => {
237
+ var _a2, _b2, _c2, _d2, _e2, _f2;
238
+ return {
239
+ ...(_b2 = (_a2 = cartDisplayState == null ? void 0 : cartDisplayState.context) == null ? void 0 : _a2.cart) != null ? _b2 : {
240
+ lines: [],
241
+ attributes: []
242
+ },
243
+ status: transposeStatus(cartDisplayState.value),
244
+ error: (_c2 = cartDisplayState == null ? void 0 : cartDisplayState.context) == null ? void 0 : _c2.errors,
245
+ totalQuantity: (_f2 = (_e2 = (_d2 = cartDisplayState == null ? void 0 : cartDisplayState.context) == null ? void 0 : _d2.cart) == null ? void 0 : _e2.totalQuantity) != null ? _f2 : 0,
246
+ cartCreate,
247
+ linesAdd(lines) {
248
+ var _a3, _b3;
249
+ if ((_b3 = (_a3 = cartDisplayState == null ? void 0 : cartDisplayState.context) == null ? void 0 : _a3.cart) == null ? void 0 : _b3.id) {
250
+ onCartReadySend({
251
+ type: "CARTLINE_ADD",
252
+ payload: {
253
+ lines
254
+ }
255
+ });
256
+ } else {
257
+ cartCreate({
258
+ lines
259
+ });
260
+ }
261
+ },
262
+ linesRemove(lines) {
263
+ onCartReadySend({
264
+ type: "CARTLINE_REMOVE",
265
+ payload: {
266
+ lines
267
+ }
268
+ });
269
+ },
270
+ linesUpdate(lines) {
271
+ onCartReadySend({
272
+ type: "CARTLINE_UPDATE",
273
+ payload: {
274
+ lines
275
+ }
276
+ });
277
+ },
278
+ noteUpdate(note) {
279
+ onCartReadySend({
280
+ type: "NOTE_UPDATE",
281
+ payload: {
282
+ note
283
+ }
284
+ });
285
+ },
286
+ buyerIdentityUpdate(buyerIdentity) {
287
+ onCartReadySend({
288
+ type: "BUYER_IDENTITY_UPDATE",
289
+ payload: {
290
+ buyerIdentity
291
+ }
292
+ });
293
+ },
294
+ cartAttributesUpdate(attributes) {
295
+ onCartReadySend({
296
+ type: "CART_ATTRIBUTES_UPDATE",
297
+ payload: {
298
+ attributes
299
+ }
300
+ });
301
+ },
302
+ discountCodesUpdate(discountCodes) {
303
+ onCartReadySend({
304
+ type: "DISCOUNT_CODES_UPDATE",
305
+ payload: {
306
+ discountCodes
307
+ }
308
+ });
309
+ },
310
+ cartFragment
311
+ };
312
+ }, [cartCreate, (_f = cartDisplayState == null ? void 0 : cartDisplayState.context) == null ? void 0 : _f.cart, (_g = cartDisplayState == null ? void 0 : cartDisplayState.context) == null ? void 0 : _g.errors, cartDisplayState.value, cartFragment, onCartReadySend]);
313
+ return /* @__PURE__ */ jsx(CartContext.Provider, {
314
+ value: cartContextValue,
315
+ children
316
+ });
317
+ }
318
+ function transposeStatus(status) {
319
+ switch (status) {
320
+ case "uninitialized":
321
+ case "initializationError":
322
+ return "uninitialized";
323
+ case "idle":
324
+ case "cartCompleted":
325
+ case "error":
326
+ return "idle";
327
+ case "cartFetching":
328
+ return "fetching";
329
+ case "cartCreating":
330
+ return "creating";
331
+ case "cartLineAdding":
332
+ case "cartLineRemoving":
333
+ case "cartLineUpdating":
334
+ case "noteUpdating":
335
+ case "buyerIdentityUpdating":
336
+ case "cartAttributesUpdating":
337
+ case "discountCodesUpdating":
338
+ return "updating";
339
+ }
340
+ }
341
+ function useDelayedStateUntilHydration(state) {
342
+ const [isPending, startTransition] = useTransition();
343
+ const [delayedState, setDelayedState] = useState(state);
344
+ const firstTimePending = useRef(false);
345
+ if (isPending) {
346
+ firstTimePending.current = true;
347
+ }
348
+ const firstTimePendingFinished = useRef(false);
349
+ if (!isPending && firstTimePending.current) {
350
+ firstTimePendingFinished.current = true;
351
+ }
352
+ useEffect(() => {
353
+ startTransition(() => {
354
+ if (!firstTimePendingFinished.current) {
355
+ setDelayedState(state);
356
+ }
357
+ });
358
+ }, [state]);
359
+ const displayState = firstTimePendingFinished.current ? state : delayedState;
360
+ return displayState;
361
+ }
362
+ function storageAvailable(type) {
363
+ let storage;
364
+ try {
365
+ storage = window[type];
366
+ const x = "__storage_test__";
367
+ storage.setItem(x, x);
368
+ storage.removeItem(x);
369
+ return true;
370
+ } catch (e) {
371
+ return e instanceof DOMException && (e.code === 22 || e.code === 1014 || e.name === "QuotaExceededError" || e.name === "NS_ERROR_DOM_QUOTA_REACHED") && storage && storage.length !== 0;
372
+ }
373
+ }
374
+ function countryCodeNotUpdated(context, event) {
375
+ var _a, _b;
376
+ return event.payload.buyerIdentity.countryCode && ((_b = (_a = context.cart) == null ? void 0 : _a.buyerIdentity) == null ? void 0 : _b.countryCode) !== event.payload.buyerIdentity.countryCode;
377
+ }
378
+ const defaultCartFragment = `
379
+ fragment CartFragment on Cart {
380
+ id
381
+ checkoutUrl
382
+ totalQuantity
383
+ buyerIdentity {
384
+ countryCode
385
+ customer {
386
+ id
387
+ email
388
+ firstName
389
+ lastName
390
+ displayName
391
+ }
392
+ email
393
+ phone
394
+ }
395
+ lines(first: $numCartLines) {
396
+ edges {
397
+ node {
398
+ id
399
+ quantity
400
+ attributes {
401
+ key
402
+ value
403
+ }
404
+ cost {
405
+ totalAmount {
406
+ amount
407
+ currencyCode
408
+ }
409
+ compareAtAmountPerQuantity {
410
+ amount
411
+ currencyCode
412
+ }
413
+ }
414
+ merchandise {
415
+ ... on ProductVariant {
416
+ id
417
+ availableForSale
418
+ compareAtPriceV2 {
419
+ ...MoneyFragment
420
+ }
421
+ priceV2 {
422
+ ...MoneyFragment
423
+ }
424
+ requiresShipping
425
+ title
426
+ image {
427
+ ...ImageFragment
428
+ }
429
+ product {
430
+ handle
431
+ title
432
+ }
433
+ selectedOptions {
434
+ name
435
+ value
436
+ }
437
+ }
438
+ }
439
+ }
440
+ }
441
+ }
442
+ cost {
443
+ subtotalAmount {
444
+ ...MoneyFragment
445
+ }
446
+ totalAmount {
447
+ ...MoneyFragment
448
+ }
449
+ totalDutyAmount {
450
+ ...MoneyFragment
451
+ }
452
+ totalTaxAmount {
453
+ ...MoneyFragment
454
+ }
455
+ }
456
+ note
457
+ attributes {
458
+ key
459
+ value
460
+ }
461
+ discountCodes {
462
+ code
463
+ }
464
+ }
465
+
466
+ fragment MoneyFragment on MoneyV2 {
467
+ currencyCode
468
+ amount
469
+ }
470
+ fragment ImageFragment on Image {
471
+ id
472
+ url
473
+ altText
474
+ width
475
+ height
476
+ }
477
+ `;
478
+ export {
479
+ CartContext,
480
+ CartProvider,
481
+ defaultCartFragment,
482
+ storageAvailable,
483
+ useCart
484
+ };
485
+ //# sourceMappingURL=CartProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CartProvider.js","sources":["../../src/CartProvider.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useTransition,\n createContext,\n useContext,\n} from 'react';\nimport {\n AttributeInput,\n CartBuyerIdentityInput,\n CartInput,\n CartLineInput,\n CartLineUpdateInput,\n CountryCode,\n Cart as CartType,\n MutationCartNoteUpdateArgs,\n} from './storefront-api-types.js';\nimport {\n BuyerIdentityUpdateEvent,\n CartMachineContext,\n CartMachineEvent,\n CartMachineTypeState,\n CartWithActions,\n} from './cart-types.js';\nimport {useCartAPIStateMachine} from './useCartAPIStateMachine.js';\nimport {CART_ID_STORAGE_KEY} from './cart-constants.js';\nimport {PartialDeep} from 'type-fest';\n\nexport const CartContext = createContext<CartWithActions | null>(null);\n\n/**\n * The `useCart` hook provides access to the cart object. It must be a descendent of a `CartProvider` component.\n */\nexport function useCart() {\n const context = useContext(CartContext);\n\n if (!context) {\n throw new Error('Expected a Cart Context, but no Cart Context was found');\n }\n\n return context;\n}\n\nexport function CartProvider({\n children,\n numCartLines,\n onCreate,\n onLineAdd,\n onLineRemove,\n onLineUpdate,\n onNoteUpdate,\n onBuyerIdentityUpdate,\n onAttributesUpdate,\n onDiscountCodesUpdate,\n onCreateComplete,\n onLineAddComplete,\n onLineRemoveComplete,\n onLineUpdateComplete,\n onNoteUpdateComplete,\n onBuyerIdentityUpdateComplete,\n onAttributesUpdateComplete,\n onDiscountCodesUpdateComplete,\n data: cart,\n cartFragment = defaultCartFragment,\n customerAccessToken,\n countryCode = 'US',\n}: {\n /** Any `ReactNode` elements. */\n children: React.ReactNode;\n /** Maximum number of cart lines to fetch. Defaults to 250 cart lines. */\n numCartLines?: number;\n /** A callback that is invoked when the process to create a cart begins, but before the cart is created in the Storefront API. */\n onCreate?: () => void;\n /** A callback that is invoked when the process to add a line item to the cart begins, but before the line item is added to the Storefront API. */\n onLineAdd?: () => void;\n /** A callback that is invoked when the process to remove a line item to the cart begins, but before the line item is removed from the Storefront API. */\n onLineRemove?: () => void;\n /** A callback that is invoked when the process to update a line item in the cart begins, but before the line item is updated in the Storefront API. */\n onLineUpdate?: () => void;\n /** A callback that is invoked when the process to add or update a note in the cart begins, but before the note is added or updated in the Storefront API. */\n onNoteUpdate?: () => void;\n /** A callback that is invoked when the process to update the buyer identity begins, but before the buyer identity is updated in the Storefront API. */\n onBuyerIdentityUpdate?: () => void;\n /** A callback that is invoked when the process to update the cart attributes begins, but before the attributes are updated in the Storefront API. */\n onAttributesUpdate?: () => void;\n /** A callback that is invoked when the process to update the cart discount codes begins, but before the discount codes are updated in the Storefront API. */\n onDiscountCodesUpdate?: () => void;\n /** A callback that is invoked when the process to create a cart completes */\n onCreateComplete?: () => void;\n /** A callback that is invoked when the process to add a line item to the cart completes */\n onLineAddComplete?: () => void;\n /** A callback that is invoked when the process to remove a line item to the cart completes */\n onLineRemoveComplete?: () => void;\n /** A callback that is invoked when the process to update a line item in the cart completes */\n onLineUpdateComplete?: () => void;\n /** A callback that is invoked when the process to add or update a note in the cart completes */\n onNoteUpdateComplete?: () => void;\n /** A callback that is invoked when the process to update the buyer identity completes */\n onBuyerIdentityUpdateComplete?: () => void;\n /** A callback that is invoked when the process to update the cart attributes completes */\n onAttributesUpdateComplete?: () => void;\n /** A callback that is invoked when the process to update the cart discount codes completes */\n onDiscountCodesUpdateComplete?: () => void;\n /** An object with fields that correspond to the Storefront API's [Cart object](https://shopify.dev/api/storefront/latest/objects/cart). */\n data?: PartialDeep<CartType, {recurseIntoArrays: true}>;\n /** A fragment used to query the Storefront API's [Cart object](https://shopify.dev/api/storefront/latest/objects/cart) for all queries and mutations. A default value is used if no argument is provided. */\n cartFragment?: string;\n /** A customer access token that's accessible on the server if there's a customer login. */\n customerAccessToken?: CartBuyerIdentityInput['customerAccessToken'];\n /** The ISO country code for i18n. */\n countryCode?: CountryCode;\n}) {\n if (countryCode) countryCode = countryCode.toUpperCase() as CountryCode;\n const [prevCountryCode, setPrevCountryCode] = useState(countryCode);\n const [prevCustomerAccessToken, setPrevCustomerAccessToken] =\n useState(customerAccessToken);\n const customerOverridesCountryCode = useRef(false);\n\n if (\n prevCountryCode !== countryCode ||\n prevCustomerAccessToken !== customerAccessToken\n ) {\n setPrevCountryCode(countryCode);\n setPrevCustomerAccessToken(customerAccessToken);\n customerOverridesCountryCode.current = false;\n }\n\n const [cartState, cartSend] = useCartAPIStateMachine({\n numCartLines,\n data: cart,\n cartFragment,\n countryCode,\n onCartActionEntry(context, event) {\n try {\n switch (event.type) {\n case 'CART_CREATE':\n return onCreate?.();\n case 'CARTLINE_ADD':\n return onLineAdd?.();\n case 'CARTLINE_REMOVE':\n return onLineRemove?.();\n case 'CARTLINE_UPDATE':\n return onLineUpdate?.();\n case 'NOTE_UPDATE':\n return onNoteUpdate?.();\n case 'BUYER_IDENTITY_UPDATE':\n return onBuyerIdentityUpdate?.();\n case 'CART_ATTRIBUTES_UPDATE':\n return onAttributesUpdate?.();\n case 'DISCOUNT_CODES_UPDATE':\n return onDiscountCodesUpdate?.();\n }\n } catch (error) {\n console.error('Cart entry action failed', error);\n }\n },\n onCartActionOptimisticUI(context, event) {\n if (!context?.cart) return {cart: undefined};\n switch (event.type) {\n case 'CARTLINE_REMOVE':\n return {\n ...context,\n lastValidCart: context.cart,\n cart: {\n ...context.cart,\n lines: context?.cart?.lines?.filter(\n (line) => line?.id && !event.payload.lines.includes(line?.id)\n ),\n },\n };\n case 'CARTLINE_UPDATE':\n return {\n ...context,\n lastValidCart: context.cart,\n cart: {\n ...context.cart,\n lines: context?.cart?.lines?.map((line) => {\n const updatedLine = event.payload.lines.find(\n ({id}) => id === line?.id\n );\n\n if (updatedLine && updatedLine.quantity) {\n return {\n ...line,\n quantity: updatedLine.quantity,\n };\n }\n\n return line;\n }),\n },\n };\n }\n return {cart: context.cart ? {...context.cart} : undefined};\n },\n onCartActionComplete(context, event) {\n const cartActionEvent = event.payload.cartActionEvent;\n try {\n switch (event.type) {\n case 'RESOLVE':\n switch (cartActionEvent.type) {\n case 'CART_CREATE':\n return onCreateComplete?.();\n case 'CARTLINE_ADD':\n return onLineAddComplete?.();\n case 'CARTLINE_REMOVE':\n return onLineRemoveComplete?.();\n case 'CARTLINE_UPDATE':\n return onLineUpdateComplete?.();\n case 'NOTE_UPDATE':\n return onNoteUpdateComplete?.();\n case 'BUYER_IDENTITY_UPDATE':\n if (countryCodeNotUpdated(context, cartActionEvent)) {\n customerOverridesCountryCode.current = true;\n }\n return onBuyerIdentityUpdateComplete?.();\n case 'CART_ATTRIBUTES_UPDATE':\n return onAttributesUpdateComplete?.();\n case 'DISCOUNT_CODES_UPDATE':\n return onDiscountCodesUpdateComplete?.();\n }\n }\n } catch (error) {\n console.error('onCartActionComplete failed', error);\n }\n },\n });\n\n const cartReady = useRef(false);\n const cartCompleted = cartState.matches('cartCompleted');\n\n const countryChanged =\n (cartState.value === 'idle' ||\n cartState.value === 'error' ||\n cartState.value === 'cartCompleted') &&\n countryCode !== cartState?.context?.cart?.buyerIdentity?.countryCode &&\n !cartState.context.errors;\n\n const fetchingFromStorage = useRef(false);\n\n /**\n * Initializes cart with priority in this order:\n * 1. cart props\n * 2. localStorage cartId\n */\n useEffect(() => {\n if (!cartReady.current && !fetchingFromStorage.current) {\n if (!cart && storageAvailable('localStorage')) {\n fetchingFromStorage.current = true;\n try {\n const cartId = window.localStorage.getItem(CART_ID_STORAGE_KEY);\n if (cartId) {\n cartSend({type: 'CART_FETCH', payload: {cartId}});\n }\n } catch (error) {\n console.warn('error fetching cartId');\n console.warn(error);\n }\n }\n cartReady.current = true;\n }\n }, [cart, cartReady, cartSend]);\n\n // Update cart country code if cart and props countryCode's as different\n useEffect(() => {\n if (!countryChanged || customerOverridesCountryCode.current) return;\n cartSend({\n type: 'BUYER_IDENTITY_UPDATE',\n payload: {buyerIdentity: {countryCode, customerAccessToken}},\n });\n }, [\n countryCode,\n customerAccessToken,\n countryChanged,\n customerOverridesCountryCode,\n cartSend,\n ]);\n\n // send cart events when ready\n const onCartReadySend = useCallback(\n (cartEvent: CartMachineEvent) => {\n if (!cartReady.current) {\n return console.warn(\"Cart isn't ready yet\");\n }\n cartSend(cartEvent);\n },\n [cartSend]\n );\n\n // save cart id to local storage\n useEffect(() => {\n if (cartState?.context?.cart?.id && storageAvailable('localStorage')) {\n try {\n window.localStorage.setItem(\n CART_ID_STORAGE_KEY,\n cartState.context.cart?.id\n );\n } catch (error) {\n console.warn('Failed to save cartId to localStorage', error);\n }\n }\n }, [cartState?.context?.cart?.id]);\n\n // delete cart from local storage if cart fetched has been completed\n useEffect(() => {\n if (cartCompleted && storageAvailable('localStorage')) {\n try {\n window.localStorage.removeItem(CART_ID_STORAGE_KEY);\n } catch (error) {\n console.warn('Failed to delete cartId from localStorage', error);\n }\n }\n }, [cartCompleted]);\n\n const cartCreate = useCallback(\n (cartInput: CartInput) => {\n if (countryCode && !cartInput.buyerIdentity?.countryCode) {\n if (cartInput.buyerIdentity == null) {\n cartInput.buyerIdentity = {};\n }\n cartInput.buyerIdentity.countryCode = countryCode;\n }\n\n if (\n customerAccessToken &&\n !cartInput.buyerIdentity?.customerAccessToken\n ) {\n if (cartInput.buyerIdentity == null) {\n cartInput.buyerIdentity = {};\n }\n cartInput.buyerIdentity.customerAccessToken = customerAccessToken;\n }\n onCartReadySend({\n type: 'CART_CREATE',\n payload: cartInput,\n });\n },\n [countryCode, customerAccessToken, onCartReadySend]\n );\n\n // Delays the cart state in the context if the page is hydrating\n // preventing suspense boundary errors.\n const cartDisplayState = useDelayedStateUntilHydration(cartState);\n\n const cartContextValue = useMemo<CartWithActions>(() => {\n return {\n ...(cartDisplayState?.context?.cart ?? {lines: [], attributes: []}),\n status: transposeStatus(cartDisplayState.value),\n error: cartDisplayState?.context?.errors,\n totalQuantity: cartDisplayState?.context?.cart?.totalQuantity ?? 0,\n cartCreate,\n linesAdd(lines: CartLineInput[]) {\n if (cartDisplayState?.context?.cart?.id) {\n onCartReadySend({\n type: 'CARTLINE_ADD',\n payload: {lines},\n });\n } else {\n cartCreate({lines});\n }\n },\n linesRemove(lines: string[]) {\n onCartReadySend({\n type: 'CARTLINE_REMOVE',\n payload: {\n lines,\n },\n });\n },\n linesUpdate(lines: CartLineUpdateInput[]) {\n onCartReadySend({\n type: 'CARTLINE_UPDATE',\n payload: {\n lines,\n },\n });\n },\n noteUpdate(note: MutationCartNoteUpdateArgs['note']) {\n onCartReadySend({\n type: 'NOTE_UPDATE',\n payload: {\n note,\n },\n });\n },\n buyerIdentityUpdate(buyerIdentity: CartBuyerIdentityInput) {\n onCartReadySend({\n type: 'BUYER_IDENTITY_UPDATE',\n payload: {\n buyerIdentity,\n },\n });\n },\n cartAttributesUpdate(attributes: AttributeInput[]) {\n onCartReadySend({\n type: 'CART_ATTRIBUTES_UPDATE',\n payload: {\n attributes,\n },\n });\n },\n discountCodesUpdate(discountCodes: string[]) {\n onCartReadySend({\n type: 'DISCOUNT_CODES_UPDATE',\n payload: {\n discountCodes,\n },\n });\n },\n cartFragment,\n };\n }, [\n cartCreate,\n cartDisplayState?.context?.cart,\n cartDisplayState?.context?.errors,\n cartDisplayState.value,\n cartFragment,\n onCartReadySend,\n ]);\n\n return (\n <CartContext.Provider value={cartContextValue}>\n {children}\n </CartContext.Provider>\n );\n}\n\nfunction transposeStatus(\n status: CartMachineTypeState['value']\n): CartWithActions['status'] {\n switch (status) {\n case 'uninitialized':\n case 'initializationError':\n return 'uninitialized';\n case 'idle':\n case 'cartCompleted':\n case 'error':\n return 'idle';\n case 'cartFetching':\n return 'fetching';\n case 'cartCreating':\n return 'creating';\n case 'cartLineAdding':\n case 'cartLineRemoving':\n case 'cartLineUpdating':\n case 'noteUpdating':\n case 'buyerIdentityUpdating':\n case 'cartAttributesUpdating':\n case 'discountCodesUpdating':\n return 'updating';\n }\n}\n\n/**\n * Delays a state update until hydration finishes. Useful for preventing suspense boundaries errors when updating a context\n * @remarks this uses startTransition and waits for it to finish.\n */\nfunction useDelayedStateUntilHydration<T>(state: T) {\n const [isPending, startTransition] = useTransition();\n const [delayedState, setDelayedState] = useState(state);\n\n const firstTimePending = useRef(false);\n if (isPending) {\n firstTimePending.current = true;\n }\n\n const firstTimePendingFinished = useRef(false);\n if (!isPending && firstTimePending.current) {\n firstTimePendingFinished.current = true;\n }\n\n useEffect(() => {\n startTransition(() => {\n if (!firstTimePendingFinished.current) {\n setDelayedState(state);\n }\n });\n }, [state]);\n\n const displayState = firstTimePendingFinished.current ? state : delayedState;\n\n return displayState;\n}\n\n/** Check for storage availability funciton obtained from\n * https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API\n */\nexport function storageAvailable(type: 'localStorage' | 'sessionStorage') {\n let storage;\n try {\n storage = window[type];\n const x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return true;\n } catch (e) {\n return (\n e instanceof DOMException &&\n // everything except Firefox\n (e.code === 22 ||\n // Firefox\n e.code === 1014 ||\n // test name field too, because code might not be present\n // everything except Firefox\n e.name === 'QuotaExceededError' ||\n // Firefox\n e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&\n // acknowledge QuotaExceededError only if there's something already stored\n storage &&\n storage.length !== 0\n );\n }\n}\n\nfunction countryCodeNotUpdated(\n context: CartMachineContext,\n event: BuyerIdentityUpdateEvent\n) {\n return (\n event.payload.buyerIdentity.countryCode &&\n context.cart?.buyerIdentity?.countryCode !==\n event.payload.buyerIdentity.countryCode\n );\n}\n\nexport const defaultCartFragment = `\nfragment CartFragment on Cart {\n id\n checkoutUrl\n totalQuantity\n buyerIdentity {\n countryCode\n customer {\n id\n email\n firstName\n lastName\n displayName\n }\n email\n phone\n }\n lines(first: $numCartLines) {\n edges {\n node {\n id\n quantity\n attributes {\n key\n value\n }\n cost {\n totalAmount {\n amount\n currencyCode\n }\n compareAtAmountPerQuantity {\n amount\n currencyCode\n }\n }\n merchandise {\n ... on ProductVariant {\n id\n availableForSale\n compareAtPriceV2 {\n ...MoneyFragment\n }\n priceV2 {\n ...MoneyFragment\n }\n requiresShipping\n title\n image {\n ...ImageFragment\n }\n product {\n handle\n title\n }\n selectedOptions {\n name\n value\n }\n }\n }\n }\n }\n }\n cost {\n subtotalAmount {\n ...MoneyFragment\n }\n totalAmount {\n ...MoneyFragment\n }\n totalDutyAmount {\n ...MoneyFragment\n }\n totalTaxAmount {\n ...MoneyFragment\n }\n }\n note\n attributes {\n key\n value\n }\n discountCodes {\n code\n }\n}\n\nfragment MoneyFragment on MoneyV2 {\n currencyCode\n amount\n}\nfragment ImageFragment on Image {\n id\n url\n altText\n width\n height\n}\n`;\n"],"names":["CartContext","createContext","useCart","context","useContext","Error","CartProvider","children","numCartLines","onCreate","onLineAdd","onLineRemove","onLineUpdate","onNoteUpdate","onBuyerIdentityUpdate","onAttributesUpdate","onDiscountCodesUpdate","onCreateComplete","onLineAddComplete","onLineRemoveComplete","onLineUpdateComplete","onNoteUpdateComplete","onBuyerIdentityUpdateComplete","onAttributesUpdateComplete","onDiscountCodesUpdateComplete","data","cart","cartFragment","defaultCartFragment","customerAccessToken","countryCode","toUpperCase","prevCountryCode","setPrevCountryCode","useState","prevCustomerAccessToken","setPrevCustomerAccessToken","customerOverridesCountryCode","useRef","current","cartState","cartSend","useCartAPIStateMachine","onCartActionEntry","event","type","error","onCartActionOptimisticUI","undefined","lastValidCart","lines","filter","line","id","payload","includes","map","updatedLine","find","quantity","onCartActionComplete","cartActionEvent","countryCodeNotUpdated","cartReady","cartCompleted","matches","countryChanged","value","buyerIdentity","errors","fetchingFromStorage","useEffect","storageAvailable","cartId","window","localStorage","getItem","CART_ID_STORAGE_KEY","console","warn","onCartReadySend","useCallback","cartEvent","setItem","removeItem","cartCreate","cartInput","cartDisplayState","useDelayedStateUntilHydration","cartContextValue","useMemo","attributes","status","transposeStatus","totalQuantity","linesAdd","linesRemove","linesUpdate","noteUpdate","note","buyerIdentityUpdate","cartAttributesUpdate","discountCodesUpdate","discountCodes","_jsx","state","isPending","startTransition","useTransition","delayedState","setDelayedState","firstTimePending","firstTimePendingFinished","displayState","storage","x","e","DOMException","code","name","length"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MediaFile.cjs","sources":["../../src/MediaFile.tsx"],"sourcesContent":["import React from 'react';\nimport {Image, type ShopifyImageProps} from './Image.js';\nimport {Video} from './Video.js';\nimport {ExternalVideo} from './ExternalVideo.js';\nimport {ModelViewer} from './ModelViewer.js';\nimport type {MediaEdge as MediaEdgeType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\ninterface MediaFileProps {\n /** An object with fields that correspond to the Storefront API's [Media object](https://shopify.dev/api/storefront/reference/products/media). */\n data: PartialDeep<MediaEdgeType['node'], {recurseIntoArrays: true}>;\n /** The options for the `Image`, `Video`, or `ExternalVideo` components. */\n mediaOptions?: {\n /** Props that will only apply when an `<Image />` is rendered */\n image: Omit<ShopifyImageProps, 'data'>;\n /** Props that will only apply when a `<Video />` is rendered */\n video: Omit<React.ComponentProps<typeof Video>, 'data'>;\n /** Props that will only apply when an `<ExternalVideo />` is rendered */\n externalVideo: Omit<\n React.ComponentProps<typeof ExternalVideo>['options'],\n 'data'\n >;\n /** Props that will only apply when a `<ModelViewer />` is rendered */\n modelViewer: Omit<typeof ModelViewer, 'data'>;\n };\n}\n\n/**\n * The `MediaFile` component renders the media for the Storefront API's\n * [Media object](https://shopify.dev/api/storefront/reference/products/media). It renders an `Image`, a\n * `Video`, an `ExternalVideo`, or a `ModelViewer` depending on the `__typename` of the `data` prop.\n */\nexport function MediaFile({\n data,\n mediaOptions,\n ...passthroughProps\n}: MediaFileProps) {\n switch (data.__typename) {\n case 'MediaImage': {\n if (!data.image) {\n const noDataImage = `<MediaFile/>: 'data.image' does not exist for __typename of 'MediaImage'; rendering 'null' by default.`;\n if (__HYDROGEN_DEV__) {\n throw new Error(noDataImage);\n } else {\n console.warn(noDataImage);\n return null;\n }\n }\n\n return (\n <Image\n {...passthroughProps}\n {...mediaOptions?.image}\n data={data.image}\n />\n );\n }\n case 'Video': {\n return (\n <Video {...passthroughProps} {...mediaOptions?.video} data={data} />\n );\n }\n case 'ExternalVideo': {\n return (\n <ExternalVideo\n {...passthroughProps}\n {...mediaOptions?.externalVideo}\n data={data}\n />\n );\n }\n case 'Model3d': {\n return (\n <ModelViewer\n {...passthroughProps}\n {...mediaOptions?.modelViewer}\n data={data}\n />\n );\n }\n default: {\n const typenameMissingMessage = `<MediaFile /> requires the '__typename' property to exist on the 'data' prop in order to correctly render the correct component for this media. Rendering 'null' by default`;\n if (__HYDROGEN_DEV__) {\n throw new Error(typenameMissingMessage);\n } else {\n console.error(typenameMissingMessage);\n return null;\n }\n }\n }\n}\n"],"names":["MediaFile","data","mediaOptions","passthroughProps","__typename","image","noDataImage","console","warn","Image","Video","video","ExternalVideo","externalVideo","ModelViewer","modelViewer","typenameMissingMessage","error"],"mappings":";;;;;;;AAgCO,SAASA,UAAU;AAAA,EACxBC;AAAAA,EACAC;AAAAA,KACGC;AAHqB,GAIP;AACjB,UAAQF,KAAKG,YAAb;AAAA,IACE,KAAK,cAAc;AACb,UAAA,CAACH,KAAKI,OAAO;AACf,cAAMC,cAAe;AAGd;AACLC,kBAAQC,KAAKF,WAAb;AACO,iBAAA;AAAA,QACR;AAAA,MACF;AAED,4CACGG,MAAAA,OAAD;AAAA,QAAA,GACMN;AAAAA,QADN,GAEMD,6CAAcG;AAAAA,QAClB,MAAMJ,KAAKI;AAAAA,MAAAA,CAJf;AAAA,IAOD;AAAA,IACD,KAAK,SAAS;AACZ,4CACGK,MAAAA,OAAD;AAAA,QAAA,GAAWP;AAAAA,QAAX,GAAiCD,6CAAcS;AAAAA,QAAO;AAAA,MAAA,CADxD;AAAA,IAGD;AAAA,IACD,KAAK,iBAAiB;AACpB,4CACGC,cAAAA,eAAD;AAAA,QAAA,GACMT;AAAAA,QADN,GAEMD,6CAAcW;AAAAA,QAClB;AAAA,MAAA,CAJJ;AAAA,IAOD;AAAA,IACD,KAAK,WAAW;AACd,4CACGC,YAAAA,aAAD;AAAA,QAAA,GACMX;AAAAA,QADN,GAEMD,6CAAca;AAAAA,QAClB;AAAA,MAAA,CAJJ;AAAA,IAOD;AAAA,IACD,SAAS;AACP,YAAMC,yBAA0B;AAGzB;AACLT,gBAAQU,MAAMD,sBAAd;AACO,eAAA;AAAA,MACR;AAAA,IACF;AAAA,EAnDH;AAqDD;;"}
1
+ {"version":3,"file":"MediaFile.cjs","sources":["../../src/MediaFile.tsx"],"sourcesContent":["import {Image, type ShopifyImageProps} from './Image.js';\nimport {Video} from './Video.js';\nimport {ExternalVideo} from './ExternalVideo.js';\nimport {ModelViewer} from './ModelViewer.js';\nimport type {MediaEdge as MediaEdgeType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\ninterface MediaFileProps {\n /** An object with fields that correspond to the Storefront API's [Media object](https://shopify.dev/api/storefront/reference/products/media). */\n data: PartialDeep<MediaEdgeType['node'], {recurseIntoArrays: true}>;\n /** The options for the `Image`, `Video`, or `ExternalVideo` components. */\n mediaOptions?: {\n /** Props that will only apply when an `<Image />` is rendered */\n image: Omit<ShopifyImageProps, 'data'>;\n /** Props that will only apply when a `<Video />` is rendered */\n video: Omit<React.ComponentProps<typeof Video>, 'data'>;\n /** Props that will only apply when an `<ExternalVideo />` is rendered */\n externalVideo: Omit<\n React.ComponentProps<typeof ExternalVideo>['options'],\n 'data'\n >;\n /** Props that will only apply when a `<ModelViewer />` is rendered */\n modelViewer: Omit<typeof ModelViewer, 'data'>;\n };\n}\n\n/**\n * The `MediaFile` component renders the media for the Storefront API's\n * [Media object](https://shopify.dev/api/storefront/reference/products/media). It renders an `Image`, a\n * `Video`, an `ExternalVideo`, or a `ModelViewer` depending on the `__typename` of the `data` prop.\n */\nexport function MediaFile({\n data,\n mediaOptions,\n ...passthroughProps\n}: MediaFileProps) {\n switch (data.__typename) {\n case 'MediaImage': {\n if (!data.image) {\n const noDataImage = `<MediaFile/>: 'data.image' does not exist for __typename of 'MediaImage'; rendering 'null' by default.`;\n if (__HYDROGEN_DEV__) {\n throw new Error(noDataImage);\n } else {\n console.warn(noDataImage);\n return null;\n }\n }\n\n return (\n <Image\n {...passthroughProps}\n {...mediaOptions?.image}\n data={data.image}\n />\n );\n }\n case 'Video': {\n return (\n <Video {...passthroughProps} {...mediaOptions?.video} data={data} />\n );\n }\n case 'ExternalVideo': {\n return (\n <ExternalVideo\n {...passthroughProps}\n {...mediaOptions?.externalVideo}\n data={data}\n />\n );\n }\n case 'Model3d': {\n return (\n <ModelViewer\n {...passthroughProps}\n {...mediaOptions?.modelViewer}\n data={data}\n />\n );\n }\n default: {\n const typenameMissingMessage = `<MediaFile /> requires the '__typename' property to exist on the 'data' prop in order to correctly render the correct component for this media. Rendering 'null' by default`;\n if (__HYDROGEN_DEV__) {\n throw new Error(typenameMissingMessage);\n } else {\n console.error(typenameMissingMessage);\n return null;\n }\n }\n }\n}\n"],"names":["MediaFile","data","mediaOptions","passthroughProps","__typename","image","noDataImage","console","warn","Image","Video","video","ExternalVideo","externalVideo","ModelViewer","modelViewer","typenameMissingMessage","error"],"mappings":";;;;;;;AA+BO,SAASA,UAAU;AAAA,EACxBC;AAAAA,EACAC;AAAAA,KACGC;AAHqB,GAIP;AACjB,UAAQF,KAAKG,YAAb;AAAA,IACE,KAAK,cAAc;AACb,UAAA,CAACH,KAAKI,OAAO;AACf,cAAMC,cAAe;AAGd;AACLC,kBAAQC,KAAKF,WAAb;AACO,iBAAA;AAAA,QACR;AAAA,MACF;AAED,4CACGG,MAAAA,OAAD;AAAA,QAAA,GACMN;AAAAA,QADN,GAEMD,6CAAcG;AAAAA,QAClB,MAAMJ,KAAKI;AAAAA,MAAAA,CAJf;AAAA,IAOD;AAAA,IACD,KAAK,SAAS;AACZ,4CACGK,MAAAA,OAAD;AAAA,QAAA,GAAWP;AAAAA,QAAX,GAAiCD,6CAAcS;AAAAA,QAAO;AAAA,MAAA,CADxD;AAAA,IAGD;AAAA,IACD,KAAK,iBAAiB;AACpB,4CACGC,cAAAA,eAAD;AAAA,QAAA,GACMT;AAAAA,QADN,GAEMD,6CAAcW;AAAAA,QAClB;AAAA,MAAA,CAJJ;AAAA,IAOD;AAAA,IACD,KAAK,WAAW;AACd,4CACGC,YAAAA,aAAD;AAAA,QAAA,GACMX;AAAAA,QADN,GAEMD,6CAAca;AAAAA,QAClB;AAAA,MAAA,CAJJ;AAAA,IAOD;AAAA,IACD,SAAS;AACP,YAAMC,yBAA0B;AAGzB;AACLT,gBAAQU,MAAMD,sBAAd;AACO,eAAA;AAAA,MACR;AAAA,IACF;AAAA,EAnDH;AAqDD;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"MediaFile.js","sources":["../../src/MediaFile.tsx"],"sourcesContent":["import React from 'react';\nimport {Image, type ShopifyImageProps} from './Image.js';\nimport {Video} from './Video.js';\nimport {ExternalVideo} from './ExternalVideo.js';\nimport {ModelViewer} from './ModelViewer.js';\nimport type {MediaEdge as MediaEdgeType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\ninterface MediaFileProps {\n /** An object with fields that correspond to the Storefront API's [Media object](https://shopify.dev/api/storefront/reference/products/media). */\n data: PartialDeep<MediaEdgeType['node'], {recurseIntoArrays: true}>;\n /** The options for the `Image`, `Video`, or `ExternalVideo` components. */\n mediaOptions?: {\n /** Props that will only apply when an `<Image />` is rendered */\n image: Omit<ShopifyImageProps, 'data'>;\n /** Props that will only apply when a `<Video />` is rendered */\n video: Omit<React.ComponentProps<typeof Video>, 'data'>;\n /** Props that will only apply when an `<ExternalVideo />` is rendered */\n externalVideo: Omit<\n React.ComponentProps<typeof ExternalVideo>['options'],\n 'data'\n >;\n /** Props that will only apply when a `<ModelViewer />` is rendered */\n modelViewer: Omit<typeof ModelViewer, 'data'>;\n };\n}\n\n/**\n * The `MediaFile` component renders the media for the Storefront API's\n * [Media object](https://shopify.dev/api/storefront/reference/products/media). It renders an `Image`, a\n * `Video`, an `ExternalVideo`, or a `ModelViewer` depending on the `__typename` of the `data` prop.\n */\nexport function MediaFile({\n data,\n mediaOptions,\n ...passthroughProps\n}: MediaFileProps) {\n switch (data.__typename) {\n case 'MediaImage': {\n if (!data.image) {\n const noDataImage = `<MediaFile/>: 'data.image' does not exist for __typename of 'MediaImage'; rendering 'null' by default.`;\n if (__HYDROGEN_DEV__) {\n throw new Error(noDataImage);\n } else {\n console.warn(noDataImage);\n return null;\n }\n }\n\n return (\n <Image\n {...passthroughProps}\n {...mediaOptions?.image}\n data={data.image}\n />\n );\n }\n case 'Video': {\n return (\n <Video {...passthroughProps} {...mediaOptions?.video} data={data} />\n );\n }\n case 'ExternalVideo': {\n return (\n <ExternalVideo\n {...passthroughProps}\n {...mediaOptions?.externalVideo}\n data={data}\n />\n );\n }\n case 'Model3d': {\n return (\n <ModelViewer\n {...passthroughProps}\n {...mediaOptions?.modelViewer}\n data={data}\n />\n );\n }\n default: {\n const typenameMissingMessage = `<MediaFile /> requires the '__typename' property to exist on the 'data' prop in order to correctly render the correct component for this media. Rendering 'null' by default`;\n if (__HYDROGEN_DEV__) {\n throw new Error(typenameMissingMessage);\n } else {\n console.error(typenameMissingMessage);\n return null;\n }\n }\n }\n}\n"],"names":["MediaFile","data","mediaOptions","passthroughProps","__typename","image","noDataImage","console","warn","video","externalVideo","modelViewer","typenameMissingMessage","error"],"mappings":";;;;;AAgCO,SAASA,UAAU;AAAA,EACxBC;AAAAA,EACAC;AAAAA,KACGC;AAHqB,GAIP;AACjB,UAAQF,KAAKG,YAAb;AAAA,IACE,KAAK,cAAc;AACb,UAAA,CAACH,KAAKI,OAAO;AACf,cAAMC,cAAe;AAGd;AACLC,kBAAQC,KAAKF,WAAb;AACO,iBAAA;AAAA,QACR;AAAA,MACF;AAED,iCACG,OAAD;AAAA,QAAA,GACMH;AAAAA,QADN,GAEMD,6CAAcG;AAAAA,QAClB,MAAMJ,KAAKI;AAAAA,MAAAA,CAJf;AAAA,IAOD;AAAA,IACD,KAAK,SAAS;AACZ,iCACG,OAAD;AAAA,QAAA,GAAWF;AAAAA,QAAX,GAAiCD,6CAAcO;AAAAA,QAAO;AAAA,MAAA,CADxD;AAAA,IAGD;AAAA,IACD,KAAK,iBAAiB;AACpB,iCACG,eAAD;AAAA,QAAA,GACMN;AAAAA,QADN,GAEMD,6CAAcQ;AAAAA,QAClB;AAAA,MAAA,CAJJ;AAAA,IAOD;AAAA,IACD,KAAK,WAAW;AACd,iCACG,aAAD;AAAA,QAAA,GACMP;AAAAA,QADN,GAEMD,6CAAcS;AAAAA,QAClB;AAAA,MAAA,CAJJ;AAAA,IAOD;AAAA,IACD,SAAS;AACP,YAAMC,yBAA0B;AAGzB;AACLL,gBAAQM,MAAMD,sBAAd;AACO,eAAA;AAAA,MACR;AAAA,IACF;AAAA,EAnDH;AAqDD;"}
1
+ {"version":3,"file":"MediaFile.js","sources":["../../src/MediaFile.tsx"],"sourcesContent":["import {Image, type ShopifyImageProps} from './Image.js';\nimport {Video} from './Video.js';\nimport {ExternalVideo} from './ExternalVideo.js';\nimport {ModelViewer} from './ModelViewer.js';\nimport type {MediaEdge as MediaEdgeType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\ninterface MediaFileProps {\n /** An object with fields that correspond to the Storefront API's [Media object](https://shopify.dev/api/storefront/reference/products/media). */\n data: PartialDeep<MediaEdgeType['node'], {recurseIntoArrays: true}>;\n /** The options for the `Image`, `Video`, or `ExternalVideo` components. */\n mediaOptions?: {\n /** Props that will only apply when an `<Image />` is rendered */\n image: Omit<ShopifyImageProps, 'data'>;\n /** Props that will only apply when a `<Video />` is rendered */\n video: Omit<React.ComponentProps<typeof Video>, 'data'>;\n /** Props that will only apply when an `<ExternalVideo />` is rendered */\n externalVideo: Omit<\n React.ComponentProps<typeof ExternalVideo>['options'],\n 'data'\n >;\n /** Props that will only apply when a `<ModelViewer />` is rendered */\n modelViewer: Omit<typeof ModelViewer, 'data'>;\n };\n}\n\n/**\n * The `MediaFile` component renders the media for the Storefront API's\n * [Media object](https://shopify.dev/api/storefront/reference/products/media). It renders an `Image`, a\n * `Video`, an `ExternalVideo`, or a `ModelViewer` depending on the `__typename` of the `data` prop.\n */\nexport function MediaFile({\n data,\n mediaOptions,\n ...passthroughProps\n}: MediaFileProps) {\n switch (data.__typename) {\n case 'MediaImage': {\n if (!data.image) {\n const noDataImage = `<MediaFile/>: 'data.image' does not exist for __typename of 'MediaImage'; rendering 'null' by default.`;\n if (__HYDROGEN_DEV__) {\n throw new Error(noDataImage);\n } else {\n console.warn(noDataImage);\n return null;\n }\n }\n\n return (\n <Image\n {...passthroughProps}\n {...mediaOptions?.image}\n data={data.image}\n />\n );\n }\n case 'Video': {\n return (\n <Video {...passthroughProps} {...mediaOptions?.video} data={data} />\n );\n }\n case 'ExternalVideo': {\n return (\n <ExternalVideo\n {...passthroughProps}\n {...mediaOptions?.externalVideo}\n data={data}\n />\n );\n }\n case 'Model3d': {\n return (\n <ModelViewer\n {...passthroughProps}\n {...mediaOptions?.modelViewer}\n data={data}\n />\n );\n }\n default: {\n const typenameMissingMessage = `<MediaFile /> requires the '__typename' property to exist on the 'data' prop in order to correctly render the correct component for this media. Rendering 'null' by default`;\n if (__HYDROGEN_DEV__) {\n throw new Error(typenameMissingMessage);\n } else {\n console.error(typenameMissingMessage);\n return null;\n }\n }\n }\n}\n"],"names":["MediaFile","data","mediaOptions","passthroughProps","__typename","image","noDataImage","console","warn","video","externalVideo","modelViewer","typenameMissingMessage","error"],"mappings":";;;;;AA+BO,SAASA,UAAU;AAAA,EACxBC;AAAAA,EACAC;AAAAA,KACGC;AAHqB,GAIP;AACjB,UAAQF,KAAKG,YAAb;AAAA,IACE,KAAK,cAAc;AACb,UAAA,CAACH,KAAKI,OAAO;AACf,cAAMC,cAAe;AAGd;AACLC,kBAAQC,KAAKF,WAAb;AACO,iBAAA;AAAA,QACR;AAAA,MACF;AAED,iCACG,OAAD;AAAA,QAAA,GACMH;AAAAA,QADN,GAEMD,6CAAcG;AAAAA,QAClB,MAAMJ,KAAKI;AAAAA,MAAAA,CAJf;AAAA,IAOD;AAAA,IACD,KAAK,SAAS;AACZ,iCACG,OAAD;AAAA,QAAA,GAAWF;AAAAA,QAAX,GAAiCD,6CAAcO;AAAAA,QAAO;AAAA,MAAA,CADxD;AAAA,IAGD;AAAA,IACD,KAAK,iBAAiB;AACpB,iCACG,eAAD;AAAA,QAAA,GACMN;AAAAA,QADN,GAEMD,6CAAcQ;AAAAA,QAClB;AAAA,MAAA,CAJJ;AAAA,IAOD;AAAA,IACD,KAAK,WAAW;AACd,iCACG,aAAD;AAAA,QAAA,GACMP;AAAAA,QADN,GAEMD,6CAAcS;AAAAA,QAClB;AAAA,MAAA,CAJJ;AAAA,IAOD;AAAA,IACD,SAAS;AACP,YAAMC,yBAA0B;AAGzB;AACLL,gBAAQM,MAAMD,sBAAd;AACO,eAAA;AAAA,MACR;AAAA,IACF;AAAA,EAnDH;AAqDD;"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const react = require("react");
3
+ const require$$0 = require("react");
4
4
  const ShopifyProvider = require("./ShopifyProvider.cjs");
5
5
  const Image = require("./Image.cjs");
6
6
  const Video = require("./Video.cjs");
@@ -16,7 +16,7 @@ function Metafield(props) {
16
16
  const {
17
17
  locale
18
18
  } = ShopifyProvider.useShop();
19
- const parsedMetafield = react.useMemo(() => parseMetafield(data), [data]);
19
+ const parsedMetafield = require$$0.useMemo(() => parseMetafield(data), [data]);
20
20
  if (!parsedMetafield) {
21
21
  const noDataPropWarning = `<Metafield/>: nothing was passed to the data prop 'data'. Rendering 'null'`;
22
22
  {