@shopify/hydrogen-react 2022.10.0 → 2022.10.2

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 (446) hide show
  1. package/dist/dev/AddToCartButton.js +70 -0
  2. package/dist/dev/AddToCartButton.js.map +1 -0
  3. package/dist/dev/AddToCartButton.mjs +70 -0
  4. package/dist/dev/AddToCartButton.mjs.map +1 -0
  5. package/dist/dev/BaseButton.js +31 -0
  6. package/dist/dev/BaseButton.js.map +1 -0
  7. package/dist/dev/BaseButton.mjs +31 -0
  8. package/dist/dev/BaseButton.mjs.map +1 -0
  9. package/dist/dev/BuyNowButton.js +45 -0
  10. package/dist/dev/BuyNowButton.js.map +1 -0
  11. package/dist/dev/BuyNowButton.mjs +45 -0
  12. package/dist/dev/BuyNowButton.mjs.map +1 -0
  13. package/dist/dev/CartCheckoutButton.js +30 -0
  14. package/dist/dev/CartCheckoutButton.js.map +1 -0
  15. package/dist/dev/CartCheckoutButton.mjs +30 -0
  16. package/dist/dev/CartCheckoutButton.mjs.map +1 -0
  17. package/dist/dev/CartProvider.js +35 -35
  18. package/dist/dev/CartProvider.js.map +1 -1
  19. package/dist/dev/{CartProvider.cjs → CartProvider.mjs} +36 -36
  20. package/dist/dev/{CartProvider.cjs.map → CartProvider.mjs.map} +1 -1
  21. package/dist/dev/ExternalVideo.js +5 -5
  22. package/dist/dev/ExternalVideo.js.map +1 -1
  23. package/dist/dev/{ExternalVideo.cjs → ExternalVideo.mjs} +6 -6
  24. package/dist/{prod/ExternalVideo.cjs.map → dev/ExternalVideo.mjs.map} +1 -1
  25. package/dist/dev/Image.js +12 -12
  26. package/dist/dev/Image.js.map +1 -1
  27. package/dist/dev/{Image.cjs → Image.mjs} +13 -13
  28. package/dist/dev/{Image.cjs.map → Image.mjs.map} +1 -1
  29. package/dist/dev/MediaFile.js +12 -12
  30. package/dist/dev/MediaFile.js.map +1 -1
  31. package/dist/dev/{MediaFile.cjs → MediaFile.mjs} +13 -13
  32. package/dist/dev/MediaFile.mjs.map +1 -0
  33. package/dist/dev/Metafield.js +38 -32
  34. package/dist/dev/Metafield.js.map +1 -1
  35. package/dist/dev/{Metafield.cjs → Metafield.mjs} +39 -33
  36. package/dist/dev/Metafield.mjs.map +1 -0
  37. package/dist/dev/ModelViewer.js +11 -11
  38. package/dist/dev/ModelViewer.js.map +1 -1
  39. package/dist/dev/{ModelViewer.cjs → ModelViewer.mjs} +12 -12
  40. package/dist/dev/{ModelViewer.cjs.map → ModelViewer.mjs.map} +1 -1
  41. package/dist/dev/Money.js +8 -8
  42. package/dist/dev/Money.js.map +1 -1
  43. package/dist/{prod/Money.cjs → dev/Money.mjs} +9 -9
  44. package/dist/dev/{Money.cjs.map → Money.mjs.map} +1 -1
  45. package/dist/dev/ProductPrice.js +9 -9
  46. package/dist/dev/ProductPrice.js.map +1 -1
  47. package/dist/{prod/ProductPrice.cjs → dev/ProductPrice.mjs} +10 -10
  48. package/dist/dev/ProductPrice.mjs.map +1 -0
  49. package/dist/dev/ProductProvider.js +25 -25
  50. package/dist/dev/ProductProvider.js.map +1 -1
  51. package/dist/{prod/ProductProvider.cjs → dev/ProductProvider.mjs} +26 -26
  52. package/dist/dev/{ProductProvider.cjs.map → ProductProvider.mjs.map} +1 -1
  53. package/dist/dev/ShopPayButton.js +13 -13
  54. package/dist/dev/ShopPayButton.js.map +1 -1
  55. package/dist/{prod/ShopPayButton.cjs → dev/ShopPayButton.mjs} +14 -14
  56. package/dist/{prod/ShopPayButton.cjs.map → dev/ShopPayButton.mjs.map} +1 -1
  57. package/dist/dev/ShopifyProvider.js +14 -14
  58. package/dist/dev/ShopifyProvider.js.map +1 -1
  59. package/dist/dev/ShopifyProvider.mjs +46 -0
  60. package/dist/dev/{ShopifyProvider.cjs.map → ShopifyProvider.mjs.map} +1 -1
  61. package/dist/dev/Video.js +9 -9
  62. package/dist/dev/Video.js.map +1 -1
  63. package/dist/dev/{Video.cjs → Video.mjs} +10 -10
  64. package/dist/dev/{Video.cjs.map → Video.mjs.map} +1 -1
  65. package/dist/dev/_virtual/index.js +3 -3
  66. package/dist/dev/_virtual/index.js.map +1 -1
  67. package/dist/dev/_virtual/index.mjs +5 -0
  68. package/dist/dev/_virtual/index.mjs.map +1 -0
  69. package/dist/dev/_virtual/use-sync-external-store-shim.development.js +3 -3
  70. package/dist/dev/_virtual/use-sync-external-store-shim.development.js.map +1 -1
  71. package/dist/dev/_virtual/use-sync-external-store-shim.development.mjs +5 -0
  72. package/dist/dev/_virtual/use-sync-external-store-shim.development.mjs.map +1 -0
  73. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.js +3 -3
  74. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.js.map +1 -1
  75. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.mjs +5 -0
  76. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.mjs.map +1 -0
  77. package/dist/dev/_virtual/with-selector.development.js +3 -3
  78. package/dist/dev/_virtual/with-selector.development.js.map +1 -1
  79. package/dist/dev/_virtual/with-selector.development.mjs +5 -0
  80. package/dist/dev/_virtual/with-selector.development.mjs.map +1 -0
  81. package/dist/dev/_virtual/with-selector.js +3 -3
  82. package/dist/dev/_virtual/with-selector.js.map +1 -1
  83. package/dist/dev/_virtual/with-selector.mjs +5 -0
  84. package/dist/dev/_virtual/with-selector.mjs.map +1 -0
  85. package/dist/dev/_virtual/with-selector.production.min.js +3 -3
  86. package/dist/dev/_virtual/with-selector.production.min.js.map +1 -1
  87. package/dist/dev/_virtual/with-selector.production.min.mjs +5 -0
  88. package/dist/dev/_virtual/with-selector.production.min.mjs.map +1 -0
  89. package/dist/dev/cart-constants.js +9 -9
  90. package/dist/dev/cart-constants.js.map +1 -1
  91. package/dist/dev/cart-constants.mjs +17 -0
  92. package/dist/dev/{cart-constants.cjs.map → cart-constants.mjs.map} +1 -1
  93. package/dist/dev/cart-hooks.js +15 -15
  94. package/dist/dev/cart-hooks.js.map +1 -1
  95. package/dist/dev/cart-hooks.mjs +48 -0
  96. package/dist/dev/{cart-hooks.cjs.map → cart-hooks.mjs.map} +1 -1
  97. package/dist/dev/cart-queries.js +11 -11
  98. package/dist/dev/cart-queries.js.map +1 -1
  99. package/dist/{prod/cart-queries.cjs → dev/cart-queries.mjs} +12 -12
  100. package/dist/dev/{cart-queries.cjs.map → cart-queries.mjs.map} +1 -1
  101. package/dist/dev/flatten-connection.js +3 -3
  102. package/dist/dev/flatten-connection.js.map +1 -1
  103. package/dist/dev/{flatten-connection.cjs → flatten-connection.mjs} +4 -4
  104. package/dist/dev/{flatten-connection.cjs.map → flatten-connection.mjs.map} +1 -1
  105. package/dist/dev/image-size.js +6 -6
  106. package/dist/dev/image-size.js.map +1 -1
  107. package/dist/dev/{image-size.cjs → image-size.mjs} +7 -7
  108. package/dist/{prod/image-size.cjs.map → dev/image-size.mjs.map} +1 -1
  109. package/dist/dev/index.js +45 -37
  110. package/dist/dev/index.js.map +1 -1
  111. package/dist/dev/index.mjs +46 -0
  112. package/dist/dev/index.mjs.map +1 -0
  113. package/dist/dev/load-script.js +7 -7
  114. package/dist/dev/load-script.js.map +1 -1
  115. package/dist/{prod/load-script.cjs → dev/load-script.mjs} +8 -8
  116. package/dist/dev/{load-script.cjs.map → load-script.mjs.map} +1 -1
  117. package/dist/dev/metafield-parser.js +103 -0
  118. package/dist/dev/metafield-parser.js.map +1 -0
  119. package/dist/dev/metafield-parser.mjs +103 -0
  120. package/dist/dev/metafield-parser.mjs.map +1 -0
  121. package/dist/dev/node_modules/@xstate/fsm/es/index.js +34 -35
  122. package/dist/dev/node_modules/@xstate/fsm/es/index.js.map +1 -1
  123. package/dist/{prod/node_modules/@xstate/fsm/es/index.cjs → dev/node_modules/@xstate/fsm/es/index.mjs} +36 -35
  124. package/dist/dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -0
  125. package/dist/dev/node_modules/@xstate/react/es/fsm.js +21 -21
  126. package/dist/dev/node_modules/@xstate/react/es/fsm.js.map +1 -1
  127. package/dist/{prod/node_modules/@xstate/react/es/fsm.cjs → dev/node_modules/@xstate/react/es/fsm.mjs} +22 -22
  128. package/dist/dev/node_modules/@xstate/react/es/{fsm.cjs.map → fsm.mjs.map} +1 -1
  129. package/dist/dev/node_modules/@xstate/react/es/useConstant.js +23 -5
  130. package/dist/dev/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  131. package/dist/dev/node_modules/@xstate/react/es/useConstant.mjs +12 -0
  132. package/dist/dev/node_modules/@xstate/react/es/useConstant.mjs.map +1 -0
  133. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js +4 -5
  134. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +1 -1
  135. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs +6 -0
  136. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/{use-isomorphic-layout-effect.browser.esm.cjs.map → use-isomorphic-layout-effect.browser.esm.mjs.map} +1 -1
  137. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +13 -11
  138. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  139. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/{with-selector.development.cjs → with-selector.development.mjs} +12 -14
  140. package/dist/{prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.cjs.map → dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map} +1 -1
  141. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +12 -10
  142. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
  143. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/{with-selector.production.min.cjs → with-selector.production.min.mjs} +11 -13
  144. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -0
  145. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +11 -9
  146. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  147. package/dist/dev/node_modules/use-sync-external-store/cjs/{use-sync-external-store-shim.development.cjs → use-sync-external-store-shim.development.mjs} +10 -12
  148. package/dist/{prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs.map → dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map} +1 -1
  149. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +11 -9
  150. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  151. package/dist/{prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.cjs → dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs} +10 -12
  152. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -0
  153. package/dist/dev/node_modules/use-sync-external-store/shim/index.js +12 -12
  154. package/dist/dev/node_modules/use-sync-external-store/shim/index.js.map +1 -1
  155. package/dist/dev/node_modules/use-sync-external-store/shim/index.mjs +21 -0
  156. package/dist/dev/node_modules/use-sync-external-store/shim/{index.cjs.map → index.mjs.map} +1 -1
  157. package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.js +7 -6
  158. package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -1
  159. package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.mjs +11 -0
  160. package/dist/dev/node_modules/use-sync-external-store/shim/{with-selector.cjs.map → with-selector.mjs.map} +1 -1
  161. package/dist/dev/storefront-api-constants.js +3 -3
  162. package/dist/dev/storefront-api-constants.js.map +1 -1
  163. package/dist/dev/storefront-api-constants.mjs +5 -0
  164. package/dist/dev/storefront-api-constants.mjs.map +1 -0
  165. package/dist/dev/storefront-client.js +6 -6
  166. package/dist/dev/storefront-client.js.map +1 -1
  167. package/dist/dev/{storefront-client.cjs → storefront-client.mjs} +7 -7
  168. package/dist/dev/storefront-client.mjs.map +1 -0
  169. package/dist/dev/useCartAPIStateMachine.js +20 -20
  170. package/dist/dev/useCartAPIStateMachine.js.map +1 -1
  171. package/dist/{prod/useCartAPIStateMachine.cjs → dev/useCartAPIStateMachine.mjs} +21 -21
  172. package/dist/dev/{useCartAPIStateMachine.cjs.map → useCartAPIStateMachine.mjs.map} +1 -1
  173. package/dist/dev/useCartActions.js +26 -26
  174. package/dist/dev/useCartActions.js.map +1 -1
  175. package/dist/{prod/useCartActions.cjs → dev/useCartActions.mjs} +27 -27
  176. package/dist/dev/{useCartActions.cjs.map → useCartActions.mjs.map} +1 -1
  177. package/dist/dev/useMoney.js +10 -10
  178. package/dist/dev/useMoney.js.map +1 -1
  179. package/dist/{prod/useMoney.cjs → dev/useMoney.mjs} +11 -11
  180. package/dist/dev/{useMoney.cjs.map → useMoney.mjs.map} +1 -1
  181. package/dist/prod/AddToCartButton.js +70 -0
  182. package/dist/prod/AddToCartButton.js.map +1 -0
  183. package/dist/prod/AddToCartButton.mjs +70 -0
  184. package/dist/prod/AddToCartButton.mjs.map +1 -0
  185. package/dist/prod/BaseButton.js +31 -0
  186. package/dist/prod/BaseButton.js.map +1 -0
  187. package/dist/prod/BaseButton.mjs +31 -0
  188. package/dist/prod/BaseButton.mjs.map +1 -0
  189. package/dist/prod/BuyNowButton.js +45 -0
  190. package/dist/prod/BuyNowButton.js.map +1 -0
  191. package/dist/prod/BuyNowButton.mjs +45 -0
  192. package/dist/prod/BuyNowButton.mjs.map +1 -0
  193. package/dist/prod/CartCheckoutButton.js +30 -0
  194. package/dist/prod/CartCheckoutButton.js.map +1 -0
  195. package/dist/prod/CartCheckoutButton.mjs +30 -0
  196. package/dist/prod/CartCheckoutButton.mjs.map +1 -0
  197. package/dist/prod/CartProvider.js +35 -35
  198. package/dist/prod/CartProvider.js.map +1 -1
  199. package/dist/prod/{CartProvider.cjs → CartProvider.mjs} +36 -36
  200. package/dist/prod/{CartProvider.cjs.map → CartProvider.mjs.map} +1 -1
  201. package/dist/prod/ExternalVideo.js +5 -5
  202. package/dist/prod/ExternalVideo.js.map +1 -1
  203. package/dist/prod/{ExternalVideo.cjs → ExternalVideo.mjs} +6 -6
  204. package/dist/{dev/ExternalVideo.cjs.map → prod/ExternalVideo.mjs.map} +1 -1
  205. package/dist/prod/Image.js +12 -12
  206. package/dist/prod/Image.js.map +1 -1
  207. package/dist/prod/{Image.cjs → Image.mjs} +13 -13
  208. package/dist/prod/{Image.cjs.map → Image.mjs.map} +1 -1
  209. package/dist/prod/MediaFile.js +12 -12
  210. package/dist/prod/MediaFile.js.map +1 -1
  211. package/dist/prod/{MediaFile.cjs → MediaFile.mjs} +13 -13
  212. package/dist/prod/MediaFile.mjs.map +1 -0
  213. package/dist/prod/Metafield.js +32 -32
  214. package/dist/prod/Metafield.js.map +1 -1
  215. package/dist/prod/{Metafield.cjs → Metafield.mjs} +33 -33
  216. package/dist/prod/Metafield.mjs.map +1 -0
  217. package/dist/prod/ModelViewer.js +11 -11
  218. package/dist/prod/ModelViewer.js.map +1 -1
  219. package/dist/prod/{ModelViewer.cjs → ModelViewer.mjs} +12 -12
  220. package/dist/prod/{ModelViewer.cjs.map → ModelViewer.mjs.map} +1 -1
  221. package/dist/prod/Money.js +8 -8
  222. package/dist/prod/Money.js.map +1 -1
  223. package/dist/{dev/Money.cjs → prod/Money.mjs} +9 -9
  224. package/dist/prod/{Money.cjs.map → Money.mjs.map} +1 -1
  225. package/dist/prod/ProductPrice.js +9 -9
  226. package/dist/prod/ProductPrice.js.map +1 -1
  227. package/dist/{dev/ProductPrice.cjs → prod/ProductPrice.mjs} +10 -10
  228. package/dist/prod/ProductPrice.mjs.map +1 -0
  229. package/dist/prod/ProductProvider.js +25 -25
  230. package/dist/prod/ProductProvider.js.map +1 -1
  231. package/dist/{dev/ProductProvider.cjs → prod/ProductProvider.mjs} +26 -26
  232. package/dist/prod/{ProductProvider.cjs.map → ProductProvider.mjs.map} +1 -1
  233. package/dist/prod/ShopPayButton.js +13 -13
  234. package/dist/prod/ShopPayButton.js.map +1 -1
  235. package/dist/{dev/ShopPayButton.cjs → prod/ShopPayButton.mjs} +14 -14
  236. package/dist/{dev/ShopPayButton.cjs.map → prod/ShopPayButton.mjs.map} +1 -1
  237. package/dist/prod/ShopifyProvider.js +14 -14
  238. package/dist/prod/ShopifyProvider.js.map +1 -1
  239. package/dist/prod/ShopifyProvider.mjs +46 -0
  240. package/dist/prod/{ShopifyProvider.cjs.map → ShopifyProvider.mjs.map} +1 -1
  241. package/dist/prod/Video.js +9 -9
  242. package/dist/prod/Video.js.map +1 -1
  243. package/dist/prod/{Video.cjs → Video.mjs} +10 -10
  244. package/dist/prod/{Video.cjs.map → Video.mjs.map} +1 -1
  245. package/dist/prod/_virtual/index.js +3 -3
  246. package/dist/prod/_virtual/index.js.map +1 -1
  247. package/dist/prod/_virtual/index.mjs +5 -0
  248. package/dist/prod/_virtual/index.mjs.map +1 -0
  249. package/dist/prod/_virtual/use-sync-external-store-shim.development.js +3 -3
  250. package/dist/prod/_virtual/use-sync-external-store-shim.development.js.map +1 -1
  251. package/dist/prod/_virtual/use-sync-external-store-shim.development.mjs +5 -0
  252. package/dist/prod/_virtual/use-sync-external-store-shim.development.mjs.map +1 -0
  253. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.js +3 -3
  254. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.js.map +1 -1
  255. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.mjs +5 -0
  256. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.mjs.map +1 -0
  257. package/dist/prod/_virtual/with-selector.development.js +3 -3
  258. package/dist/prod/_virtual/with-selector.development.js.map +1 -1
  259. package/dist/prod/_virtual/with-selector.development.mjs +5 -0
  260. package/dist/prod/_virtual/with-selector.development.mjs.map +1 -0
  261. package/dist/prod/_virtual/with-selector.js +3 -3
  262. package/dist/prod/_virtual/with-selector.js.map +1 -1
  263. package/dist/prod/_virtual/with-selector.mjs +5 -0
  264. package/dist/prod/_virtual/with-selector.mjs.map +1 -0
  265. package/dist/prod/_virtual/with-selector.production.min.js +3 -3
  266. package/dist/prod/_virtual/with-selector.production.min.js.map +1 -1
  267. package/dist/prod/_virtual/with-selector.production.min.mjs +5 -0
  268. package/dist/prod/_virtual/with-selector.production.min.mjs.map +1 -0
  269. package/dist/prod/cart-constants.js +9 -9
  270. package/dist/prod/cart-constants.js.map +1 -1
  271. package/dist/prod/cart-constants.mjs +17 -0
  272. package/dist/prod/{cart-constants.cjs.map → cart-constants.mjs.map} +1 -1
  273. package/dist/prod/cart-hooks.js +15 -15
  274. package/dist/prod/cart-hooks.js.map +1 -1
  275. package/dist/prod/cart-hooks.mjs +48 -0
  276. package/dist/prod/{cart-hooks.cjs.map → cart-hooks.mjs.map} +1 -1
  277. package/dist/prod/cart-queries.js +11 -11
  278. package/dist/prod/cart-queries.js.map +1 -1
  279. package/dist/{dev/cart-queries.cjs → prod/cart-queries.mjs} +12 -12
  280. package/dist/prod/{cart-queries.cjs.map → cart-queries.mjs.map} +1 -1
  281. package/dist/prod/flatten-connection.js +3 -3
  282. package/dist/prod/flatten-connection.js.map +1 -1
  283. package/dist/prod/{flatten-connection.cjs → flatten-connection.mjs} +4 -4
  284. package/dist/prod/{flatten-connection.cjs.map → flatten-connection.mjs.map} +1 -1
  285. package/dist/prod/image-size.js +6 -6
  286. package/dist/prod/image-size.js.map +1 -1
  287. package/dist/prod/{image-size.cjs → image-size.mjs} +7 -7
  288. package/dist/{dev/image-size.cjs.map → prod/image-size.mjs.map} +1 -1
  289. package/dist/prod/index.js +45 -37
  290. package/dist/prod/index.js.map +1 -1
  291. package/dist/prod/index.mjs +46 -0
  292. package/dist/prod/index.mjs.map +1 -0
  293. package/dist/prod/load-script.js +7 -7
  294. package/dist/prod/load-script.js.map +1 -1
  295. package/dist/{dev/load-script.cjs → prod/load-script.mjs} +8 -8
  296. package/dist/prod/{load-script.cjs.map → load-script.mjs.map} +1 -1
  297. package/dist/prod/metafield-parser.js +114 -0
  298. package/dist/prod/metafield-parser.js.map +1 -0
  299. package/dist/prod/metafield-parser.mjs +114 -0
  300. package/dist/prod/metafield-parser.mjs.map +1 -0
  301. package/dist/prod/node_modules/@xstate/fsm/es/index.js +34 -35
  302. package/dist/prod/node_modules/@xstate/fsm/es/index.js.map +1 -1
  303. package/dist/{dev/node_modules/@xstate/fsm/es/index.cjs → prod/node_modules/@xstate/fsm/es/index.mjs} +36 -35
  304. package/dist/prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -0
  305. package/dist/prod/node_modules/@xstate/react/es/fsm.js +21 -21
  306. package/dist/prod/node_modules/@xstate/react/es/fsm.js.map +1 -1
  307. package/dist/{dev/node_modules/@xstate/react/es/fsm.cjs → prod/node_modules/@xstate/react/es/fsm.mjs} +22 -22
  308. package/dist/prod/node_modules/@xstate/react/es/{fsm.cjs.map → fsm.mjs.map} +1 -1
  309. package/dist/prod/node_modules/@xstate/react/es/useConstant.js +23 -5
  310. package/dist/prod/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  311. package/dist/prod/node_modules/@xstate/react/es/useConstant.mjs +12 -0
  312. package/dist/prod/node_modules/@xstate/react/es/useConstant.mjs.map +1 -0
  313. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js +4 -5
  314. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +1 -1
  315. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs +6 -0
  316. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/{use-isomorphic-layout-effect.browser.esm.cjs.map → use-isomorphic-layout-effect.browser.esm.mjs.map} +1 -1
  317. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +13 -11
  318. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  319. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/{with-selector.development.cjs → with-selector.development.mjs} +12 -14
  320. package/dist/{dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.cjs.map → prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map} +1 -1
  321. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +12 -10
  322. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
  323. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/{with-selector.production.min.cjs → with-selector.production.min.mjs} +11 -13
  324. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -0
  325. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +11 -9
  326. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  327. package/dist/prod/node_modules/use-sync-external-store/cjs/{use-sync-external-store-shim.development.cjs → use-sync-external-store-shim.development.mjs} +10 -12
  328. package/dist/{dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.cjs.map → prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map} +1 -1
  329. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +11 -9
  330. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  331. package/dist/{dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.cjs → prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs} +10 -12
  332. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -0
  333. package/dist/prod/node_modules/use-sync-external-store/shim/index.js +12 -12
  334. package/dist/prod/node_modules/use-sync-external-store/shim/index.js.map +1 -1
  335. package/dist/prod/node_modules/use-sync-external-store/shim/index.mjs +21 -0
  336. package/dist/prod/node_modules/use-sync-external-store/shim/{index.cjs.map → index.mjs.map} +1 -1
  337. package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.js +7 -6
  338. package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -1
  339. package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.mjs +11 -0
  340. package/dist/prod/node_modules/use-sync-external-store/shim/{with-selector.cjs.map → with-selector.mjs.map} +1 -1
  341. package/dist/prod/storefront-api-constants.js +3 -3
  342. package/dist/prod/storefront-api-constants.js.map +1 -1
  343. package/dist/prod/storefront-api-constants.mjs +5 -0
  344. package/dist/prod/storefront-api-constants.mjs.map +1 -0
  345. package/dist/prod/storefront-client.js +6 -6
  346. package/dist/prod/storefront-client.js.map +1 -1
  347. package/dist/prod/{storefront-client.cjs → storefront-client.mjs} +7 -7
  348. package/dist/prod/storefront-client.mjs.map +1 -0
  349. package/dist/prod/useCartAPIStateMachine.js +20 -20
  350. package/dist/prod/useCartAPIStateMachine.js.map +1 -1
  351. package/dist/{dev/useCartAPIStateMachine.cjs → prod/useCartAPIStateMachine.mjs} +21 -21
  352. package/dist/prod/{useCartAPIStateMachine.cjs.map → useCartAPIStateMachine.mjs.map} +1 -1
  353. package/dist/prod/useCartActions.js +26 -26
  354. package/dist/prod/useCartActions.js.map +1 -1
  355. package/dist/{dev/useCartActions.cjs → prod/useCartActions.mjs} +27 -27
  356. package/dist/prod/{useCartActions.cjs.map → useCartActions.mjs.map} +1 -1
  357. package/dist/prod/useMoney.js +10 -10
  358. package/dist/prod/useMoney.js.map +1 -1
  359. package/dist/{dev/useMoney.cjs → prod/useMoney.mjs} +11 -11
  360. package/dist/prod/{useMoney.cjs.map → useMoney.mjs.map} +1 -1
  361. package/dist/types/AddToCartButton.d.ts +22 -0
  362. package/dist/types/BaseButton.d.ts +15 -0
  363. package/dist/types/BuyNowButton.d.ts +15 -0
  364. package/dist/types/CartCheckoutButton.d.ts +12 -0
  365. package/dist/types/CartCost.d.ts +13 -0
  366. package/dist/types/MediaFile.d.ts +3 -1
  367. package/dist/types/Metafield.d.ts +3 -0
  368. package/dist/types/ProductPrice.d.ts +1 -2
  369. package/dist/types/index.d.cts +4 -0
  370. package/dist/types/index.d.ts +4 -0
  371. package/dist/types/metafield-parser.d.ts +222 -0
  372. package/dist/umd/hydrogen-react.dev.js +483 -204
  373. package/dist/umd/hydrogen-react.dev.js.map +1 -1
  374. package/dist/umd/hydrogen-react.prod.js +17 -17
  375. package/dist/umd/hydrogen-react.prod.js.map +1 -1
  376. package/package.json +25 -17
  377. package/dist/dev/MediaFile.cjs.map +0 -1
  378. package/dist/dev/Metafield.cjs.map +0 -1
  379. package/dist/dev/ProductPrice.cjs.map +0 -1
  380. package/dist/dev/ShopifyProvider.cjs +0 -46
  381. package/dist/dev/_virtual/index.cjs +0 -5
  382. package/dist/dev/_virtual/index.cjs.map +0 -1
  383. package/dist/dev/_virtual/use-sync-external-store-shim.development.cjs +0 -5
  384. package/dist/dev/_virtual/use-sync-external-store-shim.development.cjs.map +0 -1
  385. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.cjs +0 -5
  386. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.cjs.map +0 -1
  387. package/dist/dev/_virtual/with-selector.cjs +0 -5
  388. package/dist/dev/_virtual/with-selector.cjs.map +0 -1
  389. package/dist/dev/_virtual/with-selector.development.cjs +0 -5
  390. package/dist/dev/_virtual/with-selector.development.cjs.map +0 -1
  391. package/dist/dev/_virtual/with-selector.production.min.cjs +0 -5
  392. package/dist/dev/_virtual/with-selector.production.min.cjs.map +0 -1
  393. package/dist/dev/cart-constants.cjs +0 -17
  394. package/dist/dev/cart-hooks.cjs +0 -48
  395. package/dist/dev/index.cjs +0 -38
  396. package/dist/dev/index.cjs.map +0 -1
  397. package/dist/dev/node_modules/@xstate/fsm/es/index.cjs.map +0 -1
  398. package/dist/dev/node_modules/@xstate/react/es/useConstant.cjs +0 -30
  399. package/dist/dev/node_modules/@xstate/react/es/useConstant.cjs.map +0 -1
  400. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.cjs +0 -5
  401. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.cjs.map +0 -1
  402. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.cjs.map +0 -1
  403. package/dist/dev/node_modules/use-sync-external-store/shim/index.cjs +0 -21
  404. package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.cjs +0 -12
  405. package/dist/dev/node_modules/worktop/cookie/index.cjs +0 -27
  406. package/dist/dev/node_modules/worktop/cookie/index.cjs.map +0 -1
  407. package/dist/dev/node_modules/worktop/cookie/index.js +0 -27
  408. package/dist/dev/node_modules/worktop/cookie/index.js.map +0 -1
  409. package/dist/dev/storefront-api-constants.cjs +0 -5
  410. package/dist/dev/storefront-api-constants.cjs.map +0 -1
  411. package/dist/dev/storefront-client.cjs.map +0 -1
  412. package/dist/prod/MediaFile.cjs.map +0 -1
  413. package/dist/prod/Metafield.cjs.map +0 -1
  414. package/dist/prod/ProductPrice.cjs.map +0 -1
  415. package/dist/prod/ShopifyProvider.cjs +0 -46
  416. package/dist/prod/_virtual/index.cjs +0 -5
  417. package/dist/prod/_virtual/index.cjs.map +0 -1
  418. package/dist/prod/_virtual/use-sync-external-store-shim.development.cjs +0 -5
  419. package/dist/prod/_virtual/use-sync-external-store-shim.development.cjs.map +0 -1
  420. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.cjs +0 -5
  421. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.cjs.map +0 -1
  422. package/dist/prod/_virtual/with-selector.cjs +0 -5
  423. package/dist/prod/_virtual/with-selector.cjs.map +0 -1
  424. package/dist/prod/_virtual/with-selector.development.cjs +0 -5
  425. package/dist/prod/_virtual/with-selector.development.cjs.map +0 -1
  426. package/dist/prod/_virtual/with-selector.production.min.cjs +0 -5
  427. package/dist/prod/_virtual/with-selector.production.min.cjs.map +0 -1
  428. package/dist/prod/cart-constants.cjs +0 -17
  429. package/dist/prod/cart-hooks.cjs +0 -48
  430. package/dist/prod/index.cjs +0 -38
  431. package/dist/prod/index.cjs.map +0 -1
  432. package/dist/prod/node_modules/@xstate/fsm/es/index.cjs.map +0 -1
  433. package/dist/prod/node_modules/@xstate/react/es/useConstant.cjs +0 -30
  434. package/dist/prod/node_modules/@xstate/react/es/useConstant.cjs.map +0 -1
  435. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.cjs +0 -5
  436. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.cjs.map +0 -1
  437. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.cjs.map +0 -1
  438. package/dist/prod/node_modules/use-sync-external-store/shim/index.cjs +0 -21
  439. package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.cjs +0 -12
  440. package/dist/prod/node_modules/worktop/cookie/index.cjs +0 -27
  441. package/dist/prod/node_modules/worktop/cookie/index.cjs.map +0 -1
  442. package/dist/prod/node_modules/worktop/cookie/index.js +0 -27
  443. package/dist/prod/node_modules/worktop/cookie/index.js.map +0 -1
  444. package/dist/prod/storefront-api-constants.cjs +0 -5
  445. package/dist/prod/storefront-api-constants.cjs.map +0 -1
  446. package/dist/prod/storefront-client.cjs.map +0 -1
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const require$$0 = require("react");
4
+ const CartProvider = require("./CartProvider.js");
5
+ const ProductProvider = require("./ProductProvider.js");
6
+ const BaseButton = require("./BaseButton.js");
7
+ const jsxRuntime = require("react/jsx-runtime");
8
+ function AddToCartButton(props) {
9
+ var _a;
10
+ const [addingItem, setAddingItem] = require$$0.useState(false);
11
+ const {
12
+ variantId: explicitVariantId,
13
+ quantity = 1,
14
+ attributes,
15
+ sellingPlanId,
16
+ onClick,
17
+ children,
18
+ accessibleAddingToCartLabel,
19
+ ...passthroughProps
20
+ } = props;
21
+ const {
22
+ status,
23
+ linesAdd
24
+ } = CartProvider.useCart();
25
+ const {
26
+ selectedVariant
27
+ } = ProductProvider.useProduct();
28
+ const variantId = (_a = explicitVariantId != null ? explicitVariantId : selectedVariant == null ? void 0 : selectedVariant.id) != null ? _a : "";
29
+ const disabled = explicitVariantId === null || variantId === "" || selectedVariant === null || addingItem || passthroughProps.disabled;
30
+ require$$0.useEffect(() => {
31
+ if (addingItem && status === "idle") {
32
+ setAddingItem(false);
33
+ }
34
+ }, [status, addingItem]);
35
+ const handleAddItem = require$$0.useCallback(() => {
36
+ setAddingItem(true);
37
+ linesAdd([{
38
+ quantity,
39
+ merchandiseId: variantId || "",
40
+ attributes,
41
+ sellingPlanId
42
+ }]);
43
+ }, [linesAdd, quantity, variantId, attributes, sellingPlanId]);
44
+ return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, {
45
+ children: [/* @__PURE__ */ jsxRuntime.jsx(BaseButton.BaseButton, {
46
+ ...passthroughProps,
47
+ disabled,
48
+ onClick,
49
+ defaultOnClick: handleAddItem,
50
+ children
51
+ }), accessibleAddingToCartLabel ? /* @__PURE__ */ jsxRuntime.jsx("p", {
52
+ style: {
53
+ position: "absolute",
54
+ width: "1px",
55
+ height: "1px",
56
+ padding: "0",
57
+ margin: "-1px",
58
+ overflow: "hidden",
59
+ clip: "rect(0, 0, 0, 0)",
60
+ whiteSpace: "nowrap",
61
+ borderWidth: "0"
62
+ },
63
+ role: "alert",
64
+ "aria-live": "assertive",
65
+ children: addingItem ? accessibleAddingToCartLabel : null
66
+ }) : null]
67
+ });
68
+ }
69
+ exports.AddToCartButton = AddToCartButton;
70
+ //# sourceMappingURL=AddToCartButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddToCartButton.js","sources":["../../src/AddToCartButton.tsx"],"sourcesContent":["import {useCallback, useEffect, useState} from 'react';\n\nimport {useCart} from './CartProvider.js';\nimport {useProduct} from './ProductProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ninterface AddToCartButtonProps {\n /** An array of cart line attributes that belong to the item being added to the cart. */\n attributes?: {\n key: string;\n value: string;\n }[];\n /** The ID of the variant. */\n variantId?: string | null;\n /** The item quantity. */\n quantity?: number;\n /** The text that is announced by the screen reader when the item is being added to the cart. Used for accessibility purposes only and not displayed on the page. */\n accessibleAddingToCartLabel?: string;\n /** The selling plan ID of the subscription variant */\n sellingPlanId?: string;\n}\n\n/**\n * The `AddToCartButton` component renders a button that adds an item to the cart when pressed.\n * It must be a descendent of the `CartProvider` component.\n */\nexport function AddToCartButton<AsType extends React.ElementType = 'button'>(\n props: AddToCartButtonProps & BaseButtonProps<AsType>\n) {\n const [addingItem, setAddingItem] = useState<boolean>(false);\n const {\n variantId: explicitVariantId,\n quantity = 1,\n attributes,\n sellingPlanId,\n onClick,\n children,\n accessibleAddingToCartLabel,\n ...passthroughProps\n } = props;\n const {status, linesAdd} = useCart();\n const {selectedVariant} = useProduct();\n const variantId = explicitVariantId ?? selectedVariant?.id ?? '';\n const disabled =\n explicitVariantId === null ||\n variantId === '' ||\n selectedVariant === null ||\n addingItem ||\n passthroughProps.disabled;\n\n useEffect(() => {\n if (addingItem && status === 'idle') {\n setAddingItem(false);\n }\n }, [status, addingItem]);\n\n const handleAddItem = useCallback(() => {\n setAddingItem(true);\n linesAdd([\n {\n quantity,\n merchandiseId: variantId || '',\n attributes,\n sellingPlanId,\n },\n ]);\n }, [linesAdd, quantity, variantId, attributes, sellingPlanId]);\n\n return (\n <>\n <BaseButton\n {...passthroughProps}\n disabled={disabled}\n onClick={onClick}\n defaultOnClick={handleAddItem}\n >\n {children}\n </BaseButton>\n {accessibleAddingToCartLabel ? (\n <p\n style={{\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: '0',\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n borderWidth: '0',\n }}\n role=\"alert\"\n aria-live=\"assertive\"\n >\n {addingItem ? accessibleAddingToCartLabel : null}\n </p>\n ) : null}\n </>\n );\n}\n"],"names":["AddToCartButton","props","addingItem","setAddingItem","useState","variantId","explicitVariantId","quantity","attributes","sellingPlanId","onClick","children","accessibleAddingToCartLabel","passthroughProps","status","linesAdd","useCart","selectedVariant","useProduct","id","disabled","useEffect","handleAddItem","useCallback","merchandiseId","_Fragment","_jsx","BaseButton","position","width","height","padding","margin","overflow","clip","whiteSpace","borderWidth"],"mappings":";;;;;;;AA0BO,SAASA,gBACdC,OACA;;AACA,QAAM,CAACC,YAAYC,aAAb,IAA8BC,oBAAkB,KAAV;AACtC,QAAA;AAAA,IACJC,WAAWC;AAAAA,IACXC,WAAW;AAAA,IACXC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDZ,IAAAA;AACE,QAAA;AAAA,IAACa;AAAAA,IAAQC;AAAAA,MAAYC,aAA3B,QAAA;AACM,QAAA;AAAA,IAACC;AAAAA,MAAmBC,gBAA1B,WAAA;AACMb,QAAAA,aAAYC,qDAAqBW,mDAAiBE,OAAtCb,YAA4C;AACxDc,QAAAA,WACJd,sBAAsB,QACtBD,cAAc,MACdY,oBAAoB,QACpBf,cACAW,iBAAiBO;AAEnBC,aAAAA,UAAU,MAAM;AACVnB,QAAAA,cAAcY,WAAW,QAAQ;AACnCX,oBAAc,KAAD;AAAA,IACd;AAAA,EAAA,GACA,CAACW,QAAQZ,UAAT,CAJM;AAMHoB,QAAAA,gBAAgBC,WAAAA,YAAY,MAAM;AACtCpB,kBAAc,IAAD;AACbY,aAAS,CACP;AAAA,MACER;AAAAA,MACAiB,eAAenB,aAAa;AAAA,MAC5BG;AAAAA,MACAC;AAAAA,IALK,CAAA,CAAD;AAAA,EAAA,GAQP,CAACM,UAAUR,UAAUF,WAAWG,YAAYC,aAA5C,CAV8B;AAYjC,yCACEgB,WAAAA,UAAA;AAAA,IAAA,UACE,CAAAC,2BAAA,IAACC,uBAAD;AAAA,MAAA,GACMd;AAAAA,MACJ;AAAA,MACA;AAAA,MACA,gBAAgBS;AAAAA,MAJlB;AAAA,IAAA,CADF,GASGV,8BACCc,2BAAA,IAAA,KAAA;AAAA,MACE,OAAO;AAAA,QACLE,UAAU;AAAA,QACVC,OAAO;AAAA,QACPC,QAAQ;AAAA,QACRC,SAAS;AAAA,QACTC,QAAQ;AAAA,QACRC,UAAU;AAAA,QACVC,MAAM;AAAA,QACNC,YAAY;AAAA,QACZC,aAAa;AAAA,MATR;AAAA,MAWP,MAAK;AAAA,MACL,aAAU;AAAA,MAbZ,UAeGlC,aAAaU,8BAA8B;AAAA,IAf9C,CAAA,IAiBE,IA3BN;AAAA,EAAA,CADF;AA+BD;;"}
@@ -0,0 +1,70 @@
1
+ import { useState, useEffect, useCallback } from "react";
2
+ import { useCart } from "./CartProvider.mjs";
3
+ import { useProduct } from "./ProductProvider.mjs";
4
+ import { BaseButton } from "./BaseButton.mjs";
5
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
6
+ function AddToCartButton(props) {
7
+ var _a;
8
+ const [addingItem, setAddingItem] = useState(false);
9
+ const {
10
+ variantId: explicitVariantId,
11
+ quantity = 1,
12
+ attributes,
13
+ sellingPlanId,
14
+ onClick,
15
+ children,
16
+ accessibleAddingToCartLabel,
17
+ ...passthroughProps
18
+ } = props;
19
+ const {
20
+ status,
21
+ linesAdd
22
+ } = useCart();
23
+ const {
24
+ selectedVariant
25
+ } = useProduct();
26
+ const variantId = (_a = explicitVariantId != null ? explicitVariantId : selectedVariant == null ? void 0 : selectedVariant.id) != null ? _a : "";
27
+ const disabled = explicitVariantId === null || variantId === "" || selectedVariant === null || addingItem || passthroughProps.disabled;
28
+ useEffect(() => {
29
+ if (addingItem && status === "idle") {
30
+ setAddingItem(false);
31
+ }
32
+ }, [status, addingItem]);
33
+ const handleAddItem = useCallback(() => {
34
+ setAddingItem(true);
35
+ linesAdd([{
36
+ quantity,
37
+ merchandiseId: variantId || "",
38
+ attributes,
39
+ sellingPlanId
40
+ }]);
41
+ }, [linesAdd, quantity, variantId, attributes, sellingPlanId]);
42
+ return /* @__PURE__ */ jsxs(Fragment, {
43
+ children: [/* @__PURE__ */ jsx(BaseButton, {
44
+ ...passthroughProps,
45
+ disabled,
46
+ onClick,
47
+ defaultOnClick: handleAddItem,
48
+ children
49
+ }), accessibleAddingToCartLabel ? /* @__PURE__ */ jsx("p", {
50
+ style: {
51
+ position: "absolute",
52
+ width: "1px",
53
+ height: "1px",
54
+ padding: "0",
55
+ margin: "-1px",
56
+ overflow: "hidden",
57
+ clip: "rect(0, 0, 0, 0)",
58
+ whiteSpace: "nowrap",
59
+ borderWidth: "0"
60
+ },
61
+ role: "alert",
62
+ "aria-live": "assertive",
63
+ children: addingItem ? accessibleAddingToCartLabel : null
64
+ }) : null]
65
+ });
66
+ }
67
+ export {
68
+ AddToCartButton
69
+ };
70
+ //# sourceMappingURL=AddToCartButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddToCartButton.mjs","sources":["../../src/AddToCartButton.tsx"],"sourcesContent":["import {useCallback, useEffect, useState} from 'react';\n\nimport {useCart} from './CartProvider.js';\nimport {useProduct} from './ProductProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ninterface AddToCartButtonProps {\n /** An array of cart line attributes that belong to the item being added to the cart. */\n attributes?: {\n key: string;\n value: string;\n }[];\n /** The ID of the variant. */\n variantId?: string | null;\n /** The item quantity. */\n quantity?: number;\n /** The text that is announced by the screen reader when the item is being added to the cart. Used for accessibility purposes only and not displayed on the page. */\n accessibleAddingToCartLabel?: string;\n /** The selling plan ID of the subscription variant */\n sellingPlanId?: string;\n}\n\n/**\n * The `AddToCartButton` component renders a button that adds an item to the cart when pressed.\n * It must be a descendent of the `CartProvider` component.\n */\nexport function AddToCartButton<AsType extends React.ElementType = 'button'>(\n props: AddToCartButtonProps & BaseButtonProps<AsType>\n) {\n const [addingItem, setAddingItem] = useState<boolean>(false);\n const {\n variantId: explicitVariantId,\n quantity = 1,\n attributes,\n sellingPlanId,\n onClick,\n children,\n accessibleAddingToCartLabel,\n ...passthroughProps\n } = props;\n const {status, linesAdd} = useCart();\n const {selectedVariant} = useProduct();\n const variantId = explicitVariantId ?? selectedVariant?.id ?? '';\n const disabled =\n explicitVariantId === null ||\n variantId === '' ||\n selectedVariant === null ||\n addingItem ||\n passthroughProps.disabled;\n\n useEffect(() => {\n if (addingItem && status === 'idle') {\n setAddingItem(false);\n }\n }, [status, addingItem]);\n\n const handleAddItem = useCallback(() => {\n setAddingItem(true);\n linesAdd([\n {\n quantity,\n merchandiseId: variantId || '',\n attributes,\n sellingPlanId,\n },\n ]);\n }, [linesAdd, quantity, variantId, attributes, sellingPlanId]);\n\n return (\n <>\n <BaseButton\n {...passthroughProps}\n disabled={disabled}\n onClick={onClick}\n defaultOnClick={handleAddItem}\n >\n {children}\n </BaseButton>\n {accessibleAddingToCartLabel ? (\n <p\n style={{\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: '0',\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n borderWidth: '0',\n }}\n role=\"alert\"\n aria-live=\"assertive\"\n >\n {addingItem ? accessibleAddingToCartLabel : null}\n </p>\n ) : null}\n </>\n );\n}\n"],"names":["AddToCartButton","props","addingItem","setAddingItem","useState","variantId","explicitVariantId","quantity","attributes","sellingPlanId","onClick","children","accessibleAddingToCartLabel","passthroughProps","status","linesAdd","useCart","selectedVariant","useProduct","id","disabled","useEffect","handleAddItem","useCallback","merchandiseId","_Fragment","_jsx","position","width","height","padding","margin","overflow","clip","whiteSpace","borderWidth"],"mappings":";;;;;AA0BO,SAASA,gBACdC,OACA;;AACA,QAAM,CAACC,YAAYC,aAAb,IAA8BC,SAAkB,KAAV;AACtC,QAAA;AAAA,IACJC,WAAWC;AAAAA,IACXC,WAAW;AAAA,IACXC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDZ,IAAAA;AACE,QAAA;AAAA,IAACa;AAAAA,IAAQC;AAAAA,MAAYC,QAA3B;AACM,QAAA;AAAA,IAACC;AAAAA,MAAmBC,WAA1B;AACMb,QAAAA,aAAYC,qDAAqBW,mDAAiBE,OAAtCb,YAA4C;AACxDc,QAAAA,WACJd,sBAAsB,QACtBD,cAAc,MACdY,oBAAoB,QACpBf,cACAW,iBAAiBO;AAEnBC,YAAU,MAAM;AACVnB,QAAAA,cAAcY,WAAW,QAAQ;AACnCX,oBAAc,KAAD;AAAA,IACd;AAAA,EAAA,GACA,CAACW,QAAQZ,UAAT,CAJM;AAMHoB,QAAAA,gBAAgBC,YAAY,MAAM;AACtCpB,kBAAc,IAAD;AACbY,aAAS,CACP;AAAA,MACER;AAAAA,MACAiB,eAAenB,aAAa;AAAA,MAC5BG;AAAAA,MACAC;AAAAA,IALK,CAAA,CAAD;AAAA,EAAA,GAQP,CAACM,UAAUR,UAAUF,WAAWG,YAAYC,aAA5C,CAV8B;AAYjC,8BACEgB,UAAA;AAAA,IAAA,UACE,CAAAC,oBAAC,YAAD;AAAA,MAAA,GACMb;AAAAA,MACJ;AAAA,MACA;AAAA,MACA,gBAAgBS;AAAAA,MAJlB;AAAA,IAAA,CADF,GASGV,8BACCc,oBAAA,KAAA;AAAA,MACE,OAAO;AAAA,QACLC,UAAU;AAAA,QACVC,OAAO;AAAA,QACPC,QAAQ;AAAA,QACRC,SAAS;AAAA,QACTC,QAAQ;AAAA,QACRC,UAAU;AAAA,QACVC,MAAM;AAAA,QACNC,YAAY;AAAA,QACZC,aAAa;AAAA,MATR;AAAA,MAWP,MAAK;AAAA,MACL,aAAU;AAAA,MAbZ,UAeGjC,aAAaU,8BAA8B;AAAA,IAf9C,CAAA,IAiBE,IA3BN;AAAA,EAAA,CADF;AA+BD;"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const require$$0 = require("react");
4
+ const jsxRuntime = require("react/jsx-runtime");
5
+ function BaseButton(props) {
6
+ const {
7
+ as,
8
+ onClick,
9
+ defaultOnClick,
10
+ children,
11
+ buttonRef,
12
+ ...passthroughProps
13
+ } = props;
14
+ const handleOnClick = require$$0.useCallback((event) => {
15
+ if (onClick) {
16
+ const clickShouldContinue = onClick(event);
17
+ if (typeof clickShouldContinue === "boolean" && clickShouldContinue === false || (event == null ? void 0 : event.defaultPrevented))
18
+ return;
19
+ }
20
+ defaultOnClick == null ? void 0 : defaultOnClick(event);
21
+ }, [defaultOnClick, onClick]);
22
+ const Component = as || "button";
23
+ return /* @__PURE__ */ jsxRuntime.jsx(Component, {
24
+ ref: buttonRef,
25
+ onClick: handleOnClick,
26
+ ...passthroughProps,
27
+ children
28
+ });
29
+ }
30
+ exports.BaseButton = BaseButton;
31
+ //# sourceMappingURL=BaseButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseButton.js","sources":["../../src/BaseButton.tsx"],"sourcesContent":["import {ReactNode, Ref, useCallback} from 'react';\n\nexport interface CustomBaseButtonProps<AsType> {\n /** Provide a React element or component to render as the underlying button. Note: for accessibility compliance, almost always you should use a `button` element, or a component that renders an underlying button. */\n as?: AsType;\n /** Any ReactNode elements. */\n children: ReactNode;\n /** Click event handler. Default behaviour triggers unless prevented */\n onClick?: (\n event?: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => void | boolean;\n /** A default onClick behavior */\n defaultOnClick?: (\n event?: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => void | boolean;\n /** A ref to the underlying button */\n buttonRef?: Ref<HTMLButtonElement>;\n}\n\nexport type BaseButtonProps<AsType extends React.ElementType> =\n CustomBaseButtonProps<AsType> &\n Omit<\n React.ComponentPropsWithoutRef<AsType>,\n keyof CustomBaseButtonProps<AsType>\n >;\n\nexport function BaseButton<AsType extends React.ElementType = 'button'>(\n props: BaseButtonProps<AsType>\n) {\n const {\n as,\n onClick,\n defaultOnClick,\n children,\n buttonRef,\n ...passthroughProps\n } = props;\n\n const handleOnClick = useCallback(\n (event?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n if (onClick) {\n const clickShouldContinue = onClick(event);\n if (\n (typeof clickShouldContinue === 'boolean' &&\n clickShouldContinue === false) ||\n event?.defaultPrevented\n )\n return;\n }\n\n defaultOnClick?.(event);\n },\n [defaultOnClick, onClick]\n );\n\n const Component = as || 'button';\n\n return (\n <Component ref={buttonRef} onClick={handleOnClick} {...passthroughProps}>\n {children}\n </Component>\n );\n}\n"],"names":["BaseButton","props","as","onClick","defaultOnClick","children","buttonRef","passthroughProps","handleOnClick","useCallback","event","clickShouldContinue","defaultPrevented","Component"],"mappings":";;;;AA0BO,SAASA,WACdC,OACA;AACM,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDN,IAAAA;AAEEO,QAAAA,gBAAgBC,uBACpB,CAACC,UAA4D;AAC3D,QAAIP,SAAS;AACLQ,YAAAA,sBAAsBR,QAAQO,KAAD;AACnC,UACG,OAAOC,wBAAwB,aAC9BA,wBAAwB,UAC1BD,+BAAOE;AAEP;AAAA,IACH;AAEDR,qDAAiBM;AAAAA,EAAH,GAEhB,CAACN,gBAAgBD,OAAjB,CAd+B;AAiBjC,QAAMU,YAAYX,MAAM;AAExB,wCACG,WAAD;AAAA,IAAW,KAAKI;AAAAA,IAAW,SAASE;AAAAA,IAApC,GAAuDD;AAAAA,IAAvD;AAAA,EAAA,CADF;AAKD;;"}
@@ -0,0 +1,31 @@
1
+ import { useCallback } from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
+ function BaseButton(props) {
4
+ const {
5
+ as,
6
+ onClick,
7
+ defaultOnClick,
8
+ children,
9
+ buttonRef,
10
+ ...passthroughProps
11
+ } = props;
12
+ const handleOnClick = useCallback((event) => {
13
+ if (onClick) {
14
+ const clickShouldContinue = onClick(event);
15
+ if (typeof clickShouldContinue === "boolean" && clickShouldContinue === false || (event == null ? void 0 : event.defaultPrevented))
16
+ return;
17
+ }
18
+ defaultOnClick == null ? void 0 : defaultOnClick(event);
19
+ }, [defaultOnClick, onClick]);
20
+ const Component = as || "button";
21
+ return /* @__PURE__ */ jsx(Component, {
22
+ ref: buttonRef,
23
+ onClick: handleOnClick,
24
+ ...passthroughProps,
25
+ children
26
+ });
27
+ }
28
+ export {
29
+ BaseButton
30
+ };
31
+ //# sourceMappingURL=BaseButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseButton.mjs","sources":["../../src/BaseButton.tsx"],"sourcesContent":["import {ReactNode, Ref, useCallback} from 'react';\n\nexport interface CustomBaseButtonProps<AsType> {\n /** Provide a React element or component to render as the underlying button. Note: for accessibility compliance, almost always you should use a `button` element, or a component that renders an underlying button. */\n as?: AsType;\n /** Any ReactNode elements. */\n children: ReactNode;\n /** Click event handler. Default behaviour triggers unless prevented */\n onClick?: (\n event?: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => void | boolean;\n /** A default onClick behavior */\n defaultOnClick?: (\n event?: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => void | boolean;\n /** A ref to the underlying button */\n buttonRef?: Ref<HTMLButtonElement>;\n}\n\nexport type BaseButtonProps<AsType extends React.ElementType> =\n CustomBaseButtonProps<AsType> &\n Omit<\n React.ComponentPropsWithoutRef<AsType>,\n keyof CustomBaseButtonProps<AsType>\n >;\n\nexport function BaseButton<AsType extends React.ElementType = 'button'>(\n props: BaseButtonProps<AsType>\n) {\n const {\n as,\n onClick,\n defaultOnClick,\n children,\n buttonRef,\n ...passthroughProps\n } = props;\n\n const handleOnClick = useCallback(\n (event?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n if (onClick) {\n const clickShouldContinue = onClick(event);\n if (\n (typeof clickShouldContinue === 'boolean' &&\n clickShouldContinue === false) ||\n event?.defaultPrevented\n )\n return;\n }\n\n defaultOnClick?.(event);\n },\n [defaultOnClick, onClick]\n );\n\n const Component = as || 'button';\n\n return (\n <Component ref={buttonRef} onClick={handleOnClick} {...passthroughProps}>\n {children}\n </Component>\n );\n}\n"],"names":["BaseButton","props","as","onClick","defaultOnClick","children","buttonRef","passthroughProps","handleOnClick","useCallback","event","clickShouldContinue","defaultPrevented","Component"],"mappings":";;AA0BO,SAASA,WACdC,OACA;AACM,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDN,IAAAA;AAEEO,QAAAA,gBAAgBC,YACpB,CAACC,UAA4D;AAC3D,QAAIP,SAAS;AACLQ,YAAAA,sBAAsBR,QAAQO,KAAD;AACnC,UACG,OAAOC,wBAAwB,aAC9BA,wBAAwB,UAC1BD,+BAAOE;AAEP;AAAA,IACH;AAEDR,qDAAiBM;AAAAA,EAAH,GAEhB,CAACN,gBAAgBD,OAAjB,CAd+B;AAiBjC,QAAMU,YAAYX,MAAM;AAExB,6BACG,WAAD;AAAA,IAAW,KAAKI;AAAAA,IAAW,SAASE;AAAAA,IAApC,GAAuDD;AAAAA,IAAvD;AAAA,EAAA,CADF;AAKD;"}
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const require$$0 = require("react");
4
+ const CartProvider = require("./CartProvider.js");
5
+ const BaseButton = require("./BaseButton.js");
6
+ const jsxRuntime = require("react/jsx-runtime");
7
+ function BuyNowButton(props) {
8
+ const {
9
+ cartCreate,
10
+ checkoutUrl
11
+ } = CartProvider.useCart();
12
+ const [loading, setLoading] = require$$0.useState(false);
13
+ const {
14
+ quantity,
15
+ variantId,
16
+ onClick,
17
+ attributes,
18
+ children,
19
+ ...passthroughProps
20
+ } = props;
21
+ require$$0.useEffect(() => {
22
+ if (checkoutUrl) {
23
+ window.location.href = checkoutUrl;
24
+ }
25
+ }, [checkoutUrl]);
26
+ const handleBuyNow = require$$0.useCallback(() => {
27
+ setLoading(true);
28
+ cartCreate({
29
+ lines: [{
30
+ quantity: quantity != null ? quantity : 1,
31
+ merchandiseId: variantId,
32
+ attributes
33
+ }]
34
+ });
35
+ }, [cartCreate, quantity, variantId, attributes]);
36
+ return /* @__PURE__ */ jsxRuntime.jsx(BaseButton.BaseButton, {
37
+ disabled: loading != null ? loading : passthroughProps.disabled,
38
+ ...passthroughProps,
39
+ onClick,
40
+ defaultOnClick: handleBuyNow,
41
+ children
42
+ });
43
+ }
44
+ exports.BuyNowButton = BuyNowButton;
45
+ //# sourceMappingURL=BuyNowButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuyNowButton.js","sources":["../../src/BuyNowButton.tsx"],"sourcesContent":["import {useEffect, useState, useCallback} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ninterface BuyNowButtonProps {\n /** The item quantity. Defaults to 1. */\n quantity?: number;\n /** The ID of the variant. */\n variantId: string;\n /** An array of cart line attributes that belong to the item being added to the cart. */\n attributes?: {\n key: string;\n value: string;\n }[];\n}\n\n/** The `BuyNowButton` component renders a button that adds an item to the cart and redirects the customer to checkout. */\nexport function BuyNowButton<AsType extends React.ElementType = 'button'>(\n props: BuyNowButtonProps & BaseButtonProps<AsType>\n) {\n const {cartCreate, checkoutUrl} = useCart();\n const [loading, setLoading] = useState<boolean>(false);\n\n const {\n quantity,\n variantId,\n onClick,\n attributes,\n children,\n ...passthroughProps\n } = props;\n\n useEffect(() => {\n if (checkoutUrl) {\n window.location.href = checkoutUrl;\n }\n }, [checkoutUrl]);\n\n const handleBuyNow = useCallback(() => {\n setLoading(true);\n cartCreate({\n lines: [\n {\n quantity: quantity ?? 1,\n merchandiseId: variantId,\n attributes,\n },\n ],\n });\n }, [cartCreate, quantity, variantId, attributes]);\n\n return (\n <BaseButton\n disabled={loading ?? passthroughProps.disabled}\n {...passthroughProps}\n onClick={onClick}\n defaultOnClick={handleBuyNow}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["BuyNowButton","props","cartCreate","checkoutUrl","useCart","loading","setLoading","useState","quantity","variantId","onClick","attributes","children","passthroughProps","useEffect","window","location","href","handleBuyNow","useCallback","lines","merchandiseId","BaseButton","disabled"],"mappings":";;;;;;AAiBO,SAASA,aACdC,OACA;AACM,QAAA;AAAA,IAACC;AAAAA,IAAYC;AAAAA,MAAeC,aAAlC,QAAA;AACA,QAAM,CAACC,SAASC,UAAV,IAAwBC,oBAAkB,KAAV;AAEhC,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDZ,IAAAA;AAEJa,aAAAA,UAAU,MAAM;AACd,QAAIX,aAAa;AACfY,aAAOC,SAASC,OAAOd;AAAAA,IACxB;AAAA,EAAA,GACA,CAACA,WAAD,CAJM;AAMHe,QAAAA,eAAeC,WAAAA,YAAY,MAAM;AACrCb,eAAW,IAAD;AACC,eAAA;AAAA,MACTc,OAAO,CACL;AAAA,QACEZ,UAAUA,8BAAY;AAAA,QACtBa,eAAeZ;AAAAA,QACfE;AAAAA,MAAAA,CAJG;AAAA,IAAA,CADC;AAAA,KAST,CAACT,YAAYM,UAAUC,WAAWE,UAAlC,CAX6B;AAahC,wCACGW,WAAAA,YAAD;AAAA,IACE,UAAUjB,4BAAWQ,iBAAiBU;AAAAA,IADxC,GAEMV;AAAAA,IACJ;AAAA,IACA,gBAAgBK;AAAAA,IAJlB;AAAA,EAAA,CADF;AAUD;;"}
@@ -0,0 +1,45 @@
1
+ import { useState, useEffect, useCallback } from "react";
2
+ import { useCart } from "./CartProvider.mjs";
3
+ import { BaseButton } from "./BaseButton.mjs";
4
+ import { jsx } from "react/jsx-runtime";
5
+ function BuyNowButton(props) {
6
+ const {
7
+ cartCreate,
8
+ checkoutUrl
9
+ } = useCart();
10
+ const [loading, setLoading] = useState(false);
11
+ const {
12
+ quantity,
13
+ variantId,
14
+ onClick,
15
+ attributes,
16
+ children,
17
+ ...passthroughProps
18
+ } = props;
19
+ useEffect(() => {
20
+ if (checkoutUrl) {
21
+ window.location.href = checkoutUrl;
22
+ }
23
+ }, [checkoutUrl]);
24
+ const handleBuyNow = useCallback(() => {
25
+ setLoading(true);
26
+ cartCreate({
27
+ lines: [{
28
+ quantity: quantity != null ? quantity : 1,
29
+ merchandiseId: variantId,
30
+ attributes
31
+ }]
32
+ });
33
+ }, [cartCreate, quantity, variantId, attributes]);
34
+ return /* @__PURE__ */ jsx(BaseButton, {
35
+ disabled: loading != null ? loading : passthroughProps.disabled,
36
+ ...passthroughProps,
37
+ onClick,
38
+ defaultOnClick: handleBuyNow,
39
+ children
40
+ });
41
+ }
42
+ export {
43
+ BuyNowButton
44
+ };
45
+ //# sourceMappingURL=BuyNowButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuyNowButton.mjs","sources":["../../src/BuyNowButton.tsx"],"sourcesContent":["import {useEffect, useState, useCallback} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ninterface BuyNowButtonProps {\n /** The item quantity. Defaults to 1. */\n quantity?: number;\n /** The ID of the variant. */\n variantId: string;\n /** An array of cart line attributes that belong to the item being added to the cart. */\n attributes?: {\n key: string;\n value: string;\n }[];\n}\n\n/** The `BuyNowButton` component renders a button that adds an item to the cart and redirects the customer to checkout. */\nexport function BuyNowButton<AsType extends React.ElementType = 'button'>(\n props: BuyNowButtonProps & BaseButtonProps<AsType>\n) {\n const {cartCreate, checkoutUrl} = useCart();\n const [loading, setLoading] = useState<boolean>(false);\n\n const {\n quantity,\n variantId,\n onClick,\n attributes,\n children,\n ...passthroughProps\n } = props;\n\n useEffect(() => {\n if (checkoutUrl) {\n window.location.href = checkoutUrl;\n }\n }, [checkoutUrl]);\n\n const handleBuyNow = useCallback(() => {\n setLoading(true);\n cartCreate({\n lines: [\n {\n quantity: quantity ?? 1,\n merchandiseId: variantId,\n attributes,\n },\n ],\n });\n }, [cartCreate, quantity, variantId, attributes]);\n\n return (\n <BaseButton\n disabled={loading ?? passthroughProps.disabled}\n {...passthroughProps}\n onClick={onClick}\n defaultOnClick={handleBuyNow}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["BuyNowButton","props","cartCreate","checkoutUrl","useCart","loading","setLoading","useState","quantity","variantId","onClick","attributes","children","passthroughProps","useEffect","window","location","href","handleBuyNow","useCallback","lines","merchandiseId","disabled"],"mappings":";;;;AAiBO,SAASA,aACdC,OACA;AACM,QAAA;AAAA,IAACC;AAAAA,IAAYC;AAAAA,MAAeC,QAAlC;AACA,QAAM,CAACC,SAASC,UAAV,IAAwBC,SAAkB,KAAV;AAEhC,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDZ,IAAAA;AAEJa,YAAU,MAAM;AACd,QAAIX,aAAa;AACfY,aAAOC,SAASC,OAAOd;AAAAA,IACxB;AAAA,EAAA,GACA,CAACA,WAAD,CAJM;AAMHe,QAAAA,eAAeC,YAAY,MAAM;AACrCb,eAAW,IAAD;AACC,eAAA;AAAA,MACTc,OAAO,CACL;AAAA,QACEZ,UAAUA,8BAAY;AAAA,QACtBa,eAAeZ;AAAAA,QACfE;AAAAA,MAAAA,CAJG;AAAA,IAAA,CADC;AAAA,KAST,CAACT,YAAYM,UAAUC,WAAWE,UAAlC,CAX6B;AAahC,6BACG,YAAD;AAAA,IACE,UAAUN,4BAAWQ,iBAAiBS;AAAAA,IADxC,GAEMT;AAAAA,IACJ;AAAA,IACA,gBAAgBK;AAAAA,IAJlB;AAAA,EAAA,CADF;AAUD;"}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const require$$0 = require("react");
4
+ const CartProvider = require("./CartProvider.js");
5
+ const BaseButton = require("./BaseButton.js");
6
+ const jsxRuntime = require("react/jsx-runtime");
7
+ function CartCheckoutButton(props) {
8
+ const [requestedCheckout, setRequestedCheckout] = require$$0.useState(false);
9
+ const {
10
+ status,
11
+ checkoutUrl
12
+ } = CartProvider.useCart();
13
+ const {
14
+ children,
15
+ ...passthroughProps
16
+ } = props;
17
+ require$$0.useEffect(() => {
18
+ if (requestedCheckout && checkoutUrl && status === "idle") {
19
+ window.location.href = checkoutUrl;
20
+ }
21
+ }, [requestedCheckout, status, checkoutUrl]);
22
+ return /* @__PURE__ */ jsxRuntime.jsx(BaseButton.BaseButton, {
23
+ ...passthroughProps,
24
+ disabled: requestedCheckout || passthroughProps.disabled,
25
+ onClick: () => setRequestedCheckout(true),
26
+ children
27
+ });
28
+ }
29
+ exports.CartCheckoutButton = CartCheckoutButton;
30
+ //# sourceMappingURL=CartCheckoutButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CartCheckoutButton.js","sources":["../../src/CartCheckoutButton.tsx"],"sourcesContent":["import {ReactNode, useEffect, useState} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ntype PropsWeControl = 'onClick';\n\n/**\n * The `CartCheckoutButton` component renders a button that redirects to the checkout URL for the cart.\n * It must be a descendent of a `CartProvider` component.\n */\nexport function CartCheckoutButton(\n props: Omit<BaseButtonProps<'button'>, PropsWeControl> & {\n /** A `ReactNode` element. */\n children: ReactNode;\n }\n) {\n const [requestedCheckout, setRequestedCheckout] = useState(false);\n const {status, checkoutUrl} = useCart();\n const {children, ...passthroughProps} = props;\n\n useEffect(() => {\n if (requestedCheckout && checkoutUrl && status === 'idle') {\n window.location.href = checkoutUrl;\n }\n }, [requestedCheckout, status, checkoutUrl]);\n\n return (\n <BaseButton\n {...passthroughProps}\n disabled={requestedCheckout || passthroughProps.disabled}\n onClick={() => setRequestedCheckout(true)}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["CartCheckoutButton","props","requestedCheckout","setRequestedCheckout","useState","status","checkoutUrl","useCart","children","passthroughProps","useEffect","window","location","href","BaseButton","disabled"],"mappings":";;;;;;AAUO,SAASA,mBACdC,OAIA;AACA,QAAM,CAACC,mBAAmBC,oBAApB,IAA4CC,oBAAS,KAAD;AACpD,QAAA;AAAA,IAACC;AAAAA,IAAQC;AAAAA,MAAeC,aAA9B,QAAA;AACM,QAAA;AAAA,IAACC;AAAAA,OAAaC;AAAAA,EAAoBR,IAAAA;AAExCS,aAAAA,UAAU,MAAM;AACVR,QAAAA,qBAAqBI,eAAeD,WAAW,QAAQ;AACzDM,aAAOC,SAASC,OAAOP;AAAAA,IACxB;AAAA,EACA,GAAA,CAACJ,mBAAmBG,QAAQC,WAA5B,CAJM;AAMT,wCACGQ,WAAAA,YAAD;AAAA,IAAA,GACML;AAAAA,IACJ,UAAUP,qBAAqBO,iBAAiBM;AAAAA,IAChD,SAAS,MAAMZ,qBAAqB,IAAD;AAAA,IAHrC;AAAA,EAAA,CADF;AASD;;"}
@@ -0,0 +1,30 @@
1
+ import { useState, useEffect } from "react";
2
+ import { useCart } from "./CartProvider.mjs";
3
+ import { BaseButton } from "./BaseButton.mjs";
4
+ import { jsx } from "react/jsx-runtime";
5
+ function CartCheckoutButton(props) {
6
+ const [requestedCheckout, setRequestedCheckout] = useState(false);
7
+ const {
8
+ status,
9
+ checkoutUrl
10
+ } = useCart();
11
+ const {
12
+ children,
13
+ ...passthroughProps
14
+ } = props;
15
+ useEffect(() => {
16
+ if (requestedCheckout && checkoutUrl && status === "idle") {
17
+ window.location.href = checkoutUrl;
18
+ }
19
+ }, [requestedCheckout, status, checkoutUrl]);
20
+ return /* @__PURE__ */ jsx(BaseButton, {
21
+ ...passthroughProps,
22
+ disabled: requestedCheckout || passthroughProps.disabled,
23
+ onClick: () => setRequestedCheckout(true),
24
+ children
25
+ });
26
+ }
27
+ export {
28
+ CartCheckoutButton
29
+ };
30
+ //# sourceMappingURL=CartCheckoutButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CartCheckoutButton.mjs","sources":["../../src/CartCheckoutButton.tsx"],"sourcesContent":["import {ReactNode, useEffect, useState} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ntype PropsWeControl = 'onClick';\n\n/**\n * The `CartCheckoutButton` component renders a button that redirects to the checkout URL for the cart.\n * It must be a descendent of a `CartProvider` component.\n */\nexport function CartCheckoutButton(\n props: Omit<BaseButtonProps<'button'>, PropsWeControl> & {\n /** A `ReactNode` element. */\n children: ReactNode;\n }\n) {\n const [requestedCheckout, setRequestedCheckout] = useState(false);\n const {status, checkoutUrl} = useCart();\n const {children, ...passthroughProps} = props;\n\n useEffect(() => {\n if (requestedCheckout && checkoutUrl && status === 'idle') {\n window.location.href = checkoutUrl;\n }\n }, [requestedCheckout, status, checkoutUrl]);\n\n return (\n <BaseButton\n {...passthroughProps}\n disabled={requestedCheckout || passthroughProps.disabled}\n onClick={() => setRequestedCheckout(true)}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["CartCheckoutButton","props","requestedCheckout","setRequestedCheckout","useState","status","checkoutUrl","useCart","children","passthroughProps","useEffect","window","location","href","disabled"],"mappings":";;;;AAUO,SAASA,mBACdC,OAIA;AACA,QAAM,CAACC,mBAAmBC,oBAApB,IAA4CC,SAAS,KAAD;AACpD,QAAA;AAAA,IAACC;AAAAA,IAAQC;AAAAA,MAAeC,QAA9B;AACM,QAAA;AAAA,IAACC;AAAAA,OAAaC;AAAAA,EAAoBR,IAAAA;AAExCS,YAAU,MAAM;AACVR,QAAAA,qBAAqBI,eAAeD,WAAW,QAAQ;AACzDM,aAAOC,SAASC,OAAOP;AAAAA,IACxB;AAAA,EACA,GAAA,CAACJ,mBAAmBG,QAAQC,WAA5B,CAJM;AAMT,6BACG,YAAD;AAAA,IAAA,GACMG;AAAAA,IACJ,UAAUP,qBAAqBO,iBAAiBK;AAAAA,IAChD,SAAS,MAAMX,qBAAqB,IAAD;AAAA,IAHrC;AAAA,EAAA,CADF;AASD;"}
@@ -1,10 +1,12 @@
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);
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const require$$0 = require("react");
4
+ const useCartAPIStateMachine = require("./useCartAPIStateMachine.js");
5
+ const cartConstants = require("./cart-constants.js");
6
+ const jsxRuntime = require("react/jsx-runtime");
7
+ const CartContext = require$$0.createContext(null);
6
8
  function useCart() {
7
- const context = useContext(CartContext);
9
+ const context = require$$0.useContext(CartContext);
8
10
  if (!context) {
9
11
  throw new Error("Expected a Cart Context, but no Cart Context was found");
10
12
  }
@@ -37,15 +39,15 @@ function CartProvider({
37
39
  var _a, _b, _c, _d, _e, _f, _g;
38
40
  if (countryCode)
39
41
  countryCode = countryCode.toUpperCase();
40
- const [prevCountryCode, setPrevCountryCode] = useState(countryCode);
41
- const [prevCustomerAccessToken, setPrevCustomerAccessToken] = useState(customerAccessToken);
42
- const customerOverridesCountryCode = useRef(false);
42
+ const [prevCountryCode, setPrevCountryCode] = require$$0.useState(countryCode);
43
+ const [prevCustomerAccessToken, setPrevCustomerAccessToken] = require$$0.useState(customerAccessToken);
44
+ const customerOverridesCountryCode = require$$0.useRef(false);
43
45
  if (prevCountryCode !== countryCode || prevCustomerAccessToken !== customerAccessToken) {
44
46
  setPrevCountryCode(countryCode);
45
47
  setPrevCustomerAccessToken(customerAccessToken);
46
48
  customerOverridesCountryCode.current = false;
47
49
  }
48
- const [cartState, cartSend] = useCartAPIStateMachine({
50
+ const [cartState, cartSend] = useCartAPIStateMachine.useCartAPIStateMachine({
49
51
  numCartLines,
50
52
  data: cart,
51
53
  cartFragment,
@@ -149,16 +151,16 @@ function CartProvider({
149
151
  }
150
152
  }
151
153
  });
152
- const cartReady = useRef(false);
154
+ const cartReady = require$$0.useRef(false);
153
155
  const cartCompleted = cartState.matches("cartCompleted");
154
156
  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
+ const fetchingFromStorage = require$$0.useRef(false);
158
+ require$$0.useEffect(() => {
157
159
  if (!cartReady.current && !fetchingFromStorage.current) {
158
160
  if (!cart && storageAvailable("localStorage")) {
159
161
  fetchingFromStorage.current = true;
160
162
  try {
161
- const cartId = window.localStorage.getItem(CART_ID_STORAGE_KEY);
163
+ const cartId = window.localStorage.getItem(cartConstants.CART_ID_STORAGE_KEY);
162
164
  if (cartId) {
163
165
  cartSend({
164
166
  type: "CART_FETCH",
@@ -175,7 +177,7 @@ function CartProvider({
175
177
  cartReady.current = true;
176
178
  }
177
179
  }, [cart, cartReady, cartSend]);
178
- useEffect(() => {
180
+ require$$0.useEffect(() => {
179
181
  if (!countryChanged || customerOverridesCountryCode.current)
180
182
  return;
181
183
  cartSend({
@@ -188,32 +190,32 @@ function CartProvider({
188
190
  }
189
191
  });
190
192
  }, [countryCode, customerAccessToken, countryChanged, customerOverridesCountryCode, cartSend]);
191
- const onCartReadySend = useCallback((cartEvent) => {
193
+ const onCartReadySend = require$$0.useCallback((cartEvent) => {
192
194
  if (!cartReady.current) {
193
195
  return console.warn("Cart isn't ready yet");
194
196
  }
195
197
  cartSend(cartEvent);
196
198
  }, [cartSend]);
197
- useEffect(() => {
199
+ require$$0.useEffect(() => {
198
200
  var _a2, _b2, _c2;
199
201
  if (((_b2 = (_a2 = cartState == null ? void 0 : cartState.context) == null ? void 0 : _a2.cart) == null ? void 0 : _b2.id) && storageAvailable("localStorage")) {
200
202
  try {
201
- window.localStorage.setItem(CART_ID_STORAGE_KEY, (_c2 = cartState.context.cart) == null ? void 0 : _c2.id);
203
+ window.localStorage.setItem(cartConstants.CART_ID_STORAGE_KEY, (_c2 = cartState.context.cart) == null ? void 0 : _c2.id);
202
204
  } catch (error) {
203
205
  console.warn("Failed to save cartId to localStorage", error);
204
206
  }
205
207
  }
206
208
  }, [(_e = (_d = cartState == null ? void 0 : cartState.context) == null ? void 0 : _d.cart) == null ? void 0 : _e.id]);
207
- useEffect(() => {
209
+ require$$0.useEffect(() => {
208
210
  if (cartCompleted && storageAvailable("localStorage")) {
209
211
  try {
210
- window.localStorage.removeItem(CART_ID_STORAGE_KEY);
212
+ window.localStorage.removeItem(cartConstants.CART_ID_STORAGE_KEY);
211
213
  } catch (error) {
212
214
  console.warn("Failed to delete cartId from localStorage", error);
213
215
  }
214
216
  }
215
217
  }, [cartCompleted]);
216
- const cartCreate = useCallback((cartInput) => {
218
+ const cartCreate = require$$0.useCallback((cartInput) => {
217
219
  var _a2, _b2;
218
220
  if (countryCode && !((_a2 = cartInput.buyerIdentity) == null ? void 0 : _a2.countryCode)) {
219
221
  if (cartInput.buyerIdentity == null) {
@@ -233,7 +235,7 @@ function CartProvider({
233
235
  });
234
236
  }, [countryCode, customerAccessToken, onCartReadySend]);
235
237
  const cartDisplayState = useDelayedStateUntilHydration(cartState);
236
- const cartContextValue = useMemo(() => {
238
+ const cartContextValue = require$$0.useMemo(() => {
237
239
  var _a2, _b2, _c2, _d2, _e2, _f2;
238
240
  return {
239
241
  ...(_b2 = (_a2 = cartDisplayState == null ? void 0 : cartDisplayState.context) == null ? void 0 : _a2.cart) != null ? _b2 : {
@@ -310,7 +312,7 @@ function CartProvider({
310
312
  cartFragment
311
313
  };
312
314
  }, [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, {
315
+ return /* @__PURE__ */ jsxRuntime.jsx(CartContext.Provider, {
314
316
  value: cartContextValue,
315
317
  children
316
318
  });
@@ -339,17 +341,17 @@ function transposeStatus(status) {
339
341
  }
340
342
  }
341
343
  function useDelayedStateUntilHydration(state) {
342
- const [isPending, startTransition] = useTransition();
343
- const [delayedState, setDelayedState] = useState(state);
344
- const firstTimePending = useRef(false);
344
+ const [isPending, startTransition] = require$$0.useTransition();
345
+ const [delayedState, setDelayedState] = require$$0.useState(state);
346
+ const firstTimePending = require$$0.useRef(false);
345
347
  if (isPending) {
346
348
  firstTimePending.current = true;
347
349
  }
348
- const firstTimePendingFinished = useRef(false);
350
+ const firstTimePendingFinished = require$$0.useRef(false);
349
351
  if (!isPending && firstTimePending.current) {
350
352
  firstTimePendingFinished.current = true;
351
353
  }
352
- useEffect(() => {
354
+ require$$0.useEffect(() => {
353
355
  startTransition(() => {
354
356
  if (!firstTimePendingFinished.current) {
355
357
  setDelayedState(state);
@@ -475,11 +477,9 @@ fragment ImageFragment on Image {
475
477
  height
476
478
  }
477
479
  `;
478
- export {
479
- CartContext,
480
- CartProvider,
481
- defaultCartFragment,
482
- storageAvailable,
483
- useCart
484
- };
480
+ exports.CartContext = CartContext;
481
+ exports.CartProvider = CartProvider;
482
+ exports.defaultCartFragment = defaultCartFragment;
483
+ exports.storageAvailable = storageAvailable;
484
+ exports.useCart = useCart;
485
485
  //# sourceMappingURL=CartProvider.js.map