@shopify/hydrogen-react 0.0.0-next-585a03d → 0.0.0-next-32f1381

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 (491) hide show
  1. package/dist/{dev/AddToCartButton.mjs → browser-dev/AddToCartButton.js} +4 -4
  2. package/dist/{dev → browser-dev}/AddToCartButton.js.map +1 -1
  3. package/dist/{dev/BaseButton.mjs → browser-dev/BaseButton.js} +1 -1
  4. package/dist/{dev → browser-dev}/BaseButton.js.map +1 -1
  5. package/dist/{prod/BuyNowButton.mjs → browser-dev/BuyNowButton.js} +3 -3
  6. package/dist/{dev → browser-dev}/BuyNowButton.js.map +1 -1
  7. package/dist/{dev/CartCheckoutButton.mjs → browser-dev/CartCheckoutButton.js} +3 -3
  8. package/dist/{dev → browser-dev}/CartCheckoutButton.js.map +1 -1
  9. package/dist/{prod/CartProvider.mjs → browser-dev/CartProvider.js} +3 -3
  10. package/dist/{prod → browser-dev}/CartProvider.js.map +1 -1
  11. package/dist/{prod/ExternalVideo.mjs → browser-dev/ExternalVideo.js} +1 -1
  12. package/dist/{dev → browser-dev}/ExternalVideo.js.map +1 -1
  13. package/dist/{dev/Image.mjs → browser-dev/Image.js} +2 -2
  14. package/dist/{dev → browser-dev}/Image.js.map +1 -1
  15. package/dist/{dev/MediaFile.mjs → browser-dev/MediaFile.js} +5 -5
  16. package/dist/{dev → browser-dev}/MediaFile.js.map +1 -1
  17. package/dist/{dev/Metafield.mjs → browser-dev/Metafield.js} +5 -5
  18. package/dist/{dev → browser-dev}/Metafield.js.map +1 -1
  19. package/dist/{dev/ModelViewer.mjs → browser-dev/ModelViewer.js} +2 -2
  20. package/dist/{dev → browser-dev}/ModelViewer.js.map +1 -1
  21. package/dist/{dev/Money.mjs → browser-dev/Money.js} +2 -2
  22. package/dist/{dev → browser-dev}/Money.js.map +1 -1
  23. package/dist/{dev/ProductPrice.mjs → browser-dev/ProductPrice.js} +3 -3
  24. package/dist/{dev → browser-dev}/ProductPrice.js.map +1 -1
  25. package/dist/{dev/ProductProvider.mjs → browser-dev/ProductProvider.js} +2 -2
  26. package/dist/{prod → browser-dev}/ProductProvider.js.map +1 -1
  27. package/dist/{prod/ShopPayButton.mjs → browser-dev/ShopPayButton.js} +3 -3
  28. package/dist/{prod → browser-dev}/ShopPayButton.js.map +1 -1
  29. package/dist/{dev/ShopifyProvider.mjs → browser-dev/ShopifyProvider.js} +2 -2
  30. package/dist/{prod → browser-dev}/ShopifyProvider.js.map +1 -1
  31. package/dist/{dev/Video.mjs → browser-dev/Video.js} +2 -2
  32. package/dist/{prod → browser-dev}/Video.js.map +1 -1
  33. package/dist/{dev/_virtual/index.mjs → browser-dev/_virtual/index.js} +1 -1
  34. package/dist/{dev → browser-dev}/_virtual/index.js.map +1 -1
  35. package/dist/{dev/_virtual/use-sync-external-store-shim.development.mjs → browser-dev/_virtual/use-sync-external-store-shim.development.js} +1 -1
  36. package/dist/{dev → browser-dev}/_virtual/use-sync-external-store-shim.development.js.map +1 -1
  37. package/dist/{dev/_virtual/use-sync-external-store-shim.production.min.mjs → browser-dev/_virtual/use-sync-external-store-shim.production.min.js} +1 -1
  38. package/dist/browser-dev/_virtual/use-sync-external-store-shim.production.min.js.map +1 -0
  39. package/dist/{prod/_virtual/with-selector.development.mjs → browser-dev/_virtual/with-selector.development.js} +1 -1
  40. package/dist/{dev → browser-dev}/_virtual/with-selector.development.js.map +1 -1
  41. package/dist/{prod/_virtual/with-selector.mjs → browser-dev/_virtual/with-selector.js} +1 -1
  42. package/dist/{dev → browser-dev}/_virtual/with-selector.js.map +1 -1
  43. package/dist/{dev/_virtual/with-selector.production.min.mjs → browser-dev/_virtual/with-selector.production.min.js} +1 -1
  44. package/dist/{dev → browser-dev}/_virtual/with-selector.production.min.js.map +1 -1
  45. package/dist/{prod/cart-constants.mjs → browser-dev/cart-constants.js} +1 -1
  46. package/dist/{dev → browser-dev}/cart-constants.js.map +1 -1
  47. package/dist/{dev/cart-hooks.mjs → browser-dev/cart-hooks.js} +3 -3
  48. package/dist/{prod → browser-dev}/cart-hooks.js.map +1 -1
  49. package/dist/{dev/cart-queries.mjs → browser-dev/cart-queries.js} +1 -1
  50. package/dist/{dev → browser-dev}/cart-queries.js.map +1 -1
  51. package/dist/{dev/flatten-connection.mjs → browser-dev/flatten-connection.js} +1 -1
  52. package/dist/{dev → browser-dev}/flatten-connection.js.map +1 -1
  53. package/dist/{prod/image-size.mjs → browser-dev/image-size.js} +1 -1
  54. package/dist/{dev → browser-dev}/image-size.js.map +1 -1
  55. package/dist/browser-dev/index.js +46 -0
  56. package/dist/browser-dev/index.js.map +1 -0
  57. package/dist/{prod/load-script.mjs → browser-dev/load-script.js} +1 -1
  58. package/dist/{dev → browser-dev}/load-script.js.map +1 -1
  59. package/dist/{dev/metafield-parser.mjs → browser-dev/metafield-parser.js} +3 -3
  60. package/dist/{dev → browser-dev}/metafield-parser.js.map +1 -1
  61. package/dist/{dev/node_modules/@xstate/fsm/es/index.mjs → browser-dev/node_modules/@xstate/fsm/es/index.js} +1 -1
  62. package/dist/browser-dev/node_modules/@xstate/fsm/es/index.js.map +1 -0
  63. package/dist/{prod/node_modules/@xstate/react/es/fsm.mjs → browser-dev/node_modules/@xstate/react/es/fsm.js} +6 -6
  64. package/dist/{prod → browser-dev}/node_modules/@xstate/react/es/fsm.js.map +1 -1
  65. package/dist/{dev/node_modules/@xstate/react/es/useConstant.mjs → browser-dev/node_modules/@xstate/react/es/useConstant.js} +1 -1
  66. package/dist/{dev → browser-dev}/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  67. package/dist/{dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs → browser-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js} +1 -1
  68. package/dist/{dev → browser-dev}/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +1 -1
  69. package/dist/{dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs → browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js} +3 -3
  70. package/dist/{prod → browser-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  71. package/dist/{dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs → browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js} +3 -3
  72. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -0
  73. package/dist/{dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs → browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js} +2 -2
  74. package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  75. package/dist/{dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs → browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js} +2 -2
  76. package/dist/{prod → browser-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  77. package/dist/{dev/node_modules/use-sync-external-store/shim/index.mjs → browser-dev/node_modules/use-sync-external-store/shim/index.js} +4 -4
  78. package/dist/{prod → browser-dev}/node_modules/use-sync-external-store/shim/index.js.map +1 -1
  79. package/dist/{prod/node_modules/use-sync-external-store/shim/with-selector.mjs → browser-dev/node_modules/use-sync-external-store/shim/with-selector.js} +4 -4
  80. package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -1
  81. package/dist/{prod/storefront-api-constants.mjs → browser-dev/storefront-api-constants.js} +1 -1
  82. package/dist/{dev → browser-dev}/storefront-api-constants.js.map +1 -1
  83. package/dist/{dev/storefront-client.mjs → browser-dev/storefront-client.js} +2 -2
  84. package/dist/{dev → browser-dev}/storefront-client.js.map +1 -1
  85. package/dist/{prod/useCartAPIStateMachine.mjs → browser-dev/useCartAPIStateMachine.js} +5 -5
  86. package/dist/{dev → browser-dev}/useCartAPIStateMachine.js.map +1 -1
  87. package/dist/{dev/useCartActions.mjs → browser-dev/useCartActions.js} +3 -3
  88. package/dist/{prod → browser-dev}/useCartActions.js.map +1 -1
  89. package/dist/{dev/useMoney.mjs → browser-dev/useMoney.js} +2 -2
  90. package/dist/{dev → browser-dev}/useMoney.js.map +1 -1
  91. package/dist/{prod/AddToCartButton.mjs → browser-prod/AddToCartButton.js} +4 -4
  92. package/dist/{prod → browser-prod}/AddToCartButton.js.map +1 -1
  93. package/dist/{prod/BaseButton.mjs → browser-prod/BaseButton.js} +1 -1
  94. package/dist/{prod → browser-prod}/BaseButton.js.map +1 -1
  95. package/dist/{dev/BuyNowButton.mjs → browser-prod/BuyNowButton.js} +3 -3
  96. package/dist/{prod → browser-prod}/BuyNowButton.js.map +1 -1
  97. package/dist/{prod/CartCheckoutButton.mjs → browser-prod/CartCheckoutButton.js} +3 -3
  98. package/dist/{prod → browser-prod}/CartCheckoutButton.js.map +1 -1
  99. package/dist/{dev/CartProvider.mjs → browser-prod/CartProvider.js} +3 -3
  100. package/dist/{dev → browser-prod}/CartProvider.js.map +1 -1
  101. package/dist/{dev/ExternalVideo.mjs → browser-prod/ExternalVideo.js} +1 -1
  102. package/dist/{prod → browser-prod}/ExternalVideo.js.map +1 -1
  103. package/dist/{prod/Image.mjs → browser-prod/Image.js} +2 -2
  104. package/dist/{prod → browser-prod}/Image.js.map +1 -1
  105. package/dist/{prod/MediaFile.mjs → browser-prod/MediaFile.js} +5 -5
  106. package/dist/{prod → browser-prod}/MediaFile.js.map +1 -1
  107. package/dist/{prod/Metafield.mjs → browser-prod/Metafield.js} +5 -5
  108. package/dist/{prod → browser-prod}/Metafield.js.map +1 -1
  109. package/dist/{prod/ModelViewer.mjs → browser-prod/ModelViewer.js} +2 -2
  110. package/dist/{prod → browser-prod}/ModelViewer.js.map +1 -1
  111. package/dist/{prod/Money.mjs → browser-prod/Money.js} +2 -2
  112. package/dist/{prod → browser-prod}/Money.js.map +1 -1
  113. package/dist/{prod/ProductPrice.mjs → browser-prod/ProductPrice.js} +3 -3
  114. package/dist/{prod → browser-prod}/ProductPrice.js.map +1 -1
  115. package/dist/{prod/ProductProvider.mjs → browser-prod/ProductProvider.js} +2 -2
  116. package/dist/{dev → browser-prod}/ProductProvider.js.map +1 -1
  117. package/dist/{dev/ShopPayButton.mjs → browser-prod/ShopPayButton.js} +3 -3
  118. package/dist/{dev → browser-prod}/ShopPayButton.js.map +1 -1
  119. package/dist/{prod/ShopifyProvider.mjs → browser-prod/ShopifyProvider.js} +2 -2
  120. package/dist/{dev → browser-prod}/ShopifyProvider.js.map +1 -1
  121. package/dist/{prod/Video.mjs → browser-prod/Video.js} +2 -2
  122. package/dist/{dev → browser-prod}/Video.js.map +1 -1
  123. package/dist/{prod/_virtual/index.mjs → browser-prod/_virtual/index.js} +1 -1
  124. package/dist/{prod → browser-prod}/_virtual/index.js.map +1 -1
  125. package/dist/{prod/_virtual/use-sync-external-store-shim.development.mjs → browser-prod/_virtual/use-sync-external-store-shim.development.js} +1 -1
  126. package/dist/{prod → browser-prod}/_virtual/use-sync-external-store-shim.development.js.map +1 -1
  127. package/dist/{prod/_virtual/use-sync-external-store-shim.production.min.mjs → browser-prod/_virtual/use-sync-external-store-shim.production.min.js} +1 -1
  128. package/dist/browser-prod/_virtual/use-sync-external-store-shim.production.min.js.map +1 -0
  129. package/dist/{dev/_virtual/with-selector.development.mjs → browser-prod/_virtual/with-selector.development.js} +1 -1
  130. package/dist/{prod → browser-prod}/_virtual/with-selector.development.js.map +1 -1
  131. package/dist/{dev/_virtual/with-selector.mjs → browser-prod/_virtual/with-selector.js} +1 -1
  132. package/dist/{prod → browser-prod}/_virtual/with-selector.js.map +1 -1
  133. package/dist/{prod/_virtual/with-selector.production.min.mjs → browser-prod/_virtual/with-selector.production.min.js} +1 -1
  134. package/dist/{prod → browser-prod}/_virtual/with-selector.production.min.js.map +1 -1
  135. package/dist/{dev/cart-constants.mjs → browser-prod/cart-constants.js} +1 -1
  136. package/dist/{prod → browser-prod}/cart-constants.js.map +1 -1
  137. package/dist/{prod/cart-hooks.mjs → browser-prod/cart-hooks.js} +3 -3
  138. package/dist/{dev → browser-prod}/cart-hooks.js.map +1 -1
  139. package/dist/{prod/cart-queries.mjs → browser-prod/cart-queries.js} +1 -1
  140. package/dist/{prod → browser-prod}/cart-queries.js.map +1 -1
  141. package/dist/{prod/flatten-connection.mjs → browser-prod/flatten-connection.js} +1 -1
  142. package/dist/{prod → browser-prod}/flatten-connection.js.map +1 -1
  143. package/dist/{dev/image-size.mjs → browser-prod/image-size.js} +1 -1
  144. package/dist/{prod → browser-prod}/image-size.js.map +1 -1
  145. package/dist/browser-prod/index.js +46 -0
  146. package/dist/browser-prod/index.js.map +1 -0
  147. package/dist/{dev/load-script.mjs → browser-prod/load-script.js} +1 -1
  148. package/dist/{prod → browser-prod}/load-script.js.map +1 -1
  149. package/dist/{prod/metafield-parser.mjs → browser-prod/metafield-parser.js} +3 -3
  150. package/dist/{prod → browser-prod}/metafield-parser.js.map +1 -1
  151. package/dist/{prod/node_modules/@xstate/fsm/es/index.mjs → browser-prod/node_modules/@xstate/fsm/es/index.js} +1 -1
  152. package/dist/browser-prod/node_modules/@xstate/fsm/es/index.js.map +1 -0
  153. package/dist/{dev/node_modules/@xstate/react/es/fsm.mjs → browser-prod/node_modules/@xstate/react/es/fsm.js} +6 -6
  154. package/dist/{dev → browser-prod}/node_modules/@xstate/react/es/fsm.js.map +1 -1
  155. package/dist/{prod/node_modules/@xstate/react/es/useConstant.mjs → browser-prod/node_modules/@xstate/react/es/useConstant.js} +1 -1
  156. package/dist/{prod → browser-prod}/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  157. package/dist/{prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs → browser-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js} +1 -1
  158. package/dist/{prod → browser-prod}/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +1 -1
  159. package/dist/{prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs → browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js} +3 -3
  160. package/dist/{dev → browser-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  161. package/dist/{prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs → browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js} +3 -3
  162. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -0
  163. package/dist/{prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs → browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js} +2 -2
  164. package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  165. package/dist/{prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs → browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js} +2 -2
  166. package/dist/{dev → browser-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  167. package/dist/{prod/node_modules/use-sync-external-store/shim/index.mjs → browser-prod/node_modules/use-sync-external-store/shim/index.js} +4 -4
  168. package/dist/{dev → browser-prod}/node_modules/use-sync-external-store/shim/index.js.map +1 -1
  169. package/dist/{dev/node_modules/use-sync-external-store/shim/with-selector.mjs → browser-prod/node_modules/use-sync-external-store/shim/with-selector.js} +4 -4
  170. package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -1
  171. package/dist/{dev/storefront-api-constants.mjs → browser-prod/storefront-api-constants.js} +1 -1
  172. package/dist/{prod → browser-prod}/storefront-api-constants.js.map +1 -1
  173. package/dist/{prod/storefront-client.mjs → browser-prod/storefront-client.js} +2 -2
  174. package/dist/{prod → browser-prod}/storefront-client.js.map +1 -1
  175. package/dist/{dev/useCartAPIStateMachine.mjs → browser-prod/useCartAPIStateMachine.js} +5 -5
  176. package/dist/{prod → browser-prod}/useCartAPIStateMachine.js.map +1 -1
  177. package/dist/{prod/useCartActions.mjs → browser-prod/useCartActions.js} +3 -3
  178. package/dist/{dev → browser-prod}/useCartActions.js.map +1 -1
  179. package/dist/{prod/useMoney.mjs → browser-prod/useMoney.js} +2 -2
  180. package/dist/{prod → browser-prod}/useMoney.js.map +1 -1
  181. package/dist/{dev/AddToCartButton.js → node-dev/AddToCartButton.cjs} +8 -8
  182. package/dist/{prod/AddToCartButton.mjs.map → node-dev/AddToCartButton.cjs.map} +1 -1
  183. package/dist/node-dev/AddToCartButton.js +70 -0
  184. package/dist/node-dev/AddToCartButton.js.map +1 -0
  185. package/dist/{dev/BaseButton.js → node-dev/BaseButton.cjs} +3 -3
  186. package/dist/{dev/BaseButton.mjs.map → node-dev/BaseButton.cjs.map} +1 -1
  187. package/dist/node-dev/BaseButton.js +31 -0
  188. package/dist/node-dev/BaseButton.js.map +1 -0
  189. package/dist/{prod/BuyNowButton.js → node-dev/BuyNowButton.cjs} +7 -7
  190. package/dist/{dev/BuyNowButton.mjs.map → node-dev/BuyNowButton.cjs.map} +1 -1
  191. package/dist/node-dev/BuyNowButton.js +45 -0
  192. package/dist/node-dev/BuyNowButton.js.map +1 -0
  193. package/dist/{prod/CartCheckoutButton.js → node-dev/CartCheckoutButton.cjs} +6 -6
  194. package/dist/{dev/CartCheckoutButton.mjs.map → node-dev/CartCheckoutButton.cjs.map} +1 -1
  195. package/dist/node-dev/CartCheckoutButton.js +30 -0
  196. package/dist/node-dev/CartCheckoutButton.js.map +1 -0
  197. package/dist/{dev/CartProvider.js → node-dev/CartProvider.cjs} +23 -23
  198. package/dist/{prod/CartProvider.mjs.map → node-dev/CartProvider.cjs.map} +1 -1
  199. package/dist/node-dev/CartProvider.js +485 -0
  200. package/dist/node-dev/CartProvider.js.map +1 -0
  201. package/dist/{dev/ExternalVideo.js → node-dev/ExternalVideo.cjs} +1 -1
  202. package/dist/{prod/ExternalVideo.mjs.map → node-dev/ExternalVideo.cjs.map} +1 -1
  203. package/dist/node-dev/ExternalVideo.js +39 -0
  204. package/dist/node-dev/ExternalVideo.js.map +1 -0
  205. package/dist/{dev/Image.js → node-dev/Image.cjs} +2 -2
  206. package/dist/{dev/Image.mjs.map → node-dev/Image.cjs.map} +1 -1
  207. package/dist/node-dev/Image.js +104 -0
  208. package/dist/node-dev/Image.js.map +1 -0
  209. package/dist/{dev/MediaFile.js → node-dev/MediaFile.cjs} +5 -5
  210. package/dist/{dev/MediaFile.mjs.map → node-dev/MediaFile.cjs.map} +1 -1
  211. package/dist/node-dev/MediaFile.js +57 -0
  212. package/dist/node-dev/MediaFile.js.map +1 -0
  213. package/dist/{dev/Metafield.js → node-dev/Metafield.cjs} +7 -7
  214. package/dist/{dev/Metafield.mjs.map → node-dev/Metafield.cjs.map} +1 -1
  215. package/dist/node-dev/Metafield.js +301 -0
  216. package/dist/node-dev/Metafield.js.map +1 -0
  217. package/dist/{dev/ModelViewer.js → node-dev/ModelViewer.cjs} +6 -6
  218. package/dist/{dev/ModelViewer.mjs.map → node-dev/ModelViewer.cjs.map} +1 -1
  219. package/dist/node-dev/ModelViewer.js +145 -0
  220. package/dist/node-dev/ModelViewer.js.map +1 -0
  221. package/dist/{prod/Money.js → node-dev/Money.cjs} +2 -2
  222. package/dist/{dev/Money.mjs.map → node-dev/Money.cjs.map} +1 -1
  223. package/dist/node-dev/Money.js +40 -0
  224. package/dist/node-dev/Money.js.map +1 -0
  225. package/dist/{prod/ProductPrice.js → node-dev/ProductPrice.cjs} +3 -3
  226. package/dist/{dev/ProductPrice.mjs.map → node-dev/ProductPrice.cjs.map} +1 -1
  227. package/dist/node-dev/ProductPrice.js +61 -0
  228. package/dist/node-dev/ProductPrice.js.map +1 -0
  229. package/dist/{prod/ProductProvider.js → node-dev/ProductProvider.cjs} +16 -16
  230. package/dist/{dev/ProductProvider.mjs.map → node-dev/ProductProvider.cjs.map} +1 -1
  231. package/dist/node-dev/ProductProvider.js +161 -0
  232. package/dist/node-dev/ProductProvider.js.map +1 -0
  233. package/dist/{dev/ShopPayButton.js → node-dev/ShopPayButton.cjs} +3 -3
  234. package/dist/{prod/ShopPayButton.mjs.map → node-dev/ShopPayButton.cjs.map} +1 -1
  235. package/dist/node-dev/ShopPayButton.js +64 -0
  236. package/dist/node-dev/ShopPayButton.js.map +1 -0
  237. package/dist/{prod/ShopifyProvider.js → node-dev/ShopifyProvider.cjs} +6 -6
  238. package/dist/{dev/ShopifyProvider.mjs.map → node-dev/ShopifyProvider.cjs.map} +1 -1
  239. package/dist/node-dev/ShopifyProvider.js +46 -0
  240. package/dist/node-dev/ShopifyProvider.js.map +1 -0
  241. package/dist/{prod/Video.js → node-dev/Video.cjs} +4 -4
  242. package/dist/{dev/Video.mjs.map → node-dev/Video.cjs.map} +1 -1
  243. package/dist/node-dev/Video.js +44 -0
  244. package/dist/node-dev/Video.js.map +1 -0
  245. package/dist/{prod/cart-constants.js → node-dev/cart-constants.cjs} +1 -1
  246. package/dist/{dev/cart-constants.mjs.map → node-dev/cart-constants.cjs.map} +1 -1
  247. package/dist/node-dev/cart-constants.js +17 -0
  248. package/dist/node-dev/cart-constants.js.map +1 -0
  249. package/dist/{dev/cart-hooks.js → node-dev/cart-hooks.cjs} +5 -5
  250. package/dist/{prod/cart-hooks.mjs.map → node-dev/cart-hooks.cjs.map} +1 -1
  251. package/dist/node-dev/cart-hooks.js +48 -0
  252. package/dist/node-dev/cart-hooks.js.map +1 -0
  253. package/dist/{dev/cart-queries.js → node-dev/cart-queries.cjs} +1 -1
  254. package/dist/{dev/cart-queries.mjs.map → node-dev/cart-queries.cjs.map} +1 -1
  255. package/dist/node-dev/cart-queries.js +114 -0
  256. package/dist/node-dev/cart-queries.js.map +1 -0
  257. package/dist/{dev/flatten-connection.js → node-dev/flatten-connection.cjs} +1 -1
  258. package/dist/{dev/flatten-connection.mjs.map → node-dev/flatten-connection.cjs.map} +1 -1
  259. package/dist/node-dev/flatten-connection.js +29 -0
  260. package/dist/node-dev/flatten-connection.js.map +1 -0
  261. package/dist/{dev/image-size.js → node-dev/image-size.cjs} +1 -1
  262. package/dist/{prod/image-size.mjs.map → node-dev/image-size.cjs.map} +1 -1
  263. package/dist/node-dev/image-size.js +80 -0
  264. package/dist/node-dev/image-size.js.map +1 -0
  265. package/dist/{prod/index.js → node-dev/index.cjs} +20 -20
  266. package/dist/node-dev/index.cjs.map +1 -0
  267. package/dist/node-dev/index.js +46 -0
  268. package/dist/node-dev/index.js.map +1 -0
  269. package/dist/{prod/load-script.js → node-dev/load-script.cjs} +4 -4
  270. package/dist/{dev/load-script.mjs.map → node-dev/load-script.cjs.map} +1 -1
  271. package/dist/node-dev/load-script.js +52 -0
  272. package/dist/node-dev/load-script.js.map +1 -0
  273. package/dist/{dev/metafield-parser.js → node-dev/metafield-parser.cjs} +3 -3
  274. package/dist/{dev/metafield-parser.mjs.map → node-dev/metafield-parser.cjs.map} +1 -1
  275. package/dist/node-dev/metafield-parser.js +103 -0
  276. package/dist/node-dev/metafield-parser.js.map +1 -0
  277. package/dist/{prod/storefront-api-constants.js → node-dev/storefront-api-constants.cjs} +1 -1
  278. package/dist/node-dev/storefront-api-constants.cjs.map +1 -0
  279. package/dist/node-dev/storefront-api-constants.js +5 -0
  280. package/dist/node-dev/storefront-api-constants.js.map +1 -0
  281. package/dist/{dev/storefront-client.js → node-dev/storefront-client.cjs} +2 -2
  282. package/dist/{dev/storefront-client.mjs.map → node-dev/storefront-client.cjs.map} +1 -1
  283. package/dist/node-dev/storefront-client.js +72 -0
  284. package/dist/node-dev/storefront-client.js.map +1 -0
  285. package/dist/{prod/useCartAPIStateMachine.js → node-dev/useCartAPIStateMachine.cjs} +15 -15
  286. package/dist/{prod/useCartAPIStateMachine.mjs.map → node-dev/useCartAPIStateMachine.cjs.map} +1 -1
  287. package/dist/node-dev/useCartAPIStateMachine.js +326 -0
  288. package/dist/node-dev/useCartAPIStateMachine.js.map +1 -0
  289. package/dist/{dev/useCartActions.js → node-dev/useCartActions.cjs} +14 -14
  290. package/dist/{dev/useCartActions.mjs.map → node-dev/useCartActions.cjs.map} +1 -1
  291. package/dist/node-dev/useCartActions.js +123 -0
  292. package/dist/node-dev/useCartActions.js.map +1 -0
  293. package/dist/{prod/useMoney.js → node-dev/useMoney.cjs} +7 -7
  294. package/dist/{dev/useMoney.mjs.map → node-dev/useMoney.cjs.map} +1 -1
  295. package/dist/node-dev/useMoney.js +72 -0
  296. package/dist/node-dev/useMoney.js.map +1 -0
  297. package/dist/{prod/AddToCartButton.js → node-prod/AddToCartButton.cjs} +8 -8
  298. package/dist/{dev/AddToCartButton.mjs.map → node-prod/AddToCartButton.cjs.map} +1 -1
  299. package/dist/node-prod/AddToCartButton.js +70 -0
  300. package/dist/node-prod/AddToCartButton.js.map +1 -0
  301. package/dist/{prod/BaseButton.js → node-prod/BaseButton.cjs} +3 -3
  302. package/dist/{prod/BaseButton.mjs.map → node-prod/BaseButton.cjs.map} +1 -1
  303. package/dist/node-prod/BaseButton.js +31 -0
  304. package/dist/node-prod/BaseButton.js.map +1 -0
  305. package/dist/{dev/BuyNowButton.js → node-prod/BuyNowButton.cjs} +7 -7
  306. package/dist/{prod/BuyNowButton.mjs.map → node-prod/BuyNowButton.cjs.map} +1 -1
  307. package/dist/node-prod/BuyNowButton.js +45 -0
  308. package/dist/node-prod/BuyNowButton.js.map +1 -0
  309. package/dist/{dev/CartCheckoutButton.js → node-prod/CartCheckoutButton.cjs} +6 -6
  310. package/dist/{prod/CartCheckoutButton.mjs.map → node-prod/CartCheckoutButton.cjs.map} +1 -1
  311. package/dist/node-prod/CartCheckoutButton.js +30 -0
  312. package/dist/node-prod/CartCheckoutButton.js.map +1 -0
  313. package/dist/{prod/CartProvider.js → node-prod/CartProvider.cjs} +23 -23
  314. package/dist/{dev/CartProvider.mjs.map → node-prod/CartProvider.cjs.map} +1 -1
  315. package/dist/node-prod/CartProvider.js +485 -0
  316. package/dist/node-prod/CartProvider.js.map +1 -0
  317. package/dist/{prod/ExternalVideo.js → node-prod/ExternalVideo.cjs} +1 -1
  318. package/dist/{dev/ExternalVideo.mjs.map → node-prod/ExternalVideo.cjs.map} +1 -1
  319. package/dist/node-prod/ExternalVideo.js +39 -0
  320. package/dist/node-prod/ExternalVideo.js.map +1 -0
  321. package/dist/{prod/Image.js → node-prod/Image.cjs} +2 -2
  322. package/dist/{prod/Image.mjs.map → node-prod/Image.cjs.map} +1 -1
  323. package/dist/node-prod/Image.js +99 -0
  324. package/dist/node-prod/Image.js.map +1 -0
  325. package/dist/{prod/MediaFile.js → node-prod/MediaFile.cjs} +5 -5
  326. package/dist/{prod/MediaFile.mjs.map → node-prod/MediaFile.cjs.map} +1 -1
  327. package/dist/node-prod/MediaFile.js +59 -0
  328. package/dist/node-prod/MediaFile.js.map +1 -0
  329. package/dist/{prod/Metafield.js → node-prod/Metafield.cjs} +7 -7
  330. package/dist/{prod/Metafield.mjs.map → node-prod/Metafield.cjs.map} +1 -1
  331. package/dist/node-prod/Metafield.js +288 -0
  332. package/dist/node-prod/Metafield.js.map +1 -0
  333. package/dist/{prod/ModelViewer.js → node-prod/ModelViewer.cjs} +6 -6
  334. package/dist/{prod/ModelViewer.mjs.map → node-prod/ModelViewer.cjs.map} +1 -1
  335. package/dist/node-prod/ModelViewer.js +143 -0
  336. package/dist/node-prod/ModelViewer.js.map +1 -0
  337. package/dist/{dev/Money.js → node-prod/Money.cjs} +2 -2
  338. package/dist/{prod/Money.mjs.map → node-prod/Money.cjs.map} +1 -1
  339. package/dist/node-prod/Money.js +40 -0
  340. package/dist/node-prod/Money.js.map +1 -0
  341. package/dist/{dev/ProductPrice.js → node-prod/ProductPrice.cjs} +3 -3
  342. package/dist/{prod/ProductPrice.mjs.map → node-prod/ProductPrice.cjs.map} +1 -1
  343. package/dist/node-prod/ProductPrice.js +61 -0
  344. package/dist/node-prod/ProductPrice.js.map +1 -0
  345. package/dist/{dev/ProductProvider.js → node-prod/ProductProvider.cjs} +16 -16
  346. package/dist/{prod/ProductProvider.mjs.map → node-prod/ProductProvider.cjs.map} +1 -1
  347. package/dist/node-prod/ProductProvider.js +161 -0
  348. package/dist/node-prod/ProductProvider.js.map +1 -0
  349. package/dist/{prod/ShopPayButton.js → node-prod/ShopPayButton.cjs} +3 -3
  350. package/dist/{dev/ShopPayButton.mjs.map → node-prod/ShopPayButton.cjs.map} +1 -1
  351. package/dist/node-prod/ShopPayButton.js +64 -0
  352. package/dist/node-prod/ShopPayButton.js.map +1 -0
  353. package/dist/{dev/ShopifyProvider.js → node-prod/ShopifyProvider.cjs} +6 -6
  354. package/dist/{prod/ShopifyProvider.mjs.map → node-prod/ShopifyProvider.cjs.map} +1 -1
  355. package/dist/node-prod/ShopifyProvider.js +46 -0
  356. package/dist/node-prod/ShopifyProvider.js.map +1 -0
  357. package/dist/{dev/Video.js → node-prod/Video.cjs} +4 -4
  358. package/dist/{prod/Video.mjs.map → node-prod/Video.cjs.map} +1 -1
  359. package/dist/node-prod/Video.js +44 -0
  360. package/dist/node-prod/Video.js.map +1 -0
  361. package/dist/{dev/cart-constants.js → node-prod/cart-constants.cjs} +1 -1
  362. package/dist/{prod/cart-constants.mjs.map → node-prod/cart-constants.cjs.map} +1 -1
  363. package/dist/node-prod/cart-constants.js +17 -0
  364. package/dist/node-prod/cart-constants.js.map +1 -0
  365. package/dist/{prod/cart-hooks.js → node-prod/cart-hooks.cjs} +5 -5
  366. package/dist/{dev/cart-hooks.mjs.map → node-prod/cart-hooks.cjs.map} +1 -1
  367. package/dist/node-prod/cart-hooks.js +48 -0
  368. package/dist/node-prod/cart-hooks.js.map +1 -0
  369. package/dist/{prod/cart-queries.js → node-prod/cart-queries.cjs} +1 -1
  370. package/dist/{prod/cart-queries.mjs.map → node-prod/cart-queries.cjs.map} +1 -1
  371. package/dist/node-prod/cart-queries.js +114 -0
  372. package/dist/node-prod/cart-queries.js.map +1 -0
  373. package/dist/{prod/flatten-connection.js → node-prod/flatten-connection.cjs} +1 -1
  374. package/dist/{prod/flatten-connection.mjs.map → node-prod/flatten-connection.cjs.map} +1 -1
  375. package/dist/node-prod/flatten-connection.js +25 -0
  376. package/dist/node-prod/flatten-connection.js.map +1 -0
  377. package/dist/{prod/image-size.js → node-prod/image-size.cjs} +1 -1
  378. package/dist/{dev/image-size.mjs.map → node-prod/image-size.cjs.map} +1 -1
  379. package/dist/node-prod/image-size.js +80 -0
  380. package/dist/node-prod/image-size.js.map +1 -0
  381. package/dist/{dev/index.js → node-prod/index.cjs} +20 -20
  382. package/dist/node-prod/index.cjs.map +1 -0
  383. package/dist/node-prod/index.js +46 -0
  384. package/dist/node-prod/index.js.map +1 -0
  385. package/dist/{dev/load-script.js → node-prod/load-script.cjs} +4 -4
  386. package/dist/{prod/load-script.mjs.map → node-prod/load-script.cjs.map} +1 -1
  387. package/dist/node-prod/load-script.js +52 -0
  388. package/dist/node-prod/load-script.js.map +1 -0
  389. package/dist/{prod/metafield-parser.js → node-prod/metafield-parser.cjs} +3 -3
  390. package/dist/{prod/metafield-parser.mjs.map → node-prod/metafield-parser.cjs.map} +1 -1
  391. package/dist/node-prod/metafield-parser.js +114 -0
  392. package/dist/node-prod/metafield-parser.js.map +1 -0
  393. package/dist/{dev/storefront-api-constants.js → node-prod/storefront-api-constants.cjs} +1 -1
  394. package/dist/node-prod/storefront-api-constants.cjs.map +1 -0
  395. package/dist/node-prod/storefront-api-constants.js +5 -0
  396. package/dist/node-prod/storefront-api-constants.js.map +1 -0
  397. package/dist/{prod/storefront-client.js → node-prod/storefront-client.cjs} +2 -2
  398. package/dist/{prod/storefront-client.mjs.map → node-prod/storefront-client.cjs.map} +1 -1
  399. package/dist/node-prod/storefront-client.js +57 -0
  400. package/dist/node-prod/storefront-client.js.map +1 -0
  401. package/dist/{dev/useCartAPIStateMachine.js → node-prod/useCartAPIStateMachine.cjs} +15 -15
  402. package/dist/{dev/useCartAPIStateMachine.mjs.map → node-prod/useCartAPIStateMachine.cjs.map} +1 -1
  403. package/dist/node-prod/useCartAPIStateMachine.js +326 -0
  404. package/dist/node-prod/useCartAPIStateMachine.js.map +1 -0
  405. package/dist/{prod/useCartActions.js → node-prod/useCartActions.cjs} +14 -14
  406. package/dist/{prod/useCartActions.mjs.map → node-prod/useCartActions.cjs.map} +1 -1
  407. package/dist/node-prod/useCartActions.js +123 -0
  408. package/dist/node-prod/useCartActions.js.map +1 -0
  409. package/dist/{dev/useMoney.js → node-prod/useMoney.cjs} +7 -7
  410. package/dist/{prod/useMoney.mjs.map → node-prod/useMoney.cjs.map} +1 -1
  411. package/dist/node-prod/useMoney.js +72 -0
  412. package/dist/node-prod/useMoney.js.map +1 -0
  413. package/package.json +35 -20
  414. package/dist/dev/_virtual/index.js +0 -5
  415. package/dist/dev/_virtual/index.mjs.map +0 -1
  416. package/dist/dev/_virtual/use-sync-external-store-shim.development.js +0 -5
  417. package/dist/dev/_virtual/use-sync-external-store-shim.development.mjs.map +0 -1
  418. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.js +0 -5
  419. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.js.map +0 -1
  420. package/dist/dev/_virtual/use-sync-external-store-shim.production.min.mjs.map +0 -1
  421. package/dist/dev/_virtual/with-selector.development.js +0 -5
  422. package/dist/dev/_virtual/with-selector.development.mjs.map +0 -1
  423. package/dist/dev/_virtual/with-selector.js +0 -5
  424. package/dist/dev/_virtual/with-selector.mjs.map +0 -1
  425. package/dist/dev/_virtual/with-selector.production.min.js +0 -5
  426. package/dist/dev/_virtual/with-selector.production.min.mjs.map +0 -1
  427. package/dist/dev/index.js.map +0 -1
  428. package/dist/dev/index.mjs +0 -46
  429. package/dist/dev/index.mjs.map +0 -1
  430. package/dist/dev/node_modules/@xstate/fsm/es/index.js +0 -158
  431. package/dist/dev/node_modules/@xstate/fsm/es/index.js.map +0 -1
  432. package/dist/dev/node_modules/@xstate/fsm/es/index.mjs.map +0 -1
  433. package/dist/dev/node_modules/@xstate/react/es/fsm.js +0 -94
  434. package/dist/dev/node_modules/@xstate/react/es/fsm.mjs.map +0 -1
  435. package/dist/dev/node_modules/@xstate/react/es/useConstant.js +0 -30
  436. package/dist/dev/node_modules/@xstate/react/es/useConstant.mjs.map +0 -1
  437. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js +0 -5
  438. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs.map +0 -1
  439. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +0 -107
  440. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +0 -1
  441. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +0 -74
  442. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +0 -1
  443. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +0 -1
  444. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +0 -138
  445. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +0 -1
  446. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +0 -60
  447. package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +0 -1
  448. package/dist/dev/node_modules/use-sync-external-store/shim/index.js +0 -21
  449. package/dist/dev/node_modules/use-sync-external-store/shim/index.mjs.map +0 -1
  450. package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.js +0 -12
  451. package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.mjs.map +0 -1
  452. package/dist/dev/storefront-api-constants.mjs.map +0 -1
  453. package/dist/prod/_virtual/index.js +0 -5
  454. package/dist/prod/_virtual/index.mjs.map +0 -1
  455. package/dist/prod/_virtual/use-sync-external-store-shim.development.js +0 -5
  456. package/dist/prod/_virtual/use-sync-external-store-shim.development.mjs.map +0 -1
  457. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.js +0 -5
  458. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.js.map +0 -1
  459. package/dist/prod/_virtual/use-sync-external-store-shim.production.min.mjs.map +0 -1
  460. package/dist/prod/_virtual/with-selector.development.js +0 -5
  461. package/dist/prod/_virtual/with-selector.development.mjs.map +0 -1
  462. package/dist/prod/_virtual/with-selector.js +0 -5
  463. package/dist/prod/_virtual/with-selector.mjs.map +0 -1
  464. package/dist/prod/_virtual/with-selector.production.min.js +0 -5
  465. package/dist/prod/_virtual/with-selector.production.min.mjs.map +0 -1
  466. package/dist/prod/index.js.map +0 -1
  467. package/dist/prod/index.mjs +0 -46
  468. package/dist/prod/index.mjs.map +0 -1
  469. package/dist/prod/node_modules/@xstate/fsm/es/index.js +0 -158
  470. package/dist/prod/node_modules/@xstate/fsm/es/index.js.map +0 -1
  471. package/dist/prod/node_modules/@xstate/fsm/es/index.mjs.map +0 -1
  472. package/dist/prod/node_modules/@xstate/react/es/fsm.js +0 -94
  473. package/dist/prod/node_modules/@xstate/react/es/fsm.mjs.map +0 -1
  474. package/dist/prod/node_modules/@xstate/react/es/useConstant.js +0 -30
  475. package/dist/prod/node_modules/@xstate/react/es/useConstant.mjs.map +0 -1
  476. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js +0 -5
  477. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs.map +0 -1
  478. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +0 -107
  479. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +0 -1
  480. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +0 -74
  481. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +0 -1
  482. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +0 -1
  483. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +0 -138
  484. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +0 -1
  485. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +0 -60
  486. package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +0 -1
  487. package/dist/prod/node_modules/use-sync-external-store/shim/index.js +0 -21
  488. package/dist/prod/node_modules/use-sync-external-store/shim/index.mjs.map +0 -1
  489. package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.js +0 -12
  490. package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.mjs.map +0 -1
  491. package/dist/prod/storefront-api-constants.mjs.map +0 -1
@@ -0,0 +1,123 @@
1
+ import { useCallback, useMemo } from "react";
2
+ import { CartQuery, CartCreate, CartLineAdd, CartLineUpdate, CartLineRemove, CartNoteUpdate, CartBuyerIdentityUpdate, CartAttributesUpdate, CartDiscountCodesUpdate } from "./cart-queries.js";
3
+ import { useCartFetch } from "./cart-hooks.js";
4
+ function useCartActions({
5
+ numCartLines,
6
+ cartFragment,
7
+ countryCode = "US"
8
+ }) {
9
+ const fetchCart = useCartFetch();
10
+ const cartFetch = useCallback((cartId) => {
11
+ return fetchCart({
12
+ query: CartQuery(cartFragment),
13
+ variables: {
14
+ id: cartId,
15
+ numCartLines,
16
+ country: countryCode
17
+ }
18
+ });
19
+ }, [fetchCart, cartFragment, numCartLines, countryCode]);
20
+ const cartCreate = useCallback((cart) => {
21
+ return fetchCart({
22
+ query: CartCreate(cartFragment),
23
+ variables: {
24
+ input: cart,
25
+ numCartLines,
26
+ country: countryCode
27
+ }
28
+ });
29
+ }, [cartFragment, countryCode, fetchCart, numCartLines]);
30
+ const cartLineAdd = useCallback((cartId, lines) => {
31
+ return fetchCart({
32
+ query: CartLineAdd(cartFragment),
33
+ variables: {
34
+ cartId,
35
+ lines,
36
+ numCartLines,
37
+ country: countryCode
38
+ }
39
+ });
40
+ }, [cartFragment, countryCode, fetchCart, numCartLines]);
41
+ const cartLineUpdate = useCallback((cartId, lines) => {
42
+ return fetchCart({
43
+ query: CartLineUpdate(cartFragment),
44
+ variables: {
45
+ cartId,
46
+ lines,
47
+ numCartLines,
48
+ country: countryCode
49
+ }
50
+ });
51
+ }, [cartFragment, countryCode, fetchCart, numCartLines]);
52
+ const cartLineRemove = useCallback((cartId, lines) => {
53
+ return fetchCart({
54
+ query: CartLineRemove(cartFragment),
55
+ variables: {
56
+ cartId,
57
+ lines,
58
+ numCartLines,
59
+ country: countryCode
60
+ }
61
+ });
62
+ }, [cartFragment, countryCode, fetchCart, numCartLines]);
63
+ const noteUpdate = useCallback((cartId, note) => {
64
+ return fetchCart({
65
+ query: CartNoteUpdate(cartFragment),
66
+ variables: {
67
+ cartId,
68
+ note,
69
+ numCartLines,
70
+ country: countryCode
71
+ }
72
+ });
73
+ }, [fetchCart, cartFragment, numCartLines, countryCode]);
74
+ const buyerIdentityUpdate = useCallback((cartId, buyerIdentity) => {
75
+ return fetchCart({
76
+ query: CartBuyerIdentityUpdate(cartFragment),
77
+ variables: {
78
+ cartId,
79
+ buyerIdentity,
80
+ numCartLines,
81
+ country: countryCode
82
+ }
83
+ });
84
+ }, [cartFragment, countryCode, fetchCart, numCartLines]);
85
+ const cartAttributesUpdate = useCallback((cartId, attributes) => {
86
+ return fetchCart({
87
+ query: CartAttributesUpdate(cartFragment),
88
+ variables: {
89
+ cartId,
90
+ attributes,
91
+ numCartLines,
92
+ country: countryCode
93
+ }
94
+ });
95
+ }, [cartFragment, countryCode, fetchCart, numCartLines]);
96
+ const discountCodesUpdate = useCallback((cartId, discountCodes) => {
97
+ return fetchCart({
98
+ query: CartDiscountCodesUpdate(cartFragment),
99
+ variables: {
100
+ cartId,
101
+ discountCodes,
102
+ numCartLines,
103
+ country: countryCode
104
+ }
105
+ });
106
+ }, [cartFragment, countryCode, fetchCart, numCartLines]);
107
+ return useMemo(() => ({
108
+ cartFetch,
109
+ cartCreate,
110
+ cartLineAdd,
111
+ cartLineUpdate,
112
+ cartLineRemove,
113
+ noteUpdate,
114
+ buyerIdentityUpdate,
115
+ cartAttributesUpdate,
116
+ discountCodesUpdate,
117
+ cartFragment
118
+ }), [cartFetch, cartCreate, cartLineAdd, cartLineUpdate, cartLineRemove, noteUpdate, buyerIdentityUpdate, cartAttributesUpdate, discountCodesUpdate, cartFragment]);
119
+ }
120
+ export {
121
+ useCartActions
122
+ };
123
+ //# sourceMappingURL=useCartActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCartActions.js","sources":["../../src/useCartActions.tsx"],"sourcesContent":["import {useCallback, useMemo} from 'react';\nimport {\n AttributeInput,\n CartBuyerIdentityInput,\n CartInput,\n CartLineInput,\n CartLineUpdateInput,\n CountryCode,\n Cart as CartType,\n MutationCartDiscountCodesUpdateArgs,\n MutationCartNoteUpdateArgs,\n} from './storefront-api-types.js';\nimport {\n CartAttributesUpdate,\n CartBuyerIdentityUpdate,\n CartCreate,\n CartDiscountCodesUpdate,\n CartLineAdd,\n CartLineRemove,\n CartLineUpdate,\n CartNoteUpdate,\n CartQuery,\n} from './cart-queries.js';\nimport {useCartFetch} from './cart-hooks.js';\nimport {PartialDeep} from 'type-fest';\n\ntype CartResponse = PartialDeep<CartType, {recurseIntoArrays: true}>;\n\n/**\n * The `useCartActions` hook returns helper graphql functions for Storefront Cart API\n *\n * See [cart API graphql mutations](https://shopify.dev/api/storefront/2022-10/objects/Cart)\n */\nexport function useCartActions({\n numCartLines,\n cartFragment,\n countryCode = 'US',\n}: {\n /** Maximum number of cart lines to fetch. Defaults to 250 cart lines. */\n numCartLines?: number;\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 /** The ISO country code for i18n. */\n countryCode?: CountryCode;\n}) {\n const fetchCart = useCartFetch();\n\n const cartFetch = useCallback(\n (cartId: string) => {\n return fetchCart<{cart: CartResponse}>({\n query: CartQuery(cartFragment),\n variables: {\n id: cartId,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [fetchCart, cartFragment, numCartLines, countryCode]\n );\n\n const cartCreate = useCallback(\n (cart: CartInput) => {\n return fetchCart<{cartCreate: {cart: CartResponse}}>({\n query: CartCreate(cartFragment),\n variables: {\n input: cart,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\n );\n\n const cartLineAdd = useCallback(\n (cartId: string, lines: CartLineInput[]) => {\n return fetchCart<{cartLinesAdd: {cart: CartResponse}}>({\n query: CartLineAdd(cartFragment),\n variables: {\n cartId,\n lines,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\n );\n\n const cartLineUpdate = useCallback(\n (cartId: string, lines: CartLineUpdateInput[]) => {\n return fetchCart<{cartLinesUpdate: {cart: CartResponse}}>({\n query: CartLineUpdate(cartFragment),\n variables: {\n cartId,\n lines,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\n );\n\n const cartLineRemove = useCallback(\n (cartId: string, lines: string[]) => {\n return fetchCart<{cartLinesRemove: {cart: CartResponse}}>({\n query: CartLineRemove(cartFragment),\n variables: {\n cartId,\n lines,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\n );\n\n const noteUpdate = useCallback(\n (cartId: string, note: MutationCartNoteUpdateArgs['note']) => {\n return fetchCart<{cartNoteUpdate: {cart: CartResponse}}>({\n query: CartNoteUpdate(cartFragment),\n variables: {\n cartId,\n note,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [fetchCart, cartFragment, numCartLines, countryCode]\n );\n\n const buyerIdentityUpdate = useCallback(\n (cartId: string, buyerIdentity: CartBuyerIdentityInput) => {\n return fetchCart<{cartBuyerIdentityUpdate: {cart: CartResponse}}>({\n query: CartBuyerIdentityUpdate(cartFragment),\n variables: {\n cartId,\n buyerIdentity,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\n );\n\n const cartAttributesUpdate = useCallback(\n (cartId: string, attributes: AttributeInput[]) => {\n return fetchCart<{cartAttributesUpdate: {cart: CartResponse}}>({\n query: CartAttributesUpdate(cartFragment),\n variables: {\n cartId,\n attributes,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\n );\n\n const discountCodesUpdate = useCallback(\n (\n cartId: string,\n discountCodes: MutationCartDiscountCodesUpdateArgs['discountCodes']\n ) => {\n return fetchCart<{cartDiscountCodesUpdate: {cart: CartResponse}}>({\n query: CartDiscountCodesUpdate(cartFragment),\n variables: {\n cartId,\n discountCodes,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\n );\n\n return useMemo(\n () => ({\n cartFetch,\n cartCreate,\n cartLineAdd,\n cartLineUpdate,\n cartLineRemove,\n noteUpdate,\n buyerIdentityUpdate,\n cartAttributesUpdate,\n discountCodesUpdate,\n cartFragment,\n }),\n [\n cartFetch,\n cartCreate,\n cartLineAdd,\n cartLineUpdate,\n cartLineRemove,\n noteUpdate,\n buyerIdentityUpdate,\n cartAttributesUpdate,\n discountCodesUpdate,\n cartFragment,\n ]\n );\n}\n"],"names":["useCartActions","numCartLines","cartFragment","countryCode","fetchCart","useCartFetch","cartFetch","useCallback","cartId","query","CartQuery","variables","id","country","cartCreate","cart","CartCreate","input","cartLineAdd","lines","CartLineAdd","cartLineUpdate","CartLineUpdate","cartLineRemove","CartLineRemove","noteUpdate","note","CartNoteUpdate","buyerIdentityUpdate","buyerIdentity","CartBuyerIdentityUpdate","cartAttributesUpdate","attributes","CartAttributesUpdate","discountCodesUpdate","discountCodes","CartDiscountCodesUpdate","useMemo"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const require$$0 = require("react");
4
- const ShopifyProvider = require("./ShopifyProvider.js");
3
+ const react = require("react");
4
+ const ShopifyProvider = require("./ShopifyProvider.cjs");
5
5
  function useMoney(money) {
6
6
  const {
7
7
  locale
@@ -10,7 +10,7 @@ function useMoney(money) {
10
10
  throw new Error(`useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work`);
11
11
  }
12
12
  const amount = parseFloat(money.amount);
13
- const options = require$$0.useMemo(() => ({
13
+ const options = react.useMemo(() => ({
14
14
  style: "currency",
15
15
  currency: money.currencyCode
16
16
  }), [money.currencyCode]);
@@ -34,7 +34,7 @@ function useMoney(money) {
34
34
  maximumFractionDigits: 0
35
35
  });
36
36
  const isPartCurrency = (part) => part.type === "currency";
37
- const lazyFormatters = require$$0.useMemo(() => ({
37
+ const lazyFormatters = react.useMemo(() => ({
38
38
  original: () => money,
39
39
  currencyCode: () => money.currencyCode,
40
40
  localizedString: () => defaultFormatter().format(amount),
@@ -55,7 +55,7 @@ function useMoney(money) {
55
55
  },
56
56
  amount: () => defaultFormatter().formatToParts(amount).filter((part) => ["decimal", "fraction", "group", "integer", "literal"].includes(part.type)).map((part) => part.value).join("")
57
57
  }), [money, amount, nameFormatter, defaultFormatter, narrowSymbolFormatter, withoutCurrencyFormatter, withoutTrailingZerosFormatter, withoutTrailingZerosOrCurrencyFormatter]);
58
- return require$$0.useMemo(() => new Proxy(lazyFormatters, {
58
+ return react.useMemo(() => new Proxy(lazyFormatters, {
59
59
  get: (target, key) => {
60
60
  var _a;
61
61
  return (_a = Reflect.get(target, key)) == null ? void 0 : _a.call(null);
@@ -63,10 +63,10 @@ function useMoney(money) {
63
63
  }), [lazyFormatters]);
64
64
  }
65
65
  function useLazyFormatter(locale, options) {
66
- return require$$0.useMemo(() => {
66
+ return react.useMemo(() => {
67
67
  let memoized;
68
68
  return () => memoized != null ? memoized : memoized = new Intl.NumberFormat(locale, options);
69
69
  }, [locale, options]);
70
70
  }
71
71
  exports.useMoney = useMoney;
72
- //# sourceMappingURL=useMoney.js.map
72
+ //# sourceMappingURL=useMoney.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"useMoney.mjs","sources":["../../src/useMoney.tsx"],"sourcesContent":["import {useMemo} from 'react';\nimport {useShop} from './ShopifyProvider.js';\nimport {CurrencyCode, MoneyV2} from './storefront-api-types.js';\n\nexport type UseMoneyValue = {\n /**\n * The currency code from the `MoneyV2` object.\n */\n currencyCode: CurrencyCode;\n /**\n * The name for the currency code, returned by `Intl.NumberFormat`.\n */\n currencyName?: string;\n /**\n * The currency symbol returned by `Intl.NumberFormat`.\n */\n currencySymbol?: string;\n /**\n * The currency narrow symbol returned by `Intl.NumberFormat`.\n */\n currencyNarrowSymbol?: string;\n /**\n * The localized amount, without any currency symbols or non-number types from the `Intl.NumberFormat.formatToParts` parts.\n */\n amount: string;\n /**\n * All parts returned by `Intl.NumberFormat.formatToParts`.\n */\n parts: Intl.NumberFormatPart[];\n /**\n * A string returned by `new Intl.NumberFormat` for the amount and currency code,\n * using the `locale` value in the [`LocalizationProvider` component](https://shopify.dev/api/hydrogen/components/localization/localizationprovider).\n */\n localizedString: string;\n /**\n * The `MoneyV2` object provided as an argument to the hook.\n */\n original: MoneyV2;\n /**\n * A string with trailing zeros removed from the fractional part, if any exist. If there are no trailing zeros, then the fractional part remains.\n * For example, `$640.00` turns into `$640`.\n * `$640.42` remains `$640.42`.\n */\n withoutTrailingZeros: string;\n /**\n * A string without currency and without trailing zeros removed from the fractional part, if any exist. If there are no trailing zeros, then the fractional part remains.\n * For example, `$640.00` turns into `640`.\n * `$640.42` turns into `640.42`.\n */\n withoutTrailingZerosAndCurrency: string;\n};\n\n/**\n * The `useMoney` hook takes a [MoneyV2 object](https://shopify.dev/api/storefront/reference/common-objects/moneyv2) and returns a\n * default-formatted string of the amount with the correct currency indicator, along with some of the parts provided by\n * [Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat).\n * Uses `locale` from `ShopifyProvider`\n */\nexport function useMoney(money: MoneyV2): UseMoneyValue {\n const {locale} = useShop();\n\n if (!locale) {\n throw new Error(\n `useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work`\n );\n }\n\n const amount = parseFloat(money.amount);\n\n const options = useMemo(\n () => ({\n style: 'currency',\n currency: money.currencyCode,\n }),\n [money.currencyCode]\n );\n\n const defaultFormatter = useLazyFormatter(locale, options);\n\n const nameFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'name',\n });\n\n const narrowSymbolFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'narrowSymbol',\n });\n\n const withoutTrailingZerosFormatter = useLazyFormatter(locale, {\n ...options,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const withoutCurrencyFormatter = useLazyFormatter(locale);\n\n const withoutTrailingZerosOrCurrencyFormatter = useLazyFormatter(locale, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const isPartCurrency = (part: Intl.NumberFormatPart) =>\n part.type === 'currency';\n\n // By wrapping these properties in functions, we only\n // create formatters if they are going to be used.\n const lazyFormatters = useMemo(\n () => ({\n original: () => money,\n currencyCode: () => money.currencyCode,\n\n localizedString: () => defaultFormatter().format(amount),\n\n parts: () => defaultFormatter().formatToParts(amount),\n\n withoutTrailingZeros: () =>\n amount % 1 === 0\n ? withoutTrailingZerosFormatter().format(amount)\n : defaultFormatter().format(amount),\n\n withoutTrailingZerosAndCurrency: () =>\n amount % 1 === 0\n ? withoutTrailingZerosOrCurrencyFormatter().format(amount)\n : withoutCurrencyFormatter().format(amount),\n\n currencyName: () =>\n nameFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode, // e.g. \"US dollars\"\n\n currencySymbol: () =>\n defaultFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode, // e.g. \"USD\"\n\n currencyNarrowSymbol: () =>\n narrowSymbolFormatter().formatToParts(amount).find(isPartCurrency)\n ?.value ?? '', // e.g. \"$\"\n\n amount: () =>\n defaultFormatter()\n .formatToParts(amount)\n .filter((part) =>\n ['decimal', 'fraction', 'group', 'integer', 'literal'].includes(\n part.type\n )\n )\n .map((part) => part.value)\n .join(''),\n }),\n [\n money,\n amount,\n nameFormatter,\n defaultFormatter,\n narrowSymbolFormatter,\n withoutCurrencyFormatter,\n withoutTrailingZerosFormatter,\n withoutTrailingZerosOrCurrencyFormatter,\n ]\n );\n\n // Call functions automatically when the properties are accessed\n // to keep these functions as an implementation detail.\n return useMemo(\n () =>\n new Proxy(lazyFormatters as unknown as UseMoneyValue, {\n get: (target, key) => Reflect.get(target, key)?.call(null),\n }),\n [lazyFormatters]\n );\n}\n\nfunction useLazyFormatter(locale: string, options?: Intl.NumberFormatOptions) {\n return useMemo(() => {\n let memoized: Intl.NumberFormat;\n return () => (memoized ??= new Intl.NumberFormat(locale, options));\n }, [locale, options]);\n}\n"],"names":["useMoney","money","locale","useShop","Error","amount","parseFloat","options","useMemo","style","currency","currencyCode","defaultFormatter","useLazyFormatter","nameFormatter","currencyDisplay","narrowSymbolFormatter","withoutTrailingZerosFormatter","minimumFractionDigits","maximumFractionDigits","withoutCurrencyFormatter","withoutTrailingZerosOrCurrencyFormatter","isPartCurrency","part","type","lazyFormatters","original","localizedString","format","parts","formatToParts","withoutTrailingZeros","withoutTrailingZerosAndCurrency","currencyName","find","value","currencySymbol","currencyNarrowSymbol","filter","includes","map","join","Proxy","get","target","key","Reflect","call","memoized","Intl","NumberFormat"],"mappings":"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"}
1
+ {"version":3,"file":"useMoney.cjs","sources":["../../src/useMoney.tsx"],"sourcesContent":["import {useMemo} from 'react';\nimport {useShop} from './ShopifyProvider.js';\nimport {CurrencyCode, MoneyV2} from './storefront-api-types.js';\n\nexport type UseMoneyValue = {\n /**\n * The currency code from the `MoneyV2` object.\n */\n currencyCode: CurrencyCode;\n /**\n * The name for the currency code, returned by `Intl.NumberFormat`.\n */\n currencyName?: string;\n /**\n * The currency symbol returned by `Intl.NumberFormat`.\n */\n currencySymbol?: string;\n /**\n * The currency narrow symbol returned by `Intl.NumberFormat`.\n */\n currencyNarrowSymbol?: string;\n /**\n * The localized amount, without any currency symbols or non-number types from the `Intl.NumberFormat.formatToParts` parts.\n */\n amount: string;\n /**\n * All parts returned by `Intl.NumberFormat.formatToParts`.\n */\n parts: Intl.NumberFormatPart[];\n /**\n * A string returned by `new Intl.NumberFormat` for the amount and currency code,\n * using the `locale` value in the [`LocalizationProvider` component](https://shopify.dev/api/hydrogen/components/localization/localizationprovider).\n */\n localizedString: string;\n /**\n * The `MoneyV2` object provided as an argument to the hook.\n */\n original: MoneyV2;\n /**\n * A string with trailing zeros removed from the fractional part, if any exist. If there are no trailing zeros, then the fractional part remains.\n * For example, `$640.00` turns into `$640`.\n * `$640.42` remains `$640.42`.\n */\n withoutTrailingZeros: string;\n /**\n * A string without currency and without trailing zeros removed from the fractional part, if any exist. If there are no trailing zeros, then the fractional part remains.\n * For example, `$640.00` turns into `640`.\n * `$640.42` turns into `640.42`.\n */\n withoutTrailingZerosAndCurrency: string;\n};\n\n/**\n * The `useMoney` hook takes a [MoneyV2 object](https://shopify.dev/api/storefront/reference/common-objects/moneyv2) and returns a\n * default-formatted string of the amount with the correct currency indicator, along with some of the parts provided by\n * [Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat).\n * Uses `locale` from `ShopifyProvider`\n */\nexport function useMoney(money: MoneyV2): UseMoneyValue {\n const {locale} = useShop();\n\n if (!locale) {\n throw new Error(\n `useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work`\n );\n }\n\n const amount = parseFloat(money.amount);\n\n const options = useMemo(\n () => ({\n style: 'currency',\n currency: money.currencyCode,\n }),\n [money.currencyCode]\n );\n\n const defaultFormatter = useLazyFormatter(locale, options);\n\n const nameFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'name',\n });\n\n const narrowSymbolFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'narrowSymbol',\n });\n\n const withoutTrailingZerosFormatter = useLazyFormatter(locale, {\n ...options,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const withoutCurrencyFormatter = useLazyFormatter(locale);\n\n const withoutTrailingZerosOrCurrencyFormatter = useLazyFormatter(locale, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const isPartCurrency = (part: Intl.NumberFormatPart) =>\n part.type === 'currency';\n\n // By wrapping these properties in functions, we only\n // create formatters if they are going to be used.\n const lazyFormatters = useMemo(\n () => ({\n original: () => money,\n currencyCode: () => money.currencyCode,\n\n localizedString: () => defaultFormatter().format(amount),\n\n parts: () => defaultFormatter().formatToParts(amount),\n\n withoutTrailingZeros: () =>\n amount % 1 === 0\n ? withoutTrailingZerosFormatter().format(amount)\n : defaultFormatter().format(amount),\n\n withoutTrailingZerosAndCurrency: () =>\n amount % 1 === 0\n ? withoutTrailingZerosOrCurrencyFormatter().format(amount)\n : withoutCurrencyFormatter().format(amount),\n\n currencyName: () =>\n nameFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode, // e.g. \"US dollars\"\n\n currencySymbol: () =>\n defaultFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode, // e.g. \"USD\"\n\n currencyNarrowSymbol: () =>\n narrowSymbolFormatter().formatToParts(amount).find(isPartCurrency)\n ?.value ?? '', // e.g. \"$\"\n\n amount: () =>\n defaultFormatter()\n .formatToParts(amount)\n .filter((part) =>\n ['decimal', 'fraction', 'group', 'integer', 'literal'].includes(\n part.type\n )\n )\n .map((part) => part.value)\n .join(''),\n }),\n [\n money,\n amount,\n nameFormatter,\n defaultFormatter,\n narrowSymbolFormatter,\n withoutCurrencyFormatter,\n withoutTrailingZerosFormatter,\n withoutTrailingZerosOrCurrencyFormatter,\n ]\n );\n\n // Call functions automatically when the properties are accessed\n // to keep these functions as an implementation detail.\n return useMemo(\n () =>\n new Proxy(lazyFormatters as unknown as UseMoneyValue, {\n get: (target, key) => Reflect.get(target, key)?.call(null),\n }),\n [lazyFormatters]\n );\n}\n\nfunction useLazyFormatter(locale: string, options?: Intl.NumberFormatOptions) {\n return useMemo(() => {\n let memoized: Intl.NumberFormat;\n return () => (memoized ??= new Intl.NumberFormat(locale, options));\n }, [locale, options]);\n}\n"],"names":["useMoney","money","locale","useShop","Error","amount","parseFloat","options","useMemo","style","currency","currencyCode","defaultFormatter","useLazyFormatter","nameFormatter","currencyDisplay","narrowSymbolFormatter","withoutTrailingZerosFormatter","minimumFractionDigits","maximumFractionDigits","withoutCurrencyFormatter","withoutTrailingZerosOrCurrencyFormatter","isPartCurrency","part","type","lazyFormatters","original","localizedString","format","parts","formatToParts","withoutTrailingZeros","withoutTrailingZerosAndCurrency","currencyName","find","value","currencySymbol","currencyNarrowSymbol","filter","includes","map","join","Proxy","get","target","key","Reflect","call","memoized","Intl","NumberFormat"],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { useMemo } from "react";
2
+ import { useShop } from "./ShopifyProvider.js";
3
+ function useMoney(money) {
4
+ const {
5
+ locale
6
+ } = useShop();
7
+ if (!locale) {
8
+ throw new Error(`useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work`);
9
+ }
10
+ const amount = parseFloat(money.amount);
11
+ const options = useMemo(() => ({
12
+ style: "currency",
13
+ currency: money.currencyCode
14
+ }), [money.currencyCode]);
15
+ const defaultFormatter = useLazyFormatter(locale, options);
16
+ const nameFormatter = useLazyFormatter(locale, {
17
+ ...options,
18
+ currencyDisplay: "name"
19
+ });
20
+ const narrowSymbolFormatter = useLazyFormatter(locale, {
21
+ ...options,
22
+ currencyDisplay: "narrowSymbol"
23
+ });
24
+ const withoutTrailingZerosFormatter = useLazyFormatter(locale, {
25
+ ...options,
26
+ minimumFractionDigits: 0,
27
+ maximumFractionDigits: 0
28
+ });
29
+ const withoutCurrencyFormatter = useLazyFormatter(locale);
30
+ const withoutTrailingZerosOrCurrencyFormatter = useLazyFormatter(locale, {
31
+ minimumFractionDigits: 0,
32
+ maximumFractionDigits: 0
33
+ });
34
+ const isPartCurrency = (part) => part.type === "currency";
35
+ const lazyFormatters = useMemo(() => ({
36
+ original: () => money,
37
+ currencyCode: () => money.currencyCode,
38
+ localizedString: () => defaultFormatter().format(amount),
39
+ parts: () => defaultFormatter().formatToParts(amount),
40
+ withoutTrailingZeros: () => amount % 1 === 0 ? withoutTrailingZerosFormatter().format(amount) : defaultFormatter().format(amount),
41
+ withoutTrailingZerosAndCurrency: () => amount % 1 === 0 ? withoutTrailingZerosOrCurrencyFormatter().format(amount) : withoutCurrencyFormatter().format(amount),
42
+ currencyName: () => {
43
+ var _a, _b;
44
+ return (_b = (_a = nameFormatter().formatToParts(amount).find(isPartCurrency)) == null ? void 0 : _a.value) != null ? _b : money.currencyCode;
45
+ },
46
+ currencySymbol: () => {
47
+ var _a, _b;
48
+ return (_b = (_a = defaultFormatter().formatToParts(amount).find(isPartCurrency)) == null ? void 0 : _a.value) != null ? _b : money.currencyCode;
49
+ },
50
+ currencyNarrowSymbol: () => {
51
+ var _a, _b;
52
+ return (_b = (_a = narrowSymbolFormatter().formatToParts(amount).find(isPartCurrency)) == null ? void 0 : _a.value) != null ? _b : "";
53
+ },
54
+ amount: () => defaultFormatter().formatToParts(amount).filter((part) => ["decimal", "fraction", "group", "integer", "literal"].includes(part.type)).map((part) => part.value).join("")
55
+ }), [money, amount, nameFormatter, defaultFormatter, narrowSymbolFormatter, withoutCurrencyFormatter, withoutTrailingZerosFormatter, withoutTrailingZerosOrCurrencyFormatter]);
56
+ return useMemo(() => new Proxy(lazyFormatters, {
57
+ get: (target, key) => {
58
+ var _a;
59
+ return (_a = Reflect.get(target, key)) == null ? void 0 : _a.call(null);
60
+ }
61
+ }), [lazyFormatters]);
62
+ }
63
+ function useLazyFormatter(locale, options) {
64
+ return useMemo(() => {
65
+ let memoized;
66
+ return () => memoized != null ? memoized : memoized = new Intl.NumberFormat(locale, options);
67
+ }, [locale, options]);
68
+ }
69
+ export {
70
+ useMoney
71
+ };
72
+ //# sourceMappingURL=useMoney.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMoney.js","sources":["../../src/useMoney.tsx"],"sourcesContent":["import {useMemo} from 'react';\nimport {useShop} from './ShopifyProvider.js';\nimport {CurrencyCode, MoneyV2} from './storefront-api-types.js';\n\nexport type UseMoneyValue = {\n /**\n * The currency code from the `MoneyV2` object.\n */\n currencyCode: CurrencyCode;\n /**\n * The name for the currency code, returned by `Intl.NumberFormat`.\n */\n currencyName?: string;\n /**\n * The currency symbol returned by `Intl.NumberFormat`.\n */\n currencySymbol?: string;\n /**\n * The currency narrow symbol returned by `Intl.NumberFormat`.\n */\n currencyNarrowSymbol?: string;\n /**\n * The localized amount, without any currency symbols or non-number types from the `Intl.NumberFormat.formatToParts` parts.\n */\n amount: string;\n /**\n * All parts returned by `Intl.NumberFormat.formatToParts`.\n */\n parts: Intl.NumberFormatPart[];\n /**\n * A string returned by `new Intl.NumberFormat` for the amount and currency code,\n * using the `locale` value in the [`LocalizationProvider` component](https://shopify.dev/api/hydrogen/components/localization/localizationprovider).\n */\n localizedString: string;\n /**\n * The `MoneyV2` object provided as an argument to the hook.\n */\n original: MoneyV2;\n /**\n * A string with trailing zeros removed from the fractional part, if any exist. If there are no trailing zeros, then the fractional part remains.\n * For example, `$640.00` turns into `$640`.\n * `$640.42` remains `$640.42`.\n */\n withoutTrailingZeros: string;\n /**\n * A string without currency and without trailing zeros removed from the fractional part, if any exist. If there are no trailing zeros, then the fractional part remains.\n * For example, `$640.00` turns into `640`.\n * `$640.42` turns into `640.42`.\n */\n withoutTrailingZerosAndCurrency: string;\n};\n\n/**\n * The `useMoney` hook takes a [MoneyV2 object](https://shopify.dev/api/storefront/reference/common-objects/moneyv2) and returns a\n * default-formatted string of the amount with the correct currency indicator, along with some of the parts provided by\n * [Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat).\n * Uses `locale` from `ShopifyProvider`\n */\nexport function useMoney(money: MoneyV2): UseMoneyValue {\n const {locale} = useShop();\n\n if (!locale) {\n throw new Error(\n `useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work`\n );\n }\n\n const amount = parseFloat(money.amount);\n\n const options = useMemo(\n () => ({\n style: 'currency',\n currency: money.currencyCode,\n }),\n [money.currencyCode]\n );\n\n const defaultFormatter = useLazyFormatter(locale, options);\n\n const nameFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'name',\n });\n\n const narrowSymbolFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'narrowSymbol',\n });\n\n const withoutTrailingZerosFormatter = useLazyFormatter(locale, {\n ...options,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const withoutCurrencyFormatter = useLazyFormatter(locale);\n\n const withoutTrailingZerosOrCurrencyFormatter = useLazyFormatter(locale, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const isPartCurrency = (part: Intl.NumberFormatPart) =>\n part.type === 'currency';\n\n // By wrapping these properties in functions, we only\n // create formatters if they are going to be used.\n const lazyFormatters = useMemo(\n () => ({\n original: () => money,\n currencyCode: () => money.currencyCode,\n\n localizedString: () => defaultFormatter().format(amount),\n\n parts: () => defaultFormatter().formatToParts(amount),\n\n withoutTrailingZeros: () =>\n amount % 1 === 0\n ? withoutTrailingZerosFormatter().format(amount)\n : defaultFormatter().format(amount),\n\n withoutTrailingZerosAndCurrency: () =>\n amount % 1 === 0\n ? withoutTrailingZerosOrCurrencyFormatter().format(amount)\n : withoutCurrencyFormatter().format(amount),\n\n currencyName: () =>\n nameFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode, // e.g. \"US dollars\"\n\n currencySymbol: () =>\n defaultFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode, // e.g. \"USD\"\n\n currencyNarrowSymbol: () =>\n narrowSymbolFormatter().formatToParts(amount).find(isPartCurrency)\n ?.value ?? '', // e.g. \"$\"\n\n amount: () =>\n defaultFormatter()\n .formatToParts(amount)\n .filter((part) =>\n ['decimal', 'fraction', 'group', 'integer', 'literal'].includes(\n part.type\n )\n )\n .map((part) => part.value)\n .join(''),\n }),\n [\n money,\n amount,\n nameFormatter,\n defaultFormatter,\n narrowSymbolFormatter,\n withoutCurrencyFormatter,\n withoutTrailingZerosFormatter,\n withoutTrailingZerosOrCurrencyFormatter,\n ]\n );\n\n // Call functions automatically when the properties are accessed\n // to keep these functions as an implementation detail.\n return useMemo(\n () =>\n new Proxy(lazyFormatters as unknown as UseMoneyValue, {\n get: (target, key) => Reflect.get(target, key)?.call(null),\n }),\n [lazyFormatters]\n );\n}\n\nfunction useLazyFormatter(locale: string, options?: Intl.NumberFormatOptions) {\n return useMemo(() => {\n let memoized: Intl.NumberFormat;\n return () => (memoized ??= new Intl.NumberFormat(locale, options));\n }, [locale, options]);\n}\n"],"names":["useMoney","money","locale","useShop","Error","amount","parseFloat","options","useMemo","style","currency","currencyCode","defaultFormatter","useLazyFormatter","nameFormatter","currencyDisplay","narrowSymbolFormatter","withoutTrailingZerosFormatter","minimumFractionDigits","maximumFractionDigits","withoutCurrencyFormatter","withoutTrailingZerosOrCurrencyFormatter","isPartCurrency","part","type","lazyFormatters","original","localizedString","format","parts","formatToParts","withoutTrailingZeros","withoutTrailingZerosAndCurrency","currencyName","find","value","currencySymbol","currencyNarrowSymbol","filter","includes","map","join","Proxy","get","target","key","Reflect","call","memoized","Intl","NumberFormat"],"mappings":"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"}
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
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");
3
+ const react = require("react");
4
+ const CartProvider = require("./CartProvider.cjs");
5
+ const ProductProvider = require("./ProductProvider.cjs");
6
+ const BaseButton = require("./BaseButton.cjs");
7
7
  const jsxRuntime = require("react/jsx-runtime");
8
8
  function AddToCartButton(props) {
9
9
  var _a;
10
- const [addingItem, setAddingItem] = require$$0.useState(false);
10
+ const [addingItem, setAddingItem] = react.useState(false);
11
11
  const {
12
12
  variantId: explicitVariantId,
13
13
  quantity = 1,
@@ -27,12 +27,12 @@ function AddToCartButton(props) {
27
27
  } = ProductProvider.useProduct();
28
28
  const variantId = (_a = explicitVariantId != null ? explicitVariantId : selectedVariant == null ? void 0 : selectedVariant.id) != null ? _a : "";
29
29
  const disabled = explicitVariantId === null || variantId === "" || selectedVariant === null || addingItem || passthroughProps.disabled;
30
- require$$0.useEffect(() => {
30
+ react.useEffect(() => {
31
31
  if (addingItem && status === "idle") {
32
32
  setAddingItem(false);
33
33
  }
34
34
  }, [status, addingItem]);
35
- const handleAddItem = require$$0.useCallback(() => {
35
+ const handleAddItem = react.useCallback(() => {
36
36
  setAddingItem(true);
37
37
  linesAdd([{
38
38
  quantity,
@@ -67,4 +67,4 @@ function AddToCartButton(props) {
67
67
  });
68
68
  }
69
69
  exports.AddToCartButton = AddToCartButton;
70
- //# sourceMappingURL=AddToCartButton.js.map
70
+ //# sourceMappingURL=AddToCartButton.cjs.map
@@ -1 +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;"}
1
+ {"version":3,"file":"AddToCartButton.cjs","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,eAAkB,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,QAAAA,UAAU,MAAM;AACVnB,QAAAA,cAAcY,WAAW,QAAQ;AACnCX,oBAAc,KAAD;AAAA,IACd;AAAA,EAAA,GACA,CAACW,QAAQZ,UAAT,CAJM;AAMHoB,QAAAA,gBAAgBC,MAAAA,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.js";
3
+ import { useProduct } from "./ProductProvider.js";
4
+ import { BaseButton } from "./BaseButton.js";
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.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","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;"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const require$$0 = require("react");
3
+ const react = require("react");
4
4
  const jsxRuntime = require("react/jsx-runtime");
5
5
  function BaseButton(props) {
6
6
  const {
@@ -11,7 +11,7 @@ function BaseButton(props) {
11
11
  buttonRef,
12
12
  ...passthroughProps
13
13
  } = props;
14
- const handleOnClick = require$$0.useCallback((event) => {
14
+ const handleOnClick = react.useCallback((event) => {
15
15
  if (onClick) {
16
16
  const clickShouldContinue = onClick(event);
17
17
  if (typeof clickShouldContinue === "boolean" && clickShouldContinue === false || (event == null ? void 0 : event.defaultPrevented))
@@ -28,4 +28,4 @@ function BaseButton(props) {
28
28
  });
29
29
  }
30
30
  exports.BaseButton = BaseButton;
31
- //# sourceMappingURL=BaseButton.js.map
31
+ //# sourceMappingURL=BaseButton.cjs.map
@@ -1 +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;"}
1
+ {"version":3,"file":"BaseButton.cjs","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,kBACpB,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.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,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;"}
@@ -1,15 +1,15 @@
1
1
  "use strict";
2
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");
3
+ const react = require("react");
4
+ const CartProvider = require("./CartProvider.cjs");
5
+ const BaseButton = require("./BaseButton.cjs");
6
6
  const jsxRuntime = require("react/jsx-runtime");
7
7
  function BuyNowButton(props) {
8
8
  const {
9
9
  cartCreate,
10
10
  checkoutUrl
11
11
  } = CartProvider.useCart();
12
- const [loading, setLoading] = require$$0.useState(false);
12
+ const [loading, setLoading] = react.useState(false);
13
13
  const {
14
14
  quantity,
15
15
  variantId,
@@ -18,12 +18,12 @@ function BuyNowButton(props) {
18
18
  children,
19
19
  ...passthroughProps
20
20
  } = props;
21
- require$$0.useEffect(() => {
21
+ react.useEffect(() => {
22
22
  if (checkoutUrl) {
23
23
  window.location.href = checkoutUrl;
24
24
  }
25
25
  }, [checkoutUrl]);
26
- const handleBuyNow = require$$0.useCallback(() => {
26
+ const handleBuyNow = react.useCallback(() => {
27
27
  setLoading(true);
28
28
  cartCreate({
29
29
  lines: [{
@@ -42,4 +42,4 @@ function BuyNowButton(props) {
42
42
  });
43
43
  }
44
44
  exports.BuyNowButton = BuyNowButton;
45
- //# sourceMappingURL=BuyNowButton.js.map
45
+ //# sourceMappingURL=BuyNowButton.cjs.map
@@ -1 +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;"}
1
+ {"version":3,"file":"BuyNowButton.cjs","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,eAAkB,KAAV;AAEhC,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDZ,IAAAA;AAEJa,QAAAA,UAAU,MAAM;AACd,QAAIX,aAAa;AACfY,aAAOC,SAASC,OAAOd;AAAAA,IACxB;AAAA,EAAA,GACA,CAACA,WAAD,CAJM;AAMHe,QAAAA,eAAeC,MAAAA,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;;"}