@shopify/hydrogen-react 2022.10.2 → 2022.10.4

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 (621) hide show
  1. package/README.md +49 -0
  2. package/dist/{dev → browser-dev}/AddToCartButton.mjs +0 -0
  3. package/dist/browser-dev/AddToCartButton.mjs.map +1 -0
  4. package/dist/{dev → browser-dev}/BaseButton.mjs +0 -0
  5. package/dist/{dev → browser-dev}/BaseButton.mjs.map +1 -1
  6. package/dist/{dev → browser-dev}/BuyNowButton.mjs +0 -0
  7. package/dist/{dev → browser-dev}/BuyNowButton.mjs.map +1 -1
  8. package/dist/{dev → browser-dev}/CartCheckoutButton.mjs +0 -0
  9. package/dist/{dev → browser-dev}/CartCheckoutButton.mjs.map +1 -1
  10. package/dist/{dev → browser-dev}/CartProvider.mjs +0 -0
  11. package/dist/{prod → browser-dev}/CartProvider.mjs.map +1 -1
  12. package/dist/{dev → browser-dev}/ExternalVideo.mjs +0 -0
  13. package/dist/{dev → browser-dev}/ExternalVideo.mjs.map +1 -1
  14. package/dist/{dev → browser-dev}/Image.mjs +0 -0
  15. package/dist/{dev → browser-dev}/Image.mjs.map +1 -1
  16. package/dist/{dev → browser-dev}/MediaFile.mjs +1 -1
  17. package/dist/browser-dev/MediaFile.mjs.map +1 -0
  18. package/dist/{dev → browser-dev}/Metafield.mjs +0 -0
  19. package/dist/{dev → browser-dev}/Metafield.mjs.map +1 -1
  20. package/dist/{dev → browser-dev}/ModelViewer.mjs +0 -0
  21. package/dist/{dev → browser-dev}/ModelViewer.mjs.map +1 -1
  22. package/dist/{dev → browser-dev}/Money.mjs +0 -0
  23. package/dist/{dev → browser-dev}/Money.mjs.map +1 -1
  24. package/dist/{dev → browser-dev}/ProductPrice.mjs +0 -0
  25. package/dist/{dev → browser-dev}/ProductPrice.mjs.map +1 -1
  26. package/dist/{dev → browser-dev}/ProductProvider.mjs +0 -0
  27. package/dist/{dev → browser-dev}/ProductProvider.mjs.map +1 -1
  28. package/dist/{dev → browser-dev}/ShopPayButton.mjs +0 -0
  29. package/dist/{prod → browser-dev}/ShopPayButton.mjs.map +1 -1
  30. package/dist/browser-dev/ShopifyProvider.mjs +86 -0
  31. package/dist/browser-dev/ShopifyProvider.mjs.map +1 -0
  32. package/dist/{dev → browser-dev}/Video.mjs +0 -0
  33. package/dist/{dev → browser-dev}/Video.mjs.map +1 -1
  34. package/dist/{dev → browser-dev}/_virtual/index.mjs +0 -0
  35. package/dist/{dev → browser-dev}/_virtual/index.mjs.map +0 -0
  36. package/dist/{dev → browser-dev}/_virtual/use-sync-external-store-shim.development.mjs +0 -0
  37. package/dist/{dev → browser-dev}/_virtual/use-sync-external-store-shim.development.mjs.map +0 -0
  38. package/dist/{dev → browser-dev}/_virtual/use-sync-external-store-shim.production.min.mjs +0 -0
  39. package/dist/{dev → browser-dev}/_virtual/use-sync-external-store-shim.production.min.mjs.map +0 -0
  40. package/dist/{dev → browser-dev}/_virtual/with-selector.development.mjs +0 -0
  41. package/dist/{dev → browser-dev}/_virtual/with-selector.development.mjs.map +0 -0
  42. package/dist/{dev → browser-dev}/_virtual/with-selector.mjs +0 -0
  43. package/dist/{dev → browser-dev}/_virtual/with-selector.mjs.map +0 -0
  44. package/dist/{dev → browser-dev}/_virtual/with-selector.production.min.mjs +0 -0
  45. package/dist/{dev → browser-dev}/_virtual/with-selector.production.min.mjs.map +0 -0
  46. package/dist/{prod → browser-dev}/cart-constants.mjs +1 -3
  47. package/dist/browser-dev/cart-constants.mjs.map +1 -0
  48. package/dist/{dev → browser-dev}/cart-hooks.mjs +9 -13
  49. package/dist/browser-dev/cart-hooks.mjs.map +1 -0
  50. package/dist/{dev → browser-dev}/cart-queries.mjs +0 -0
  51. package/dist/{dev → browser-dev}/cart-queries.mjs.map +0 -0
  52. package/dist/browser-dev/codegen.helpers.mjs +12 -0
  53. package/dist/browser-dev/codegen.helpers.mjs.map +1 -0
  54. package/dist/{dev → browser-dev}/flatten-connection.mjs +0 -0
  55. package/dist/{dev → browser-dev}/flatten-connection.mjs.map +0 -0
  56. package/dist/{dev → browser-dev}/image-size.mjs +0 -0
  57. package/dist/{dev → browser-dev}/image-size.mjs.map +0 -0
  58. package/dist/{prod → browser-dev}/index.mjs +2 -0
  59. package/dist/browser-dev/index.mjs.map +1 -0
  60. package/dist/{dev → browser-dev}/load-script.mjs +0 -0
  61. package/dist/{prod → browser-dev}/load-script.mjs.map +1 -1
  62. package/dist/{dev → browser-dev}/metafield-parser.mjs +0 -0
  63. package/dist/browser-dev/metafield-parser.mjs.map +1 -0
  64. package/dist/{dev → browser-dev}/node_modules/@xstate/fsm/es/index.mjs +0 -0
  65. package/dist/{dev → browser-dev}/node_modules/@xstate/fsm/es/index.mjs.map +0 -0
  66. package/dist/{dev → browser-dev}/node_modules/@xstate/react/es/fsm.mjs +0 -0
  67. package/dist/{dev → browser-dev}/node_modules/@xstate/react/es/fsm.mjs.map +0 -0
  68. package/dist/{dev → browser-dev}/node_modules/@xstate/react/es/useConstant.mjs +0 -0
  69. package/dist/{dev → browser-dev}/node_modules/@xstate/react/es/useConstant.mjs.map +0 -0
  70. package/dist/{dev → browser-dev}/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs +0 -0
  71. package/dist/{dev → browser-dev}/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs.map +0 -0
  72. package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs +0 -0
  73. package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +0 -0
  74. package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs +0 -0
  75. package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +0 -0
  76. package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs +0 -0
  77. package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +0 -0
  78. package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs +0 -0
  79. package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +0 -0
  80. package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/shim/index.mjs +0 -0
  81. package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/shim/index.mjs.map +0 -0
  82. package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/shim/with-selector.mjs +0 -0
  83. package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/shim/with-selector.mjs.map +0 -0
  84. package/dist/{dev → browser-dev}/storefront-api-constants.mjs +0 -0
  85. package/dist/{dev → browser-dev}/storefront-api-constants.mjs.map +0 -0
  86. package/dist/{dev → browser-dev}/storefront-client.mjs +22 -10
  87. package/dist/browser-dev/storefront-client.mjs.map +1 -0
  88. package/dist/{dev → browser-dev}/useCartAPIStateMachine.mjs +0 -0
  89. package/dist/{dev → browser-dev}/useCartAPIStateMachine.mjs.map +1 -1
  90. package/dist/{dev → browser-dev}/useCartActions.mjs +0 -0
  91. package/dist/{dev → browser-dev}/useCartActions.mjs.map +1 -1
  92. package/dist/{dev → browser-dev}/useMoney.mjs +0 -0
  93. package/dist/{prod → browser-dev}/useMoney.mjs.map +1 -1
  94. package/dist/{prod → browser-prod}/AddToCartButton.mjs +0 -0
  95. package/dist/browser-prod/AddToCartButton.mjs.map +1 -0
  96. package/dist/{prod → browser-prod}/BaseButton.mjs +0 -0
  97. package/dist/{prod → browser-prod}/BaseButton.mjs.map +1 -1
  98. package/dist/{prod → browser-prod}/BuyNowButton.mjs +0 -0
  99. package/dist/{prod → browser-prod}/BuyNowButton.mjs.map +1 -1
  100. package/dist/{prod → browser-prod}/CartCheckoutButton.mjs +0 -0
  101. package/dist/{prod → browser-prod}/CartCheckoutButton.mjs.map +1 -1
  102. package/dist/{prod → browser-prod}/CartProvider.mjs +0 -0
  103. package/dist/{dev → browser-prod}/CartProvider.mjs.map +1 -1
  104. package/dist/{prod → browser-prod}/ExternalVideo.mjs +0 -0
  105. package/dist/{prod → browser-prod}/ExternalVideo.mjs.map +1 -1
  106. package/dist/{prod → browser-prod}/Image.mjs +0 -0
  107. package/dist/{prod → browser-prod}/Image.mjs.map +1 -1
  108. package/dist/{prod → browser-prod}/MediaFile.mjs +2 -2
  109. package/dist/browser-prod/MediaFile.mjs.map +1 -0
  110. package/dist/{prod → browser-prod}/Metafield.mjs +0 -0
  111. package/dist/{prod → browser-prod}/Metafield.mjs.map +1 -1
  112. package/dist/{prod → browser-prod}/ModelViewer.mjs +0 -0
  113. package/dist/{prod → browser-prod}/ModelViewer.mjs.map +1 -1
  114. package/dist/{prod → browser-prod}/Money.mjs +0 -0
  115. package/dist/{prod → browser-prod}/Money.mjs.map +1 -1
  116. package/dist/{prod → browser-prod}/ProductPrice.mjs +0 -0
  117. package/dist/{prod → browser-prod}/ProductPrice.mjs.map +1 -1
  118. package/dist/{prod → browser-prod}/ProductProvider.mjs +0 -0
  119. package/dist/{prod → browser-prod}/ProductProvider.mjs.map +1 -1
  120. package/dist/{prod → browser-prod}/ShopPayButton.mjs +0 -0
  121. package/dist/{dev → browser-prod}/ShopPayButton.mjs.map +1 -1
  122. package/dist/browser-prod/ShopifyProvider.mjs +80 -0
  123. package/dist/browser-prod/ShopifyProvider.mjs.map +1 -0
  124. package/dist/{prod → browser-prod}/Video.mjs +0 -0
  125. package/dist/{prod → browser-prod}/Video.mjs.map +1 -1
  126. package/dist/{prod → browser-prod}/_virtual/index.mjs +0 -0
  127. package/dist/{prod → browser-prod}/_virtual/index.mjs.map +0 -0
  128. package/dist/{prod → browser-prod}/_virtual/use-sync-external-store-shim.development.mjs +0 -0
  129. package/dist/{prod → browser-prod}/_virtual/use-sync-external-store-shim.development.mjs.map +0 -0
  130. package/dist/{prod → browser-prod}/_virtual/use-sync-external-store-shim.production.min.mjs +0 -0
  131. package/dist/{prod → browser-prod}/_virtual/use-sync-external-store-shim.production.min.mjs.map +0 -0
  132. package/dist/{prod → browser-prod}/_virtual/with-selector.development.mjs +0 -0
  133. package/dist/{prod → browser-prod}/_virtual/with-selector.development.mjs.map +0 -0
  134. package/dist/{prod → browser-prod}/_virtual/with-selector.mjs +0 -0
  135. package/dist/{prod → browser-prod}/_virtual/with-selector.mjs.map +0 -0
  136. package/dist/{prod → browser-prod}/_virtual/with-selector.production.min.mjs +0 -0
  137. package/dist/{prod → browser-prod}/_virtual/with-selector.production.min.mjs.map +0 -0
  138. package/dist/{dev → browser-prod}/cart-constants.mjs +1 -3
  139. package/dist/browser-prod/cart-constants.mjs.map +1 -0
  140. package/dist/{prod → browser-prod}/cart-hooks.mjs +9 -13
  141. package/dist/browser-prod/cart-hooks.mjs.map +1 -0
  142. package/dist/{prod → browser-prod}/cart-queries.mjs +0 -0
  143. package/dist/{prod → browser-prod}/cart-queries.mjs.map +0 -0
  144. package/dist/browser-prod/codegen.helpers.mjs +12 -0
  145. package/dist/browser-prod/codegen.helpers.mjs.map +1 -0
  146. package/dist/{prod → browser-prod}/flatten-connection.mjs +0 -0
  147. package/dist/{prod → browser-prod}/flatten-connection.mjs.map +0 -0
  148. package/dist/{prod → browser-prod}/image-size.mjs +0 -0
  149. package/dist/{prod → browser-prod}/image-size.mjs.map +0 -0
  150. package/dist/{dev → browser-prod}/index.mjs +2 -0
  151. package/dist/browser-prod/index.mjs.map +1 -0
  152. package/dist/{prod → browser-prod}/load-script.mjs +0 -0
  153. package/dist/{dev → browser-prod}/load-script.mjs.map +1 -1
  154. package/dist/{prod → browser-prod}/metafield-parser.mjs +0 -0
  155. package/dist/browser-prod/metafield-parser.mjs.map +1 -0
  156. package/dist/{prod → browser-prod}/node_modules/@xstate/fsm/es/index.mjs +0 -0
  157. package/dist/{prod → browser-prod}/node_modules/@xstate/fsm/es/index.mjs.map +0 -0
  158. package/dist/{prod → browser-prod}/node_modules/@xstate/react/es/fsm.mjs +0 -0
  159. package/dist/{prod → browser-prod}/node_modules/@xstate/react/es/fsm.mjs.map +0 -0
  160. package/dist/{prod → browser-prod}/node_modules/@xstate/react/es/useConstant.mjs +0 -0
  161. package/dist/{prod → browser-prod}/node_modules/@xstate/react/es/useConstant.mjs.map +0 -0
  162. package/dist/{prod → browser-prod}/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs +0 -0
  163. package/dist/{prod → browser-prod}/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs.map +0 -0
  164. package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs +0 -0
  165. package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +0 -0
  166. package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs +0 -0
  167. package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +0 -0
  168. package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs +0 -0
  169. package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +0 -0
  170. package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs +0 -0
  171. package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +0 -0
  172. package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/shim/index.mjs +0 -0
  173. package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/shim/index.mjs.map +0 -0
  174. package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/shim/with-selector.mjs +0 -0
  175. package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/shim/with-selector.mjs.map +0 -0
  176. package/dist/{prod → browser-prod}/storefront-api-constants.mjs +0 -0
  177. package/dist/{prod → browser-prod}/storefront-api-constants.mjs.map +0 -0
  178. package/dist/{prod → browser-prod}/storefront-client.mjs +22 -10
  179. package/dist/browser-prod/storefront-client.mjs.map +1 -0
  180. package/dist/{prod → browser-prod}/useCartAPIStateMachine.mjs +0 -0
  181. package/dist/{prod → browser-prod}/useCartAPIStateMachine.mjs.map +1 -1
  182. package/dist/{prod → browser-prod}/useCartActions.mjs +0 -0
  183. package/dist/{prod → browser-prod}/useCartActions.mjs.map +1 -1
  184. package/dist/{prod → browser-prod}/useMoney.mjs +0 -0
  185. package/dist/{dev → browser-prod}/useMoney.mjs.map +1 -1
  186. package/dist/{dev → node-dev}/AddToCartButton.js +0 -0
  187. package/dist/node-dev/AddToCartButton.js.map +1 -0
  188. package/dist/node-dev/AddToCartButton.mjs +70 -0
  189. package/dist/node-dev/AddToCartButton.mjs.map +1 -0
  190. package/dist/{dev → node-dev}/BaseButton.js +0 -0
  191. package/dist/{dev → node-dev}/BaseButton.js.map +1 -1
  192. package/dist/node-dev/BaseButton.mjs +31 -0
  193. package/dist/node-dev/BaseButton.mjs.map +1 -0
  194. package/dist/{dev → node-dev}/BuyNowButton.js +0 -0
  195. package/dist/{dev → node-dev}/BuyNowButton.js.map +1 -1
  196. package/dist/node-dev/BuyNowButton.mjs +45 -0
  197. package/dist/node-dev/BuyNowButton.mjs.map +1 -0
  198. package/dist/{dev → node-dev}/CartCheckoutButton.js +0 -0
  199. package/dist/{dev → node-dev}/CartCheckoutButton.js.map +1 -1
  200. package/dist/node-dev/CartCheckoutButton.mjs +30 -0
  201. package/dist/node-dev/CartCheckoutButton.mjs.map +1 -0
  202. package/dist/{dev → node-dev}/CartProvider.js +0 -0
  203. package/dist/{prod → node-dev}/CartProvider.js.map +1 -1
  204. package/dist/node-dev/CartProvider.mjs +485 -0
  205. package/dist/node-dev/CartProvider.mjs.map +1 -0
  206. package/dist/{dev → node-dev}/ExternalVideo.js +0 -0
  207. package/dist/{dev → node-dev}/ExternalVideo.js.map +1 -1
  208. package/dist/node-dev/ExternalVideo.mjs +39 -0
  209. package/dist/node-dev/ExternalVideo.mjs.map +1 -0
  210. package/dist/{dev → node-dev}/Image.js +0 -0
  211. package/dist/{dev → node-dev}/Image.js.map +1 -1
  212. package/dist/node-dev/Image.mjs +104 -0
  213. package/dist/node-dev/Image.mjs.map +1 -0
  214. package/dist/{dev → node-dev}/MediaFile.js +1 -1
  215. package/dist/node-dev/MediaFile.js.map +1 -0
  216. package/dist/node-dev/MediaFile.mjs +57 -0
  217. package/dist/node-dev/MediaFile.mjs.map +1 -0
  218. package/dist/{dev → node-dev}/Metafield.js +0 -0
  219. package/dist/{dev → node-dev}/Metafield.js.map +1 -1
  220. package/dist/node-dev/Metafield.mjs +301 -0
  221. package/dist/node-dev/Metafield.mjs.map +1 -0
  222. package/dist/{dev → node-dev}/ModelViewer.js +0 -0
  223. package/dist/{dev → node-dev}/ModelViewer.js.map +1 -1
  224. package/dist/node-dev/ModelViewer.mjs +145 -0
  225. package/dist/node-dev/ModelViewer.mjs.map +1 -0
  226. package/dist/{dev → node-dev}/Money.js +0 -0
  227. package/dist/{dev → node-dev}/Money.js.map +1 -1
  228. package/dist/node-dev/Money.mjs +40 -0
  229. package/dist/node-dev/Money.mjs.map +1 -0
  230. package/dist/{dev → node-dev}/ProductPrice.js +0 -0
  231. package/dist/{dev → node-dev}/ProductPrice.js.map +1 -1
  232. package/dist/node-dev/ProductPrice.mjs +61 -0
  233. package/dist/node-dev/ProductPrice.mjs.map +1 -0
  234. package/dist/{dev → node-dev}/ProductProvider.js +0 -0
  235. package/dist/{prod → node-dev}/ProductProvider.js.map +1 -1
  236. package/dist/node-dev/ProductProvider.mjs +161 -0
  237. package/dist/node-dev/ProductProvider.mjs.map +1 -0
  238. package/dist/{dev → node-dev}/ShopPayButton.js +0 -0
  239. package/dist/{prod → node-dev}/ShopPayButton.js.map +1 -1
  240. package/dist/node-dev/ShopPayButton.mjs +64 -0
  241. package/dist/node-dev/ShopPayButton.mjs.map +1 -0
  242. package/dist/node-dev/ShopifyProvider.js +86 -0
  243. package/dist/node-dev/ShopifyProvider.js.map +1 -0
  244. package/dist/node-dev/ShopifyProvider.mjs +86 -0
  245. package/dist/node-dev/ShopifyProvider.mjs.map +1 -0
  246. package/dist/{dev → node-dev}/Video.js +0 -0
  247. package/dist/{dev → node-dev}/Video.js.map +1 -1
  248. package/dist/node-dev/Video.mjs +44 -0
  249. package/dist/node-dev/Video.mjs.map +1 -0
  250. package/dist/{dev → node-dev}/_virtual/index.js +0 -0
  251. package/dist/{dev → node-dev}/_virtual/index.js.map +0 -0
  252. package/dist/node-dev/_virtual/index.mjs +5 -0
  253. package/dist/{dev → node-dev/_virtual}/index.mjs.map +1 -1
  254. package/dist/{dev → node-dev}/_virtual/use-sync-external-store-shim.development.js +0 -0
  255. package/dist/{dev → node-dev}/_virtual/use-sync-external-store-shim.development.js.map +0 -0
  256. package/dist/node-dev/_virtual/use-sync-external-store-shim.development.mjs +5 -0
  257. package/dist/node-dev/_virtual/use-sync-external-store-shim.development.mjs.map +1 -0
  258. package/dist/{dev → node-dev}/_virtual/use-sync-external-store-shim.production.min.js +0 -0
  259. package/dist/{dev → node-dev}/_virtual/use-sync-external-store-shim.production.min.js.map +0 -0
  260. package/dist/node-dev/_virtual/use-sync-external-store-shim.production.min.mjs +5 -0
  261. package/dist/node-dev/_virtual/use-sync-external-store-shim.production.min.mjs.map +1 -0
  262. package/dist/{dev → node-dev}/_virtual/with-selector.development.js +0 -0
  263. package/dist/{dev → node-dev}/_virtual/with-selector.development.js.map +0 -0
  264. package/dist/node-dev/_virtual/with-selector.development.mjs +5 -0
  265. package/dist/node-dev/_virtual/with-selector.development.mjs.map +1 -0
  266. package/dist/{dev → node-dev}/_virtual/with-selector.js +0 -0
  267. package/dist/{dev → node-dev}/_virtual/with-selector.js.map +0 -0
  268. package/dist/node-dev/_virtual/with-selector.mjs +5 -0
  269. package/dist/node-dev/_virtual/with-selector.mjs.map +1 -0
  270. package/dist/{dev → node-dev}/_virtual/with-selector.production.min.js +0 -0
  271. package/dist/{dev → node-dev}/_virtual/with-selector.production.min.js.map +0 -0
  272. package/dist/node-dev/_virtual/with-selector.production.min.mjs +5 -0
  273. package/dist/node-dev/_virtual/with-selector.production.min.mjs.map +1 -0
  274. package/dist/{dev → node-dev}/cart-constants.js +0 -2
  275. package/dist/node-dev/cart-constants.js.map +1 -0
  276. package/dist/node-dev/cart-constants.mjs +15 -0
  277. package/dist/node-dev/cart-constants.mjs.map +1 -0
  278. package/dist/{dev → node-dev}/cart-hooks.js +8 -12
  279. package/dist/node-dev/cart-hooks.js.map +1 -0
  280. package/dist/node-dev/cart-hooks.mjs +44 -0
  281. package/dist/node-dev/cart-hooks.mjs.map +1 -0
  282. package/dist/{dev → node-dev}/cart-queries.js +0 -0
  283. package/dist/{dev → node-dev}/cart-queries.js.map +0 -0
  284. package/dist/node-dev/cart-queries.mjs +114 -0
  285. package/dist/node-dev/cart-queries.mjs.map +1 -0
  286. package/dist/node-dev/codegen.helpers.js +12 -0
  287. package/dist/node-dev/codegen.helpers.js.map +1 -0
  288. package/dist/node-dev/codegen.helpers.mjs +12 -0
  289. package/dist/node-dev/codegen.helpers.mjs.map +1 -0
  290. package/dist/{dev → node-dev}/flatten-connection.js +0 -0
  291. package/dist/{dev → node-dev}/flatten-connection.js.map +0 -0
  292. package/dist/node-dev/flatten-connection.mjs +29 -0
  293. package/dist/node-dev/flatten-connection.mjs.map +1 -0
  294. package/dist/{dev → node-dev}/image-size.js +0 -0
  295. package/dist/{dev → node-dev}/image-size.js.map +0 -0
  296. package/dist/node-dev/image-size.mjs +80 -0
  297. package/dist/node-dev/image-size.mjs.map +1 -0
  298. package/dist/{dev → node-dev}/index.js +2 -0
  299. package/dist/{dev → node-dev}/index.js.map +1 -1
  300. package/dist/node-dev/index.mjs +48 -0
  301. package/dist/node-dev/index.mjs.map +1 -0
  302. package/dist/{dev → node-dev}/load-script.js +0 -0
  303. package/dist/{dev → node-dev}/load-script.js.map +1 -1
  304. package/dist/node-dev/load-script.mjs +52 -0
  305. package/dist/node-dev/load-script.mjs.map +1 -0
  306. package/dist/{dev → node-dev}/metafield-parser.js +0 -0
  307. package/dist/node-dev/metafield-parser.js.map +1 -0
  308. package/dist/node-dev/metafield-parser.mjs +103 -0
  309. package/dist/node-dev/metafield-parser.mjs.map +1 -0
  310. package/dist/{dev → node-dev}/node_modules/@xstate/fsm/es/index.js +0 -0
  311. package/dist/{dev → node-dev}/node_modules/@xstate/fsm/es/index.js.map +0 -0
  312. package/dist/node-dev/node_modules/@xstate/fsm/es/index.mjs +159 -0
  313. package/dist/node-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -0
  314. package/dist/{dev → node-dev}/node_modules/@xstate/react/es/fsm.js +2 -2
  315. package/dist/{dev → node-dev}/node_modules/@xstate/react/es/fsm.js.map +1 -1
  316. package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs +94 -0
  317. package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -0
  318. package/dist/{dev → node-dev}/node_modules/@xstate/react/es/useConstant.js +0 -0
  319. package/dist/{dev → node-dev}/node_modules/@xstate/react/es/useConstant.js.map +0 -0
  320. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.mjs +12 -0
  321. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.mjs.map +1 -0
  322. package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js +5 -0
  323. package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js.map +1 -0
  324. package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs +6 -0
  325. package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs.map +1 -0
  326. package/dist/{dev → node-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +0 -0
  327. package/dist/{dev → node-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +0 -0
  328. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs +105 -0
  329. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -0
  330. package/dist/{dev → node-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +0 -0
  331. package/dist/{dev → node-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +0 -0
  332. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs +72 -0
  333. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -0
  334. package/dist/{dev → node-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +0 -0
  335. package/dist/{dev → node-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +0 -0
  336. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs +136 -0
  337. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -0
  338. package/dist/{dev → node-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +0 -0
  339. package/dist/{dev → node-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +0 -0
  340. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs +58 -0
  341. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -0
  342. package/dist/{dev → node-dev}/node_modules/use-sync-external-store/shim/index.js +0 -0
  343. package/dist/{dev → node-dev}/node_modules/use-sync-external-store/shim/index.js.map +0 -0
  344. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.mjs +21 -0
  345. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.mjs.map +1 -0
  346. package/dist/{dev → node-dev}/node_modules/use-sync-external-store/shim/with-selector.js +0 -0
  347. package/dist/{dev → node-dev}/node_modules/use-sync-external-store/shim/with-selector.js.map +0 -0
  348. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.mjs +11 -0
  349. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -0
  350. package/dist/{dev → node-dev}/storefront-api-constants.js +0 -0
  351. package/dist/{dev → node-dev}/storefront-api-constants.js.map +0 -0
  352. package/dist/node-dev/storefront-api-constants.mjs +5 -0
  353. package/dist/node-dev/storefront-api-constants.mjs.map +1 -0
  354. package/dist/{dev → node-dev}/storefront-client.js +21 -9
  355. package/dist/node-dev/storefront-client.js.map +1 -0
  356. package/dist/node-dev/storefront-client.mjs +84 -0
  357. package/dist/node-dev/storefront-client.mjs.map +1 -0
  358. package/dist/{dev → node-dev}/useCartAPIStateMachine.js +0 -0
  359. package/dist/{dev → node-dev}/useCartAPIStateMachine.js.map +1 -1
  360. package/dist/node-dev/useCartAPIStateMachine.mjs +326 -0
  361. package/dist/node-dev/useCartAPIStateMachine.mjs.map +1 -0
  362. package/dist/{dev → node-dev}/useCartActions.js +0 -0
  363. package/dist/{prod → node-dev}/useCartActions.js.map +1 -1
  364. package/dist/node-dev/useCartActions.mjs +123 -0
  365. package/dist/node-dev/useCartActions.mjs.map +1 -0
  366. package/dist/{dev → node-dev}/useMoney.js +0 -0
  367. package/dist/{prod → node-dev}/useMoney.js.map +1 -1
  368. package/dist/node-dev/useMoney.mjs +72 -0
  369. package/dist/node-dev/useMoney.mjs.map +1 -0
  370. package/dist/{prod → node-prod}/AddToCartButton.js +0 -0
  371. package/dist/node-prod/AddToCartButton.js.map +1 -0
  372. package/dist/node-prod/AddToCartButton.mjs +70 -0
  373. package/dist/node-prod/AddToCartButton.mjs.map +1 -0
  374. package/dist/{prod → node-prod}/BaseButton.js +0 -0
  375. package/dist/{prod → node-prod}/BaseButton.js.map +1 -1
  376. package/dist/node-prod/BaseButton.mjs +31 -0
  377. package/dist/node-prod/BaseButton.mjs.map +1 -0
  378. package/dist/{prod → node-prod}/BuyNowButton.js +0 -0
  379. package/dist/{prod → node-prod}/BuyNowButton.js.map +1 -1
  380. package/dist/node-prod/BuyNowButton.mjs +45 -0
  381. package/dist/node-prod/BuyNowButton.mjs.map +1 -0
  382. package/dist/{prod → node-prod}/CartCheckoutButton.js +0 -0
  383. package/dist/{prod → node-prod}/CartCheckoutButton.js.map +1 -1
  384. package/dist/node-prod/CartCheckoutButton.mjs +30 -0
  385. package/dist/node-prod/CartCheckoutButton.mjs.map +1 -0
  386. package/dist/{prod → node-prod}/CartProvider.js +0 -0
  387. package/dist/{dev → node-prod}/CartProvider.js.map +1 -1
  388. package/dist/node-prod/CartProvider.mjs +485 -0
  389. package/dist/node-prod/CartProvider.mjs.map +1 -0
  390. package/dist/{prod → node-prod}/ExternalVideo.js +0 -0
  391. package/dist/{prod → node-prod}/ExternalVideo.js.map +1 -1
  392. package/dist/node-prod/ExternalVideo.mjs +39 -0
  393. package/dist/node-prod/ExternalVideo.mjs.map +1 -0
  394. package/dist/{prod → node-prod}/Image.js +0 -0
  395. package/dist/{prod → node-prod}/Image.js.map +1 -1
  396. package/dist/node-prod/Image.mjs +99 -0
  397. package/dist/node-prod/Image.mjs.map +1 -0
  398. package/dist/{prod → node-prod}/MediaFile.js +2 -2
  399. package/dist/node-prod/MediaFile.js.map +1 -0
  400. package/dist/node-prod/MediaFile.mjs +59 -0
  401. package/dist/node-prod/MediaFile.mjs.map +1 -0
  402. package/dist/{prod → node-prod}/Metafield.js +0 -0
  403. package/dist/{prod → node-prod}/Metafield.js.map +1 -1
  404. package/dist/node-prod/Metafield.mjs +288 -0
  405. package/dist/node-prod/Metafield.mjs.map +1 -0
  406. package/dist/{prod → node-prod}/ModelViewer.js +0 -0
  407. package/dist/{prod → node-prod}/ModelViewer.js.map +1 -1
  408. package/dist/node-prod/ModelViewer.mjs +143 -0
  409. package/dist/node-prod/ModelViewer.mjs.map +1 -0
  410. package/dist/{prod → node-prod}/Money.js +0 -0
  411. package/dist/{prod → node-prod}/Money.js.map +1 -1
  412. package/dist/node-prod/Money.mjs +40 -0
  413. package/dist/node-prod/Money.mjs.map +1 -0
  414. package/dist/{prod → node-prod}/ProductPrice.js +0 -0
  415. package/dist/{prod → node-prod}/ProductPrice.js.map +1 -1
  416. package/dist/node-prod/ProductPrice.mjs +61 -0
  417. package/dist/node-prod/ProductPrice.mjs.map +1 -0
  418. package/dist/{prod → node-prod}/ProductProvider.js +0 -0
  419. package/dist/{dev → node-prod}/ProductProvider.js.map +1 -1
  420. package/dist/node-prod/ProductProvider.mjs +161 -0
  421. package/dist/node-prod/ProductProvider.mjs.map +1 -0
  422. package/dist/{prod → node-prod}/ShopPayButton.js +0 -0
  423. package/dist/{dev → node-prod}/ShopPayButton.js.map +1 -1
  424. package/dist/node-prod/ShopPayButton.mjs +64 -0
  425. package/dist/node-prod/ShopPayButton.mjs.map +1 -0
  426. package/dist/node-prod/ShopifyProvider.js +80 -0
  427. package/dist/node-prod/ShopifyProvider.js.map +1 -0
  428. package/dist/node-prod/ShopifyProvider.mjs +80 -0
  429. package/dist/node-prod/ShopifyProvider.mjs.map +1 -0
  430. package/dist/{prod → node-prod}/Video.js +0 -0
  431. package/dist/{prod → node-prod}/Video.js.map +1 -1
  432. package/dist/node-prod/Video.mjs +44 -0
  433. package/dist/node-prod/Video.mjs.map +1 -0
  434. package/dist/{prod → node-prod}/_virtual/index.js +0 -0
  435. package/dist/{prod → node-prod}/_virtual/index.js.map +0 -0
  436. package/dist/node-prod/_virtual/index.mjs +5 -0
  437. package/dist/{prod → node-prod/_virtual}/index.mjs.map +1 -1
  438. package/dist/{prod → node-prod}/_virtual/use-sync-external-store-shim.development.js +0 -0
  439. package/dist/{prod → node-prod}/_virtual/use-sync-external-store-shim.development.js.map +0 -0
  440. package/dist/node-prod/_virtual/use-sync-external-store-shim.development.mjs +5 -0
  441. package/dist/node-prod/_virtual/use-sync-external-store-shim.development.mjs.map +1 -0
  442. package/dist/{prod → node-prod}/_virtual/use-sync-external-store-shim.production.min.js +0 -0
  443. package/dist/{prod → node-prod}/_virtual/use-sync-external-store-shim.production.min.js.map +0 -0
  444. package/dist/node-prod/_virtual/use-sync-external-store-shim.production.min.mjs +5 -0
  445. package/dist/node-prod/_virtual/use-sync-external-store-shim.production.min.mjs.map +1 -0
  446. package/dist/{prod → node-prod}/_virtual/with-selector.development.js +0 -0
  447. package/dist/{prod → node-prod}/_virtual/with-selector.development.js.map +0 -0
  448. package/dist/node-prod/_virtual/with-selector.development.mjs +5 -0
  449. package/dist/node-prod/_virtual/with-selector.development.mjs.map +1 -0
  450. package/dist/{prod → node-prod}/_virtual/with-selector.js +0 -0
  451. package/dist/{prod → node-prod}/_virtual/with-selector.js.map +0 -0
  452. package/dist/node-prod/_virtual/with-selector.mjs +5 -0
  453. package/dist/node-prod/_virtual/with-selector.mjs.map +1 -0
  454. package/dist/{prod → node-prod}/_virtual/with-selector.production.min.js +0 -0
  455. package/dist/{prod → node-prod}/_virtual/with-selector.production.min.js.map +0 -0
  456. package/dist/node-prod/_virtual/with-selector.production.min.mjs +5 -0
  457. package/dist/node-prod/_virtual/with-selector.production.min.mjs.map +1 -0
  458. package/dist/{prod → node-prod}/cart-constants.js +0 -2
  459. package/dist/node-prod/cart-constants.js.map +1 -0
  460. package/dist/node-prod/cart-constants.mjs +15 -0
  461. package/dist/node-prod/cart-constants.mjs.map +1 -0
  462. package/dist/{prod → node-prod}/cart-hooks.js +8 -12
  463. package/dist/node-prod/cart-hooks.js.map +1 -0
  464. package/dist/node-prod/cart-hooks.mjs +44 -0
  465. package/dist/node-prod/cart-hooks.mjs.map +1 -0
  466. package/dist/{prod → node-prod}/cart-queries.js +0 -0
  467. package/dist/{prod → node-prod}/cart-queries.js.map +0 -0
  468. package/dist/node-prod/cart-queries.mjs +114 -0
  469. package/dist/node-prod/cart-queries.mjs.map +1 -0
  470. package/dist/node-prod/codegen.helpers.js +12 -0
  471. package/dist/node-prod/codegen.helpers.js.map +1 -0
  472. package/dist/node-prod/codegen.helpers.mjs +12 -0
  473. package/dist/node-prod/codegen.helpers.mjs.map +1 -0
  474. package/dist/{prod → node-prod}/flatten-connection.js +0 -0
  475. package/dist/{prod → node-prod}/flatten-connection.js.map +0 -0
  476. package/dist/node-prod/flatten-connection.mjs +25 -0
  477. package/dist/node-prod/flatten-connection.mjs.map +1 -0
  478. package/dist/{prod → node-prod}/image-size.js +0 -0
  479. package/dist/{prod → node-prod}/image-size.js.map +0 -0
  480. package/dist/node-prod/image-size.mjs +80 -0
  481. package/dist/node-prod/image-size.mjs.map +1 -0
  482. package/dist/{prod → node-prod}/index.js +2 -0
  483. package/dist/{prod → node-prod}/index.js.map +1 -1
  484. package/dist/node-prod/index.mjs +48 -0
  485. package/dist/node-prod/index.mjs.map +1 -0
  486. package/dist/{prod → node-prod}/load-script.js +0 -0
  487. package/dist/{prod → node-prod}/load-script.js.map +1 -1
  488. package/dist/node-prod/load-script.mjs +52 -0
  489. package/dist/node-prod/load-script.mjs.map +1 -0
  490. package/dist/{prod → node-prod}/metafield-parser.js +0 -0
  491. package/dist/node-prod/metafield-parser.js.map +1 -0
  492. package/dist/node-prod/metafield-parser.mjs +114 -0
  493. package/dist/node-prod/metafield-parser.mjs.map +1 -0
  494. package/dist/{prod → node-prod}/node_modules/@xstate/fsm/es/index.js +0 -0
  495. package/dist/{prod → node-prod}/node_modules/@xstate/fsm/es/index.js.map +0 -0
  496. package/dist/node-prod/node_modules/@xstate/fsm/es/index.mjs +159 -0
  497. package/dist/node-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -0
  498. package/dist/{prod → node-prod}/node_modules/@xstate/react/es/fsm.js +2 -2
  499. package/dist/{prod → node-prod}/node_modules/@xstate/react/es/fsm.js.map +1 -1
  500. package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs +94 -0
  501. package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -0
  502. package/dist/{prod → node-prod}/node_modules/@xstate/react/es/useConstant.js +0 -0
  503. package/dist/{prod → node-prod}/node_modules/@xstate/react/es/useConstant.js.map +0 -0
  504. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.mjs +12 -0
  505. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.mjs.map +1 -0
  506. package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js +5 -0
  507. package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js.map +1 -0
  508. package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs +6 -0
  509. package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs.map +1 -0
  510. package/dist/{prod → node-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +0 -0
  511. package/dist/{prod → node-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +0 -0
  512. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs +105 -0
  513. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -0
  514. package/dist/{prod → node-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +0 -0
  515. package/dist/{prod → node-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +0 -0
  516. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs +72 -0
  517. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -0
  518. package/dist/{prod → node-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +0 -0
  519. package/dist/{prod → node-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +0 -0
  520. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs +136 -0
  521. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -0
  522. package/dist/{prod → node-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +0 -0
  523. package/dist/{prod → node-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +0 -0
  524. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs +58 -0
  525. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -0
  526. package/dist/{prod → node-prod}/node_modules/use-sync-external-store/shim/index.js +0 -0
  527. package/dist/{prod → node-prod}/node_modules/use-sync-external-store/shim/index.js.map +0 -0
  528. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.mjs +21 -0
  529. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.mjs.map +1 -0
  530. package/dist/{prod → node-prod}/node_modules/use-sync-external-store/shim/with-selector.js +0 -0
  531. package/dist/{prod → node-prod}/node_modules/use-sync-external-store/shim/with-selector.js.map +0 -0
  532. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.mjs +11 -0
  533. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -0
  534. package/dist/{prod → node-prod}/storefront-api-constants.js +0 -0
  535. package/dist/{prod → node-prod}/storefront-api-constants.js.map +0 -0
  536. package/dist/node-prod/storefront-api-constants.mjs +5 -0
  537. package/dist/node-prod/storefront-api-constants.mjs.map +1 -0
  538. package/dist/{prod → node-prod}/storefront-client.js +21 -9
  539. package/dist/node-prod/storefront-client.js.map +1 -0
  540. package/dist/node-prod/storefront-client.mjs +69 -0
  541. package/dist/node-prod/storefront-client.mjs.map +1 -0
  542. package/dist/{prod → node-prod}/useCartAPIStateMachine.js +0 -0
  543. package/dist/{prod → node-prod}/useCartAPIStateMachine.js.map +1 -1
  544. package/dist/node-prod/useCartAPIStateMachine.mjs +326 -0
  545. package/dist/node-prod/useCartAPIStateMachine.mjs.map +1 -0
  546. package/dist/{prod → node-prod}/useCartActions.js +0 -0
  547. package/dist/{dev → node-prod}/useCartActions.js.map +1 -1
  548. package/dist/node-prod/useCartActions.mjs +123 -0
  549. package/dist/node-prod/useCartActions.mjs.map +1 -0
  550. package/dist/{prod → node-prod}/useMoney.js +0 -0
  551. package/dist/{dev → node-prod}/useMoney.js.map +1 -1
  552. package/dist/node-prod/useMoney.mjs +72 -0
  553. package/dist/node-prod/useMoney.mjs.map +1 -0
  554. package/dist/types/AddToCartButton.d.ts +1 -2
  555. package/dist/types/BaseButton.d.ts +1 -1
  556. package/dist/types/CartCheckoutButton.d.ts +1 -1
  557. package/dist/types/CartLinePrice.d.ts +17 -0
  558. package/dist/types/CartLineProvider.d.ts +16 -0
  559. package/dist/types/ExternalVideo.d.ts +3 -3
  560. package/dist/types/Image.d.ts +4 -4
  561. package/dist/types/MediaFile.d.ts +5 -5
  562. package/dist/types/Metafield.d.ts +2 -2
  563. package/dist/types/ModelViewer.d.ts +2 -2
  564. package/dist/types/Money.d.ts +1 -1
  565. package/dist/types/ProductProvider.d.ts +3 -3
  566. package/dist/types/ShopPayButton.d.ts +1 -1
  567. package/dist/types/ShopifyProvider.d.ts +48 -5
  568. package/dist/types/cart-constants.d.ts +0 -1
  569. package/dist/types/cart-types.d.ts +21 -21
  570. package/dist/types/codegen.helpers.d.ts +9 -0
  571. package/dist/types/image-size.d.ts +3 -3
  572. package/dist/types/index.d.cts +1 -0
  573. package/dist/types/index.d.ts +1 -0
  574. package/dist/types/load-script.d.ts +2 -2
  575. package/dist/types/metafield-parser.d.ts +27 -27
  576. package/dist/types/storefront-api-response.types.d.ts +6 -6
  577. package/dist/types/storefront-api-types.d.ts +1 -1
  578. package/dist/types/storefront-client.d.ts +20 -5
  579. package/dist/types/useCartActions.d.ts +1 -1
  580. package/dist/types/useMoney.d.ts +1 -1
  581. package/dist/umd/hydrogen-react.dev.js +143 -89
  582. package/dist/umd/hydrogen-react.dev.js.map +1 -1
  583. package/dist/umd/hydrogen-react.prod.js +16 -16
  584. package/dist/umd/hydrogen-react.prod.js.map +1 -1
  585. package/package.json +44 -29
  586. package/dist/dev/AddToCartButton.js.map +0 -1
  587. package/dist/dev/AddToCartButton.mjs.map +0 -1
  588. package/dist/dev/MediaFile.js.map +0 -1
  589. package/dist/dev/MediaFile.mjs.map +0 -1
  590. package/dist/dev/ShopifyProvider.js +0 -46
  591. package/dist/dev/ShopifyProvider.js.map +0 -1
  592. package/dist/dev/ShopifyProvider.mjs +0 -46
  593. package/dist/dev/ShopifyProvider.mjs.map +0 -1
  594. package/dist/dev/cart-constants.js.map +0 -1
  595. package/dist/dev/cart-constants.mjs.map +0 -1
  596. package/dist/dev/cart-hooks.js.map +0 -1
  597. package/dist/dev/cart-hooks.mjs.map +0 -1
  598. package/dist/dev/metafield-parser.js.map +0 -1
  599. package/dist/dev/metafield-parser.mjs.map +0 -1
  600. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js +0 -5
  601. package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +0 -1
  602. package/dist/dev/storefront-client.js.map +0 -1
  603. package/dist/dev/storefront-client.mjs.map +0 -1
  604. package/dist/prod/AddToCartButton.js.map +0 -1
  605. package/dist/prod/AddToCartButton.mjs.map +0 -1
  606. package/dist/prod/MediaFile.js.map +0 -1
  607. package/dist/prod/MediaFile.mjs.map +0 -1
  608. package/dist/prod/ShopifyProvider.js +0 -46
  609. package/dist/prod/ShopifyProvider.js.map +0 -1
  610. package/dist/prod/ShopifyProvider.mjs +0 -46
  611. package/dist/prod/ShopifyProvider.mjs.map +0 -1
  612. package/dist/prod/cart-constants.js.map +0 -1
  613. package/dist/prod/cart-constants.mjs.map +0 -1
  614. package/dist/prod/cart-hooks.js.map +0 -1
  615. package/dist/prod/cart-hooks.mjs.map +0 -1
  616. package/dist/prod/metafield-parser.js.map +0 -1
  617. package/dist/prod/metafield-parser.mjs.map +0 -1
  618. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js +0 -5
  619. package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +0 -1
  620. package/dist/prod/storefront-client.js.map +0 -1
  621. package/dist/prod/storefront-client.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.mjs";
3
+ import { useCartFetch } from "./cart-hooks.mjs";
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.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useCartActions.mjs","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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"}
File without changes
@@ -1 +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":";;;;AA0DO,SAASA,SAASC,OAA+B;AAChD,QAAA;AAAA,IAACC;AAAAA,MAAUC,gBAAjB,QAAA;AAEA,MAAI,CAACD,QAAQ;AACL,UAAA,IAAIE,MACP,sKADG;AAAA,EAGP;AAEKC,QAAAA,SAASC,WAAWL,MAAMI,MAAP;AAEnBE,QAAAA,UAAUC,WAAAA,QACd,OAAO;AAAA,IACLC,OAAO;AAAA,IACPC,UAAUT,MAAMU;AAAAA,EAElB,IAAA,CAACV,MAAMU,YAAP,CALqB;AAQjBC,QAAAA,mBAAmBC,iBAAiBX,QAAQK,OAAT;AAEnCO,QAAAA,gBAAgBD,iBAAiBX,QAAQ;AAAA,IAC7C,GAAGK;AAAAA,IACHQ,iBAAiB;AAAA,EAAA,CAFmB;AAKhCC,QAAAA,wBAAwBH,iBAAiBX,QAAQ;AAAA,IACrD,GAAGK;AAAAA,IACHQ,iBAAiB;AAAA,EAAA,CAF2B;AAKxCE,QAAAA,gCAAgCJ,iBAAiBX,QAAQ;AAAA,IAC7D,GAAGK;AAAAA,IACHW,uBAAuB;AAAA,IACvBC,uBAAuB;AAAA,EAAA,CAH6B;AAMhDC,QAAAA,2BAA2BP,iBAAiBX,MAAD;AAE3CmB,QAAAA,0CAA0CR,iBAAiBX,QAAQ;AAAA,IACvEgB,uBAAuB;AAAA,IACvBC,uBAAuB;AAAA,EAAA,CAFuC;AAKhE,QAAMG,iBAAiB,CAACC,SACtBA,KAAKC,SAAS;AAIVC,QAAAA,iBAAiBjB,WAAAA,QACrB,OAAO;AAAA,IACLkB,UAAU,MAAMzB;AAAAA,IAChBU,cAAc,MAAMV,MAAMU;AAAAA,IAE1BgB,iBAAiB,MAAMf,mBAAmBgB,OAAOvB,MAA1B;AAAA,IAEvBwB,OAAO,MAAMjB,mBAAmBkB,cAAczB,MAAjC;AAAA,IAEb0B,sBAAsB,MACpB1B,SAAS,MAAM,IACXY,8BAAAA,EAAgCW,OAAOvB,MAAvC,IACAO,mBAAmBgB,OAAOvB,MAA1B;AAAA,IAEN2B,iCAAiC,MAC/B3B,SAAS,MAAM,IACXgB,wCAAAA,EAA0CO,OAAOvB,MAAjD,IACAe,2BAA2BQ,OAAOvB,MAAlC;AAAA,IAEN4B,cAAc,MACZnB;;AAAAA,yCAAgBgB,cAAczB,MAA9B,EAAsC6B,KAAKZ,cAA3C,MAAAR,mBAA4DqB,UAA5DrB,YACAb,MAAMU;AAAAA;AAAAA,IAERyB,gBAAgB,MACdxB;;AAAAA,4CAAmBkB,cAAczB,MAAjC,EAAyC6B,KAAKZ,cAA9C,MAAAV,mBAA+DuB,UAA/DvB,YACAX,MAAMU;AAAAA;AAAAA,IAER0B,sBAAsB,MAAA;;AACpBrB,+CAAwBc,EAAAA,cAAczB,MAAtC,EAA8C6B,KAAKZ,cAAnD,MAAAN,mBACImB,UADJnB,YACa;AAAA;AAAA,IAEfX,QAAQ,MACNO,mBACGkB,cAAczB,MADjB,EAEGiC,OAAQf,CAAAA,SACP,CAAC,WAAW,YAAY,SAAS,WAAW,SAA5C,EAAuDgB,SACrDhB,KAAKC,IADP,CAHJ,EAOGgB,IAAKjB,CAAAA,SAASA,KAAKY,KAPtB,EAQGM,KAAK,EARR;AAAA,EA/BG,IAyCP,CACExC,OACAI,QACAS,eACAF,kBACAI,uBACAI,0BACAH,+BACAI,uCARF,CA1C4B;AAwD9B,SAAOb,mBACL,MACE,IAAIkC,MAAMjB,gBAA4C;AAAA,IACpDkB,KAAK,CAACC,QAAQC;;AAAQC,2BAAQH,IAAIC,QAAQC,GAApB,MAAAC,mBAA0BC,KAAK;AAAA;AAAA,EAA/B,CADxB,GAGF,CAACtB,cAAD,CALY;AAOf;AAED,SAASZ,iBAAiBX,QAAgBK,SAAoC;AAC5E,SAAOC,mBAAQ,MAAM;AACfwC,QAAAA;AACJ,WAAO,MAAOA,yCAAa,IAAIC,KAAKC,aAAahD,QAAQK,OAA9B;AAAA,EAAA,GAC1B,CAACL,QAAQK,OAAT,CAHW;AAIf;;"}
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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"}
@@ -0,0 +1,72 @@
1
+ import { useMemo } from "react";
2
+ import { useShop } from "./ShopifyProvider.mjs";
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.mjs.map
@@ -0,0 +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":";;AA0DO,SAASA,SAASC,OAA+B;AAChD,QAAA;AAAA,IAACC;AAAAA,MAAUC,QAAS;AAE1B,MAAI,CAACD,QAAQ;AACL,UAAA,IAAIE,MACP,sKAAqK;AAAA,EAE1K;AAEMC,QAAAA,SAASC,WAAWL,MAAMI,MAAM;AAEhCE,QAAAA,UAAUC,QACd,OAAO;AAAA,IACLC,OAAO;AAAA,IACPC,UAAUT,MAAMU;AAAAA,EAElB,IAAA,CAACV,MAAMU,YAAY,CAAC;AAGhBC,QAAAA,mBAAmBC,iBAAiBX,QAAQK,OAAO;AAEnDO,QAAAA,gBAAgBD,iBAAiBX,QAAQ;AAAA,IAC7C,GAAGK;AAAAA,IACHQ,iBAAiB;AAAA,EAAA,CAClB;AAEKC,QAAAA,wBAAwBH,iBAAiBX,QAAQ;AAAA,IACrD,GAAGK;AAAAA,IACHQ,iBAAiB;AAAA,EAAA,CAClB;AAEKE,QAAAA,gCAAgCJ,iBAAiBX,QAAQ;AAAA,IAC7D,GAAGK;AAAAA,IACHW,uBAAuB;AAAA,IACvBC,uBAAuB;AAAA,EAAA,CACxB;AAEKC,QAAAA,2BAA2BP,iBAAiBX,MAAM;AAElDmB,QAAAA,0CAA0CR,iBAAiBX,QAAQ;AAAA,IACvEgB,uBAAuB;AAAA,IACvBC,uBAAuB;AAAA,EAAA,CACxB;AAED,QAAMG,iBAAiB,CAACC,SACtBA,KAAKC,SAAS;AAIVC,QAAAA,iBAAiBjB,QACrB,OAAO;AAAA,IACLkB,UAAU,MAAMzB;AAAAA,IAChBU,cAAc,MAAMV,MAAMU;AAAAA,IAE1BgB,iBAAiB,MAAMf,mBAAmBgB,OAAOvB,MAAM;AAAA,IAEvDwB,OAAO,MAAMjB,mBAAmBkB,cAAczB,MAAM;AAAA,IAEpD0B,sBAAsB,MACpB1B,SAAS,MAAM,IACXY,8BAAAA,EAAgCW,OAAOvB,MAAM,IAC7CO,mBAAmBgB,OAAOvB,MAAM;AAAA,IAEtC2B,iCAAiC,MAC/B3B,SAAS,MAAM,IACXgB,wCAAAA,EAA0CO,OAAOvB,MAAM,IACvDe,2BAA2BQ,OAAOvB,MAAM;AAAA,IAE9C4B,cAAc,MACZnB;;AAAAA,yCAAgBgB,cAAczB,MAAM,EAAE6B,KAAKZ,cAAc,MAAzDR,mBAA4DqB,UAA5DrB,YACAb,MAAMU;AAAAA;AAAAA,IAERyB,gBAAgB,MACdxB;;AAAAA,4CAAmBkB,cAAczB,MAAM,EAAE6B,KAAKZ,cAAc,MAA5DV,mBAA+DuB,UAA/DvB,YACAX,MAAMU;AAAAA;AAAAA,IAER0B,sBAAsB,MAAA;;AACpBrB,+CAAwBc,EAAAA,cAAczB,MAAM,EAAE6B,KAAKZ,cAAc,MAAjEN,mBACImB,UADJnB,YACa;AAAA;AAAA,IAEfX,QAAQ,MACNO,mBACGkB,cAAczB,MAAM,EACpBiC,OAAQf,CAAAA,SACP,CAAC,WAAW,YAAY,SAAS,WAAW,SAAS,EAAEgB,SACrDhB,KAAKC,IAAI,CACV,EAEFgB,IAAKjB,CAAAA,SAASA,KAAKY,KAAK,EACxBM,KAAK,EAAE;AAAA,EACd,IACA,CACExC,OACAI,QACAS,eACAF,kBACAI,uBACAI,0BACAH,+BACAI,uCAAuC,CACxC;AAKH,SAAOb,QACL,MACE,IAAIkC,MAAMjB,gBAA4C;AAAA,IACpDkB,KAAK,CAACC,QAAQC;;AAAQC,2BAAQH,IAAIC,QAAQC,GAAG,MAAvBC,mBAA0BC,KAAK;AAAA;AAAA,EAAI,CAC1D,GACH,CAACtB,cAAc,CAAC;AAEpB;AAEA,SAASZ,iBAAiBX,QAAgBK,SAAoC;AAC5E,SAAOC,QAAQ,MAAM;AACfwC,QAAAA;AACJ,WAAO,MAAOA,yCAAa,IAAIC,KAAKC,aAAahD,QAAQK,OAAO;AAAA,EAAA,GAC/D,CAACL,QAAQK,OAAO,CAAC;AACtB;"}
File without changes
@@ -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\nexport interface 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,aAAa,IAAIC,oBAAkB,KAAK;AACrD,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,aAAS,QAAA;AAC9B,QAAA;AAAA,IAACC;AAAAA,MAAmBC,gBAAY,WAAA;AAChCb,QAAAA,aAAYC,qDAAqBW,mDAAiBE,OAAtCb,YAA4C;AACxDc,QAAAA,WACJd,sBAAsB,QACtBD,cAAc,MACdY,oBAAoB,QACpBf,cACAW,iBAAiBO;AAEnBC,aAAAA,UAAU,MAAM;AACVnB,QAAAA,cAAcY,WAAW,QAAQ;AACnCX,oBAAc,KAAK;AAAA,IACrB;AAAA,EAAA,GACC,CAACW,QAAQZ,UAAU,CAAC;AAEjBoB,QAAAA,gBAAgBC,WAAAA,YAAY,MAAM;AACtCpB,kBAAc,IAAI;AAClBY,aAAS,CACP;AAAA,MACER;AAAAA,MACAiB,eAAenB,aAAa;AAAA,MAC5BG;AAAAA,MACAC;AAAAA,IACD,CAAA,CACF;AAAA,EAAA,GACA,CAACM,UAAUR,UAAUF,WAAWG,YAAYC,aAAa,CAAC;AAE7D,yCACEgB,WAAAA,UAAA;AAAA,IAAA,UAAA,CACEC,2BAAA,IAACC,uBAAU;AAAA,MAAA,GACLd;AAAAA,MACJ;AAAA,MACA;AAAA,MACA,gBAAgBS;AAAAA,MAAc;AAAA,IAAA,CAGnB,GACZV,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,MACf;AAAA,MACA,MAAK;AAAA,MACL,aAAU;AAAA,MAAW,UAEpBlC,aAAaU,8BAA8B;AAAA,IAAI,CAAA,IAEhD,IAAI;AAAA,EAAA,CACP;AAEP;;"}
@@ -0,0 +1,70 @@
1
+ import { useState, useEffect, useCallback } from "react";
2
+ import { useCart } from "./CartProvider.mjs";
3
+ import { useProduct } from "./ProductProvider.mjs";
4
+ import { BaseButton } from "./BaseButton.mjs";
5
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
6
+ function AddToCartButton(props) {
7
+ var _a;
8
+ const [addingItem, setAddingItem] = useState(false);
9
+ const {
10
+ variantId: explicitVariantId,
11
+ quantity = 1,
12
+ attributes,
13
+ sellingPlanId,
14
+ onClick,
15
+ children,
16
+ accessibleAddingToCartLabel,
17
+ ...passthroughProps
18
+ } = props;
19
+ const {
20
+ status,
21
+ linesAdd
22
+ } = useCart();
23
+ const {
24
+ selectedVariant
25
+ } = useProduct();
26
+ const variantId = (_a = explicitVariantId != null ? explicitVariantId : selectedVariant == null ? void 0 : selectedVariant.id) != null ? _a : "";
27
+ const disabled = explicitVariantId === null || variantId === "" || selectedVariant === null || addingItem || passthroughProps.disabled;
28
+ useEffect(() => {
29
+ if (addingItem && status === "idle") {
30
+ setAddingItem(false);
31
+ }
32
+ }, [status, addingItem]);
33
+ const handleAddItem = useCallback(() => {
34
+ setAddingItem(true);
35
+ linesAdd([{
36
+ quantity,
37
+ merchandiseId: variantId || "",
38
+ attributes,
39
+ sellingPlanId
40
+ }]);
41
+ }, [linesAdd, quantity, variantId, attributes, sellingPlanId]);
42
+ return /* @__PURE__ */ jsxs(Fragment, {
43
+ children: [/* @__PURE__ */ jsx(BaseButton, {
44
+ ...passthroughProps,
45
+ disabled,
46
+ onClick,
47
+ defaultOnClick: handleAddItem,
48
+ children
49
+ }), accessibleAddingToCartLabel ? /* @__PURE__ */ jsx("p", {
50
+ style: {
51
+ position: "absolute",
52
+ width: "1px",
53
+ height: "1px",
54
+ padding: "0",
55
+ margin: "-1px",
56
+ overflow: "hidden",
57
+ clip: "rect(0, 0, 0, 0)",
58
+ whiteSpace: "nowrap",
59
+ borderWidth: "0"
60
+ },
61
+ role: "alert",
62
+ "aria-live": "assertive",
63
+ children: addingItem ? accessibleAddingToCartLabel : null
64
+ }) : null]
65
+ });
66
+ }
67
+ export {
68
+ AddToCartButton
69
+ };
70
+ //# sourceMappingURL=AddToCartButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddToCartButton.mjs","sources":["../../src/AddToCartButton.tsx"],"sourcesContent":["import {useCallback, useEffect, useState} from 'react';\n\nimport {useCart} from './CartProvider.js';\nimport {useProduct} from './ProductProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\nexport interface 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,aAAa,IAAIC,SAAkB,KAAK;AACrD,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,QAAS;AAC9B,QAAA;AAAA,IAACC;AAAAA,MAAmBC,WAAY;AAChCb,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,KAAK;AAAA,IACrB;AAAA,EAAA,GACC,CAACW,QAAQZ,UAAU,CAAC;AAEjBoB,QAAAA,gBAAgBC,YAAY,MAAM;AACtCpB,kBAAc,IAAI;AAClBY,aAAS,CACP;AAAA,MACER;AAAAA,MACAiB,eAAenB,aAAa;AAAA,MAC5BG;AAAAA,MACAC;AAAAA,IACD,CAAA,CACF;AAAA,EAAA,GACA,CAACM,UAAUR,UAAUF,WAAWG,YAAYC,aAAa,CAAC;AAE7D,8BACEgB,UAAA;AAAA,IAAA,UAAA,CACEC,oBAAC,YAAU;AAAA,MAAA,GACLb;AAAAA,MACJ;AAAA,MACA;AAAA,MACA,gBAAgBS;AAAAA,MAAc;AAAA,IAAA,CAGnB,GACZV,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,MACf;AAAA,MACA,MAAK;AAAA,MACL,aAAU;AAAA,MAAW,UAEpBjC,aAAaU,8BAA8B;AAAA,IAAI,CAAA,IAEhD,IAAI;AAAA,EAAA,CACP;AAEP;"}
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"BaseButton.js","sources":["../../src/BaseButton.tsx"],"sourcesContent":["import {ReactNode, Ref, useCallback} from 'react';\n\nexport interface CustomBaseButtonProps<AsType> {\n /** Provide a React element or component to render as the underlying button. Note: for accessibility compliance, almost always you should use a `button` element, or a component that renders an underlying button. */\n as?: AsType;\n /** Any ReactNode elements. */\n children: ReactNode;\n /** Click event handler. Default behaviour triggers unless prevented */\n onClick?: (\n event?: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => void | boolean;\n /** A default onClick behavior */\n defaultOnClick?: (\n event?: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => void | boolean;\n /** A ref to the underlying button */\n buttonRef?: Ref<HTMLButtonElement>;\n}\n\nexport type BaseButtonProps<AsType extends React.ElementType> =\n CustomBaseButtonProps<AsType> &\n Omit<\n React.ComponentPropsWithoutRef<AsType>,\n keyof CustomBaseButtonProps<AsType>\n >;\n\nexport function BaseButton<AsType extends React.ElementType = 'button'>(\n props: BaseButtonProps<AsType>\n) {\n const {\n as,\n onClick,\n defaultOnClick,\n children,\n buttonRef,\n ...passthroughProps\n } = props;\n\n const handleOnClick = useCallback(\n (event?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n if (onClick) {\n const clickShouldContinue = onClick(event);\n if (\n (typeof clickShouldContinue === 'boolean' &&\n clickShouldContinue === false) ||\n event?.defaultPrevented\n )\n return;\n }\n\n defaultOnClick?.(event);\n },\n [defaultOnClick, onClick]\n );\n\n const Component = as || 'button';\n\n return (\n <Component ref={buttonRef} onClick={handleOnClick} {...passthroughProps}>\n {children}\n </Component>\n );\n}\n"],"names":["BaseButton","props","as","onClick","defaultOnClick","children","buttonRef","passthroughProps","handleOnClick","useCallback","event","clickShouldContinue","defaultPrevented","Component"],"mappings":";;;;AA0BO,SAASA,WACdC,OACA;AACM,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDN,IAAAA;AAEEO,QAAAA,gBAAgBC,uBACpB,CAACC,UAA4D;AAC3D,QAAIP,SAAS;AACLQ,YAAAA,sBAAsBR,QAAQO,KAAD;AACnC,UACG,OAAOC,wBAAwB,aAC9BA,wBAAwB,UAC1BD,+BAAOE;AAEP;AAAA,IACH;AAEDR,qDAAiBM;AAAAA,EAAH,GAEhB,CAACN,gBAAgBD,OAAjB,CAd+B;AAiBjC,QAAMU,YAAYX,MAAM;AAExB,wCACG,WAAD;AAAA,IAAW,KAAKI;AAAAA,IAAW,SAASE;AAAAA,IAApC,GAAuDD;AAAAA,IAAvD;AAAA,EAAA,CADF;AAKD;;"}
1
+ {"version":3,"file":"BaseButton.js","sources":["../../src/BaseButton.tsx"],"sourcesContent":["import {ReactNode, Ref, useCallback} from 'react';\n\nexport interface CustomBaseButtonProps<AsType> {\n /** Provide a React element or component to render as the underlying button. Note: for accessibility compliance, almost always you should use a `button` element, or a component that renders an underlying button. */\n as?: AsType;\n /** Any ReactNode elements. */\n children: ReactNode;\n /** Click event handler. Default behaviour triggers unless prevented */\n onClick?: (\n event?: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => void | boolean;\n /** A default onClick behavior */\n defaultOnClick?: (\n event?: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => void | boolean;\n /** A ref to the underlying button */\n buttonRef?: Ref<HTMLButtonElement>;\n}\n\nexport type BaseButtonProps<AsType extends React.ElementType> =\n CustomBaseButtonProps<AsType> &\n Omit<\n React.ComponentPropsWithoutRef<AsType>,\n keyof CustomBaseButtonProps<AsType>\n >;\n\nexport function BaseButton<AsType extends React.ElementType = 'button'>(\n props: BaseButtonProps<AsType>\n) {\n const {\n as,\n onClick,\n defaultOnClick,\n children,\n buttonRef,\n ...passthroughProps\n } = props;\n\n const handleOnClick = useCallback(\n (event?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n if (onClick) {\n const clickShouldContinue = onClick(event);\n if (\n (typeof clickShouldContinue === 'boolean' &&\n clickShouldContinue === false) ||\n event?.defaultPrevented\n )\n return;\n }\n\n defaultOnClick?.(event);\n },\n [defaultOnClick, onClick]\n );\n\n const Component = as || 'button';\n\n return (\n <Component ref={buttonRef} onClick={handleOnClick} {...passthroughProps}>\n {children}\n </Component>\n );\n}\n"],"names":["BaseButton","props","as","onClick","defaultOnClick","children","buttonRef","passthroughProps","handleOnClick","useCallback","event","clickShouldContinue","defaultPrevented","Component"],"mappings":";;;;AA0BO,SAASA,WACdC,OACA;AACM,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDN,IAAAA;AAEEO,QAAAA,gBAAgBC,uBACpB,CAACC,UAA4D;AAC3D,QAAIP,SAAS;AACLQ,YAAAA,sBAAsBR,QAAQO,KAAK;AACzC,UACG,OAAOC,wBAAwB,aAC9BA,wBAAwB,UAC1BD,+BAAOE;AAEP;AAAA,IACJ;AAEAR,qDAAiBM;AAAAA,EAAK,GAExB,CAACN,gBAAgBD,OAAO,CAAC;AAG3B,QAAMU,YAAYX,MAAM;AAExB,wCACG,WAAS;AAAA,IAAC,KAAKI;AAAAA,IAAW,SAASE;AAAAA,IAAc,GAAKD;AAAAA,IAAgB;AAAA,EAAA,CAE3D;AAEhB;;"}
@@ -0,0 +1,31 @@
1
+ import { useCallback } from "react";
2
+ import { jsx } from "react/jsx-runtime";
3
+ function BaseButton(props) {
4
+ const {
5
+ as,
6
+ onClick,
7
+ defaultOnClick,
8
+ children,
9
+ buttonRef,
10
+ ...passthroughProps
11
+ } = props;
12
+ const handleOnClick = useCallback((event) => {
13
+ if (onClick) {
14
+ const clickShouldContinue = onClick(event);
15
+ if (typeof clickShouldContinue === "boolean" && clickShouldContinue === false || (event == null ? void 0 : event.defaultPrevented))
16
+ return;
17
+ }
18
+ defaultOnClick == null ? void 0 : defaultOnClick(event);
19
+ }, [defaultOnClick, onClick]);
20
+ const Component = as || "button";
21
+ return /* @__PURE__ */ jsx(Component, {
22
+ ref: buttonRef,
23
+ onClick: handleOnClick,
24
+ ...passthroughProps,
25
+ children
26
+ });
27
+ }
28
+ export {
29
+ BaseButton
30
+ };
31
+ //# sourceMappingURL=BaseButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseButton.mjs","sources":["../../src/BaseButton.tsx"],"sourcesContent":["import {ReactNode, Ref, useCallback} from 'react';\n\nexport interface CustomBaseButtonProps<AsType> {\n /** Provide a React element or component to render as the underlying button. Note: for accessibility compliance, almost always you should use a `button` element, or a component that renders an underlying button. */\n as?: AsType;\n /** Any ReactNode elements. */\n children: ReactNode;\n /** Click event handler. Default behaviour triggers unless prevented */\n onClick?: (\n event?: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => void | boolean;\n /** A default onClick behavior */\n defaultOnClick?: (\n event?: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => void | boolean;\n /** A ref to the underlying button */\n buttonRef?: Ref<HTMLButtonElement>;\n}\n\nexport type BaseButtonProps<AsType extends React.ElementType> =\n CustomBaseButtonProps<AsType> &\n Omit<\n React.ComponentPropsWithoutRef<AsType>,\n keyof CustomBaseButtonProps<AsType>\n >;\n\nexport function BaseButton<AsType extends React.ElementType = 'button'>(\n props: BaseButtonProps<AsType>\n) {\n const {\n as,\n onClick,\n defaultOnClick,\n children,\n buttonRef,\n ...passthroughProps\n } = props;\n\n const handleOnClick = useCallback(\n (event?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n if (onClick) {\n const clickShouldContinue = onClick(event);\n if (\n (typeof clickShouldContinue === 'boolean' &&\n clickShouldContinue === false) ||\n event?.defaultPrevented\n )\n return;\n }\n\n defaultOnClick?.(event);\n },\n [defaultOnClick, onClick]\n );\n\n const Component = as || 'button';\n\n return (\n <Component ref={buttonRef} onClick={handleOnClick} {...passthroughProps}>\n {children}\n </Component>\n );\n}\n"],"names":["BaseButton","props","as","onClick","defaultOnClick","children","buttonRef","passthroughProps","handleOnClick","useCallback","event","clickShouldContinue","defaultPrevented","Component"],"mappings":";;AA0BO,SAASA,WACdC,OACA;AACM,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDN,IAAAA;AAEEO,QAAAA,gBAAgBC,YACpB,CAACC,UAA4D;AAC3D,QAAIP,SAAS;AACLQ,YAAAA,sBAAsBR,QAAQO,KAAK;AACzC,UACG,OAAOC,wBAAwB,aAC9BA,wBAAwB,UAC1BD,+BAAOE;AAEP;AAAA,IACJ;AAEAR,qDAAiBM;AAAAA,EAAK,GAExB,CAACN,gBAAgBD,OAAO,CAAC;AAG3B,QAAMU,YAAYX,MAAM;AAExB,6BACG,WAAS;AAAA,IAAC,KAAKI;AAAAA,IAAW,SAASE;AAAAA,IAAc,GAAKD;AAAAA,IAAgB;AAAA,EAAA,CAE3D;AAEhB;"}
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"BuyNowButton.js","sources":["../../src/BuyNowButton.tsx"],"sourcesContent":["import {useEffect, useState, useCallback} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ninterface BuyNowButtonProps {\n /** The item quantity. Defaults to 1. */\n quantity?: number;\n /** The ID of the variant. */\n variantId: string;\n /** An array of cart line attributes that belong to the item being added to the cart. */\n attributes?: {\n key: string;\n value: string;\n }[];\n}\n\n/** The `BuyNowButton` component renders a button that adds an item to the cart and redirects the customer to checkout. */\nexport function BuyNowButton<AsType extends React.ElementType = 'button'>(\n props: BuyNowButtonProps & BaseButtonProps<AsType>\n) {\n const {cartCreate, checkoutUrl} = useCart();\n const [loading, setLoading] = useState<boolean>(false);\n\n const {\n quantity,\n variantId,\n onClick,\n attributes,\n children,\n ...passthroughProps\n } = props;\n\n useEffect(() => {\n if (checkoutUrl) {\n window.location.href = checkoutUrl;\n }\n }, [checkoutUrl]);\n\n const handleBuyNow = useCallback(() => {\n setLoading(true);\n cartCreate({\n lines: [\n {\n quantity: quantity ?? 1,\n merchandiseId: variantId,\n attributes,\n },\n ],\n });\n }, [cartCreate, quantity, variantId, attributes]);\n\n return (\n <BaseButton\n disabled={loading ?? passthroughProps.disabled}\n {...passthroughProps}\n onClick={onClick}\n defaultOnClick={handleBuyNow}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["BuyNowButton","props","cartCreate","checkoutUrl","useCart","loading","setLoading","useState","quantity","variantId","onClick","attributes","children","passthroughProps","useEffect","window","location","href","handleBuyNow","useCallback","lines","merchandiseId","BaseButton","disabled"],"mappings":";;;;;;AAiBO,SAASA,aACdC,OACA;AACM,QAAA;AAAA,IAACC;AAAAA,IAAYC;AAAAA,MAAeC,aAAlC,QAAA;AACA,QAAM,CAACC,SAASC,UAAV,IAAwBC,oBAAkB,KAAV;AAEhC,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDZ,IAAAA;AAEJa,aAAAA,UAAU,MAAM;AACd,QAAIX,aAAa;AACfY,aAAOC,SAASC,OAAOd;AAAAA,IACxB;AAAA,EAAA,GACA,CAACA,WAAD,CAJM;AAMHe,QAAAA,eAAeC,WAAAA,YAAY,MAAM;AACrCb,eAAW,IAAD;AACC,eAAA;AAAA,MACTc,OAAO,CACL;AAAA,QACEZ,UAAUA,8BAAY;AAAA,QACtBa,eAAeZ;AAAAA,QACfE;AAAAA,MAAAA,CAJG;AAAA,IAAA,CADC;AAAA,KAST,CAACT,YAAYM,UAAUC,WAAWE,UAAlC,CAX6B;AAahC,wCACGW,WAAAA,YAAD;AAAA,IACE,UAAUjB,4BAAWQ,iBAAiBU;AAAAA,IADxC,GAEMV;AAAAA,IACJ;AAAA,IACA,gBAAgBK;AAAAA,IAJlB;AAAA,EAAA,CADF;AAUD;;"}
1
+ {"version":3,"file":"BuyNowButton.js","sources":["../../src/BuyNowButton.tsx"],"sourcesContent":["import {useEffect, useState, useCallback} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ninterface BuyNowButtonProps {\n /** The item quantity. Defaults to 1. */\n quantity?: number;\n /** The ID of the variant. */\n variantId: string;\n /** An array of cart line attributes that belong to the item being added to the cart. */\n attributes?: {\n key: string;\n value: string;\n }[];\n}\n\n/** The `BuyNowButton` component renders a button that adds an item to the cart and redirects the customer to checkout. */\nexport function BuyNowButton<AsType extends React.ElementType = 'button'>(\n props: BuyNowButtonProps & BaseButtonProps<AsType>\n) {\n const {cartCreate, checkoutUrl} = useCart();\n const [loading, setLoading] = useState<boolean>(false);\n\n const {\n quantity,\n variantId,\n onClick,\n attributes,\n children,\n ...passthroughProps\n } = props;\n\n useEffect(() => {\n if (checkoutUrl) {\n window.location.href = checkoutUrl;\n }\n }, [checkoutUrl]);\n\n const handleBuyNow = useCallback(() => {\n setLoading(true);\n cartCreate({\n lines: [\n {\n quantity: quantity ?? 1,\n merchandiseId: variantId,\n attributes,\n },\n ],\n });\n }, [cartCreate, quantity, variantId, attributes]);\n\n return (\n <BaseButton\n disabled={loading ?? passthroughProps.disabled}\n {...passthroughProps}\n onClick={onClick}\n defaultOnClick={handleBuyNow}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["BuyNowButton","props","cartCreate","checkoutUrl","useCart","loading","setLoading","useState","quantity","variantId","onClick","attributes","children","passthroughProps","useEffect","window","location","href","handleBuyNow","useCallback","lines","merchandiseId","BaseButton","disabled"],"mappings":";;;;;;AAiBO,SAASA,aACdC,OACA;AACM,QAAA;AAAA,IAACC;AAAAA,IAAYC;AAAAA,MAAeC,aAAS,QAAA;AAC3C,QAAM,CAACC,SAASC,UAAU,IAAIC,oBAAkB,KAAK;AAE/C,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDZ,IAAAA;AAEJa,aAAAA,UAAU,MAAM;AACd,QAAIX,aAAa;AACfY,aAAOC,SAASC,OAAOd;AAAAA,IACzB;AAAA,EAAA,GACC,CAACA,WAAW,CAAC;AAEVe,QAAAA,eAAeC,WAAAA,YAAY,MAAM;AACrCb,eAAW,IAAI;AACJ,eAAA;AAAA,MACTc,OAAO,CACL;AAAA,QACEZ,UAAUA,8BAAY;AAAA,QACtBa,eAAeZ;AAAAA,QACfE;AAAAA,MAAAA,CACD;AAAA,IAAA,CAEJ;AAAA,KACA,CAACT,YAAYM,UAAUC,WAAWE,UAAU,CAAC;AAEhD,wCACGW,WAAAA,YAAU;AAAA,IACT,UAAUjB,4BAAWQ,iBAAiBU;AAAAA,IAAS,GAC3CV;AAAAA,IACJ;AAAA,IACA,gBAAgBK;AAAAA,IAAa;AAAA,EAAA,CAGlB;AAEjB;;"}
@@ -0,0 +1,45 @@
1
+ import { useState, useEffect, useCallback } from "react";
2
+ import { useCart } from "./CartProvider.mjs";
3
+ import { BaseButton } from "./BaseButton.mjs";
4
+ import { jsx } from "react/jsx-runtime";
5
+ function BuyNowButton(props) {
6
+ const {
7
+ cartCreate,
8
+ checkoutUrl
9
+ } = useCart();
10
+ const [loading, setLoading] = useState(false);
11
+ const {
12
+ quantity,
13
+ variantId,
14
+ onClick,
15
+ attributes,
16
+ children,
17
+ ...passthroughProps
18
+ } = props;
19
+ useEffect(() => {
20
+ if (checkoutUrl) {
21
+ window.location.href = checkoutUrl;
22
+ }
23
+ }, [checkoutUrl]);
24
+ const handleBuyNow = useCallback(() => {
25
+ setLoading(true);
26
+ cartCreate({
27
+ lines: [{
28
+ quantity: quantity != null ? quantity : 1,
29
+ merchandiseId: variantId,
30
+ attributes
31
+ }]
32
+ });
33
+ }, [cartCreate, quantity, variantId, attributes]);
34
+ return /* @__PURE__ */ jsx(BaseButton, {
35
+ disabled: loading != null ? loading : passthroughProps.disabled,
36
+ ...passthroughProps,
37
+ onClick,
38
+ defaultOnClick: handleBuyNow,
39
+ children
40
+ });
41
+ }
42
+ export {
43
+ BuyNowButton
44
+ };
45
+ //# sourceMappingURL=BuyNowButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuyNowButton.mjs","sources":["../../src/BuyNowButton.tsx"],"sourcesContent":["import {useEffect, useState, useCallback} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ninterface BuyNowButtonProps {\n /** The item quantity. Defaults to 1. */\n quantity?: number;\n /** The ID of the variant. */\n variantId: string;\n /** An array of cart line attributes that belong to the item being added to the cart. */\n attributes?: {\n key: string;\n value: string;\n }[];\n}\n\n/** The `BuyNowButton` component renders a button that adds an item to the cart and redirects the customer to checkout. */\nexport function BuyNowButton<AsType extends React.ElementType = 'button'>(\n props: BuyNowButtonProps & BaseButtonProps<AsType>\n) {\n const {cartCreate, checkoutUrl} = useCart();\n const [loading, setLoading] = useState<boolean>(false);\n\n const {\n quantity,\n variantId,\n onClick,\n attributes,\n children,\n ...passthroughProps\n } = props;\n\n useEffect(() => {\n if (checkoutUrl) {\n window.location.href = checkoutUrl;\n }\n }, [checkoutUrl]);\n\n const handleBuyNow = useCallback(() => {\n setLoading(true);\n cartCreate({\n lines: [\n {\n quantity: quantity ?? 1,\n merchandiseId: variantId,\n attributes,\n },\n ],\n });\n }, [cartCreate, quantity, variantId, attributes]);\n\n return (\n <BaseButton\n disabled={loading ?? passthroughProps.disabled}\n {...passthroughProps}\n onClick={onClick}\n defaultOnClick={handleBuyNow}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["BuyNowButton","props","cartCreate","checkoutUrl","useCart","loading","setLoading","useState","quantity","variantId","onClick","attributes","children","passthroughProps","useEffect","window","location","href","handleBuyNow","useCallback","lines","merchandiseId","disabled"],"mappings":";;;;AAiBO,SAASA,aACdC,OACA;AACM,QAAA;AAAA,IAACC;AAAAA,IAAYC;AAAAA,MAAeC,QAAS;AAC3C,QAAM,CAACC,SAASC,UAAU,IAAIC,SAAkB,KAAK;AAE/C,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,IACzB;AAAA,EAAA,GACC,CAACA,WAAW,CAAC;AAEVe,QAAAA,eAAeC,YAAY,MAAM;AACrCb,eAAW,IAAI;AACJ,eAAA;AAAA,MACTc,OAAO,CACL;AAAA,QACEZ,UAAUA,8BAAY;AAAA,QACtBa,eAAeZ;AAAAA,QACfE;AAAAA,MAAAA,CACD;AAAA,IAAA,CAEJ;AAAA,KACA,CAACT,YAAYM,UAAUC,WAAWE,UAAU,CAAC;AAEhD,6BACG,YAAU;AAAA,IACT,UAAUN,4BAAWQ,iBAAiBS;AAAAA,IAAS,GAC3CT;AAAAA,IACJ;AAAA,IACA,gBAAgBK;AAAAA,IAAa;AAAA,EAAA,CAGlB;AAEjB;"}
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"CartCheckoutButton.js","sources":["../../src/CartCheckoutButton.tsx"],"sourcesContent":["import {ReactNode, useEffect, useState} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ntype PropsWeControl = 'onClick';\n\n/**\n * The `CartCheckoutButton` component renders a button that redirects to the checkout URL for the cart.\n * It must be a descendent of a `CartProvider` component.\n */\nexport function CartCheckoutButton(\n props: Omit<BaseButtonProps<'button'>, PropsWeControl> & {\n /** A `ReactNode` element. */\n children: ReactNode;\n }\n) {\n const [requestedCheckout, setRequestedCheckout] = useState(false);\n const {status, checkoutUrl} = useCart();\n const {children, ...passthroughProps} = props;\n\n useEffect(() => {\n if (requestedCheckout && checkoutUrl && status === 'idle') {\n window.location.href = checkoutUrl;\n }\n }, [requestedCheckout, status, checkoutUrl]);\n\n return (\n <BaseButton\n {...passthroughProps}\n disabled={requestedCheckout || passthroughProps.disabled}\n onClick={() => setRequestedCheckout(true)}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["CartCheckoutButton","props","requestedCheckout","setRequestedCheckout","useState","status","checkoutUrl","useCart","children","passthroughProps","useEffect","window","location","href","BaseButton","disabled"],"mappings":";;;;;;AAUO,SAASA,mBACdC,OAIA;AACA,QAAM,CAACC,mBAAmBC,oBAApB,IAA4CC,oBAAS,KAAD;AACpD,QAAA;AAAA,IAACC;AAAAA,IAAQC;AAAAA,MAAeC,aAA9B,QAAA;AACM,QAAA;AAAA,IAACC;AAAAA,OAAaC;AAAAA,EAAoBR,IAAAA;AAExCS,aAAAA,UAAU,MAAM;AACVR,QAAAA,qBAAqBI,eAAeD,WAAW,QAAQ;AACzDM,aAAOC,SAASC,OAAOP;AAAAA,IACxB;AAAA,EACA,GAAA,CAACJ,mBAAmBG,QAAQC,WAA5B,CAJM;AAMT,wCACGQ,WAAAA,YAAD;AAAA,IAAA,GACML;AAAAA,IACJ,UAAUP,qBAAqBO,iBAAiBM;AAAAA,IAChD,SAAS,MAAMZ,qBAAqB,IAAD;AAAA,IAHrC;AAAA,EAAA,CADF;AASD;;"}
1
+ {"version":3,"file":"CartCheckoutButton.js","sources":["../../src/CartCheckoutButton.tsx"],"sourcesContent":["import {ReactNode, useEffect, useState} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ntype PropsWeControl = 'onClick';\n\n/**\n * The `CartCheckoutButton` component renders a button that redirects to the checkout URL for the cart.\n * It must be a descendent of a `CartProvider` component.\n */\nexport function CartCheckoutButton(\n props: Omit<BaseButtonProps<'button'>, PropsWeControl> & {\n /** A `ReactNode` element. */\n children: ReactNode;\n }\n) {\n const [requestedCheckout, setRequestedCheckout] = useState(false);\n const {status, checkoutUrl} = useCart();\n const {children, ...passthroughProps} = props;\n\n useEffect(() => {\n if (requestedCheckout && checkoutUrl && status === 'idle') {\n window.location.href = checkoutUrl;\n }\n }, [requestedCheckout, status, checkoutUrl]);\n\n return (\n <BaseButton\n {...passthroughProps}\n disabled={requestedCheckout || passthroughProps.disabled}\n onClick={() => setRequestedCheckout(true)}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["CartCheckoutButton","props","requestedCheckout","setRequestedCheckout","useState","status","checkoutUrl","useCart","children","passthroughProps","useEffect","window","location","href","BaseButton","disabled"],"mappings":";;;;;;AAUO,SAASA,mBACdC,OAIA;AACA,QAAM,CAACC,mBAAmBC,oBAAoB,IAAIC,oBAAS,KAAK;AAC1D,QAAA;AAAA,IAACC;AAAAA,IAAQC;AAAAA,MAAeC,aAAS,QAAA;AACjC,QAAA;AAAA,IAACC;AAAAA,OAAaC;AAAAA,EAAoBR,IAAAA;AAExCS,aAAAA,UAAU,MAAM;AACVR,QAAAA,qBAAqBI,eAAeD,WAAW,QAAQ;AACzDM,aAAOC,SAASC,OAAOP;AAAAA,IACzB;AAAA,EACC,GAAA,CAACJ,mBAAmBG,QAAQC,WAAW,CAAC;AAE3C,wCACGQ,WAAAA,YAAU;AAAA,IAAA,GACLL;AAAAA,IACJ,UAAUP,qBAAqBO,iBAAiBM;AAAAA,IAChD,SAAS,MAAMZ,qBAAqB,IAAI;AAAA,IAAE;AAAA,EAAA,CAG/B;AAEjB;;"}
@@ -0,0 +1,30 @@
1
+ import { useState, useEffect } from "react";
2
+ import { useCart } from "./CartProvider.mjs";
3
+ import { BaseButton } from "./BaseButton.mjs";
4
+ import { jsx } from "react/jsx-runtime";
5
+ function CartCheckoutButton(props) {
6
+ const [requestedCheckout, setRequestedCheckout] = useState(false);
7
+ const {
8
+ status,
9
+ checkoutUrl
10
+ } = useCart();
11
+ const {
12
+ children,
13
+ ...passthroughProps
14
+ } = props;
15
+ useEffect(() => {
16
+ if (requestedCheckout && checkoutUrl && status === "idle") {
17
+ window.location.href = checkoutUrl;
18
+ }
19
+ }, [requestedCheckout, status, checkoutUrl]);
20
+ return /* @__PURE__ */ jsx(BaseButton, {
21
+ ...passthroughProps,
22
+ disabled: requestedCheckout || passthroughProps.disabled,
23
+ onClick: () => setRequestedCheckout(true),
24
+ children
25
+ });
26
+ }
27
+ export {
28
+ CartCheckoutButton
29
+ };
30
+ //# sourceMappingURL=CartCheckoutButton.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CartCheckoutButton.mjs","sources":["../../src/CartCheckoutButton.tsx"],"sourcesContent":["import {ReactNode, useEffect, useState} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ntype PropsWeControl = 'onClick';\n\n/**\n * The `CartCheckoutButton` component renders a button that redirects to the checkout URL for the cart.\n * It must be a descendent of a `CartProvider` component.\n */\nexport function CartCheckoutButton(\n props: Omit<BaseButtonProps<'button'>, PropsWeControl> & {\n /** A `ReactNode` element. */\n children: ReactNode;\n }\n) {\n const [requestedCheckout, setRequestedCheckout] = useState(false);\n const {status, checkoutUrl} = useCart();\n const {children, ...passthroughProps} = props;\n\n useEffect(() => {\n if (requestedCheckout && checkoutUrl && status === 'idle') {\n window.location.href = checkoutUrl;\n }\n }, [requestedCheckout, status, checkoutUrl]);\n\n return (\n <BaseButton\n {...passthroughProps}\n disabled={requestedCheckout || passthroughProps.disabled}\n onClick={() => setRequestedCheckout(true)}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["CartCheckoutButton","props","requestedCheckout","setRequestedCheckout","useState","status","checkoutUrl","useCart","children","passthroughProps","useEffect","window","location","href","disabled"],"mappings":";;;;AAUO,SAASA,mBACdC,OAIA;AACA,QAAM,CAACC,mBAAmBC,oBAAoB,IAAIC,SAAS,KAAK;AAC1D,QAAA;AAAA,IAACC;AAAAA,IAAQC;AAAAA,MAAeC,QAAS;AACjC,QAAA;AAAA,IAACC;AAAAA,OAAaC;AAAAA,EAAoBR,IAAAA;AAExCS,YAAU,MAAM;AACVR,QAAAA,qBAAqBI,eAAeD,WAAW,QAAQ;AACzDM,aAAOC,SAASC,OAAOP;AAAAA,IACzB;AAAA,EACC,GAAA,CAACJ,mBAAmBG,QAAQC,WAAW,CAAC;AAE3C,6BACG,YAAU;AAAA,IAAA,GACLG;AAAAA,IACJ,UAAUP,qBAAqBO,iBAAiBK;AAAAA,IAChD,SAAS,MAAMX,qBAAqB,IAAI;AAAA,IAAE;AAAA,EAAA,CAG/B;AAEjB;"}
File without changes