@shopify/hydrogen-react 0.0.0-next-32f1381 → 0.0.0-next-992334e

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 (625) hide show
  1. package/dist/browser-dev/{AddToCartButton.js → AddToCartButton.mjs} +4 -4
  2. package/dist/{node-dev/AddToCartButton.cjs.map → browser-dev/AddToCartButton.mjs.map} +1 -1
  3. package/dist/browser-dev/{BaseButton.js → BaseButton.mjs} +1 -1
  4. package/dist/{node-dev/BaseButton.cjs.map → browser-dev/BaseButton.mjs.map} +1 -1
  5. package/dist/{browser-prod/BuyNowButton.js → browser-dev/BuyNowButton.mjs} +3 -3
  6. package/dist/{node-dev/BuyNowButton.cjs.map → browser-dev/BuyNowButton.mjs.map} +1 -1
  7. package/dist/browser-dev/{CartCheckoutButton.js → CartCheckoutButton.mjs} +3 -3
  8. package/dist/{node-dev/CartCheckoutButton.cjs.map → browser-dev/CartCheckoutButton.mjs.map} +1 -1
  9. package/dist/browser-dev/{CartProvider.js → CartProvider.mjs} +3 -3
  10. package/dist/{node-prod/CartProvider.cjs.map → browser-dev/CartProvider.mjs.map} +1 -1
  11. package/dist/browser-dev/{ExternalVideo.js → ExternalVideo.mjs} +1 -1
  12. package/dist/{node-dev/ExternalVideo.cjs.map → browser-dev/ExternalVideo.mjs.map} +1 -1
  13. package/dist/browser-dev/{Image.js → Image.mjs} +2 -2
  14. package/dist/{node-dev/Image.cjs.map → browser-dev/Image.mjs.map} +1 -1
  15. package/dist/browser-dev/{MediaFile.js → MediaFile.mjs} +5 -5
  16. package/dist/{node-dev/MediaFile.cjs.map → browser-dev/MediaFile.mjs.map} +1 -1
  17. package/dist/browser-dev/{Metafield.js → Metafield.mjs} +5 -5
  18. package/dist/{node-dev/Metafield.cjs.map → browser-dev/Metafield.mjs.map} +1 -1
  19. package/dist/browser-dev/{ModelViewer.js → ModelViewer.mjs} +2 -2
  20. package/dist/{node-dev/ModelViewer.cjs.map → browser-dev/ModelViewer.mjs.map} +1 -1
  21. package/dist/browser-dev/{Money.js → Money.mjs} +2 -2
  22. package/dist/{node-dev/Money.cjs.map → browser-dev/Money.mjs.map} +1 -1
  23. package/dist/{browser-prod/ProductPrice.js → browser-dev/ProductPrice.mjs} +3 -3
  24. package/dist/{node-prod/ProductPrice.cjs.map → browser-dev/ProductPrice.mjs.map} +1 -1
  25. package/dist/browser-dev/{ProductProvider.js → ProductProvider.mjs} +2 -2
  26. package/dist/{node-dev/ProductProvider.cjs.map → browser-dev/ProductProvider.mjs.map} +1 -1
  27. package/dist/browser-dev/{ShopPayButton.js → ShopPayButton.mjs} +3 -3
  28. package/dist/{node-prod/ShopPayButton.cjs.map → browser-dev/ShopPayButton.mjs.map} +1 -1
  29. package/dist/browser-dev/{ShopifyProvider.js → ShopifyProvider.mjs} +2 -2
  30. package/dist/{node-dev/ShopifyProvider.cjs.map → browser-dev/ShopifyProvider.mjs.map} +1 -1
  31. package/dist/browser-dev/{Video.js → Video.mjs} +2 -2
  32. package/dist/{node-dev/Video.cjs.map → browser-dev/Video.mjs.map} +1 -1
  33. package/dist/browser-dev/_virtual/{index.js → index.mjs} +1 -1
  34. package/dist/browser-dev/_virtual/index.mjs.map +1 -0
  35. package/dist/browser-dev/_virtual/{use-sync-external-store-shim.development.js → use-sync-external-store-shim.development.mjs} +1 -1
  36. package/dist/browser-dev/_virtual/use-sync-external-store-shim.development.mjs.map +1 -0
  37. package/dist/{browser-prod/_virtual/use-sync-external-store-shim.production.min.js → browser-dev/_virtual/use-sync-external-store-shim.production.min.mjs} +1 -1
  38. package/dist/browser-dev/_virtual/use-sync-external-store-shim.production.min.mjs.map +1 -0
  39. package/dist/{browser-prod/_virtual/with-selector.development.js → browser-dev/_virtual/with-selector.development.mjs} +1 -1
  40. package/dist/browser-dev/_virtual/with-selector.development.mjs.map +1 -0
  41. package/dist/{browser-prod/_virtual/with-selector.js → browser-dev/_virtual/with-selector.mjs} +1 -1
  42. package/dist/browser-dev/_virtual/with-selector.mjs.map +1 -0
  43. package/dist/{browser-prod/_virtual/with-selector.production.min.js → browser-dev/_virtual/with-selector.production.min.mjs} +1 -1
  44. package/dist/browser-dev/_virtual/with-selector.production.min.mjs.map +1 -0
  45. package/dist/browser-dev/{cart-constants.js → cart-constants.mjs} +1 -1
  46. package/dist/{node-dev/cart-constants.cjs.map → browser-dev/cart-constants.mjs.map} +1 -1
  47. package/dist/{browser-prod/cart-hooks.js → browser-dev/cart-hooks.mjs} +3 -3
  48. package/dist/{node-prod/cart-hooks.cjs.map → browser-dev/cart-hooks.mjs.map} +1 -1
  49. package/dist/browser-dev/{cart-queries.js → cart-queries.mjs} +1 -1
  50. package/dist/{node-dev/cart-queries.cjs.map → browser-dev/cart-queries.mjs.map} +1 -1
  51. package/dist/browser-dev/{flatten-connection.js → flatten-connection.mjs} +1 -1
  52. package/dist/{node-dev/flatten-connection.cjs.map → browser-dev/flatten-connection.mjs.map} +1 -1
  53. package/dist/{browser-prod/image-size.js → browser-dev/image-size.mjs} +1 -1
  54. package/dist/{node-prod/image-size.cjs.map → browser-dev/image-size.mjs.map} +1 -1
  55. package/dist/browser-dev/index.mjs +46 -0
  56. package/dist/browser-dev/index.mjs.map +1 -0
  57. package/dist/browser-dev/{load-script.js → load-script.mjs} +1 -1
  58. package/dist/{node-prod/load-script.cjs.map → browser-dev/load-script.mjs.map} +1 -1
  59. package/dist/browser-dev/{metafield-parser.js → metafield-parser.mjs} +3 -3
  60. package/dist/{node-dev/metafield-parser.cjs.map → browser-dev/metafield-parser.mjs.map} +1 -1
  61. package/dist/{browser-prod/node_modules/@xstate/fsm/es/index.js → browser-dev/node_modules/@xstate/fsm/es/index.mjs} +1 -1
  62. package/dist/browser-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -0
  63. package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs +94 -0
  64. package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -0
  65. package/dist/browser-dev/node_modules/@xstate/react/es/{useConstant.js → useConstant.mjs} +1 -1
  66. package/dist/browser-dev/node_modules/@xstate/react/es/useConstant.mjs.map +1 -0
  67. package/dist/browser-dev/node_modules/use-isomorphic-layout-effect/dist/{use-isomorphic-layout-effect.browser.esm.js → use-isomorphic-layout-effect.browser.esm.mjs} +1 -1
  68. package/dist/browser-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs.map +1 -0
  69. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/{with-selector.development.js → with-selector.development.mjs} +3 -3
  70. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -0
  71. package/dist/{browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js → browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs} +3 -3
  72. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -0
  73. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/{use-sync-external-store-shim.development.js → use-sync-external-store-shim.development.mjs} +2 -2
  74. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -0
  75. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/{use-sync-external-store-shim.production.min.js → use-sync-external-store-shim.production.min.mjs} +2 -2
  76. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -0
  77. package/dist/{browser-prod/node_modules/use-sync-external-store/shim/index.js → browser-dev/node_modules/use-sync-external-store/shim/index.mjs} +4 -4
  78. package/dist/browser-dev/node_modules/use-sync-external-store/shim/index.mjs.map +1 -0
  79. package/dist/{browser-prod/node_modules/use-sync-external-store/shim/with-selector.js → browser-dev/node_modules/use-sync-external-store/shim/with-selector.mjs} +4 -4
  80. package/dist/browser-dev/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -0
  81. package/dist/{browser-prod/storefront-api-constants.js → browser-dev/storefront-api-constants.mjs} +1 -1
  82. package/dist/browser-dev/storefront-api-constants.mjs.map +1 -0
  83. package/dist/browser-dev/{storefront-client.js → storefront-client.mjs} +2 -2
  84. package/dist/{node-dev/storefront-client.cjs.map → browser-dev/storefront-client.mjs.map} +1 -1
  85. package/dist/{browser-prod/useCartAPIStateMachine.js → browser-dev/useCartAPIStateMachine.mjs} +5 -5
  86. package/dist/{node-prod/useCartAPIStateMachine.cjs.map → browser-dev/useCartAPIStateMachine.mjs.map} +1 -1
  87. package/dist/{browser-prod/useCartActions.js → browser-dev/useCartActions.mjs} +3 -3
  88. package/dist/{node-dev/useCartActions.cjs.map → browser-dev/useCartActions.mjs.map} +1 -1
  89. package/dist/{browser-prod/useMoney.js → browser-dev/useMoney.mjs} +2 -2
  90. package/dist/{node-prod/useMoney.cjs.map → browser-dev/useMoney.mjs.map} +1 -1
  91. package/dist/browser-prod/{AddToCartButton.js → AddToCartButton.mjs} +4 -4
  92. package/dist/{node-prod/AddToCartButton.cjs.map → browser-prod/AddToCartButton.mjs.map} +1 -1
  93. package/dist/browser-prod/{BaseButton.js → BaseButton.mjs} +1 -1
  94. package/dist/{node-prod/BaseButton.cjs.map → browser-prod/BaseButton.mjs.map} +1 -1
  95. package/dist/{browser-dev/BuyNowButton.js → browser-prod/BuyNowButton.mjs} +3 -3
  96. package/dist/{node-prod/BuyNowButton.cjs.map → browser-prod/BuyNowButton.mjs.map} +1 -1
  97. package/dist/browser-prod/{CartCheckoutButton.js → CartCheckoutButton.mjs} +3 -3
  98. package/dist/{node-prod/CartCheckoutButton.cjs.map → browser-prod/CartCheckoutButton.mjs.map} +1 -1
  99. package/dist/browser-prod/{CartProvider.js → CartProvider.mjs} +3 -3
  100. package/dist/{node-dev/CartProvider.cjs.map → browser-prod/CartProvider.mjs.map} +1 -1
  101. package/dist/browser-prod/{ExternalVideo.js → ExternalVideo.mjs} +1 -1
  102. package/dist/{node-prod/ExternalVideo.cjs.map → browser-prod/ExternalVideo.mjs.map} +1 -1
  103. package/dist/browser-prod/{Image.js → Image.mjs} +2 -2
  104. package/dist/{node-prod/Image.cjs.map → browser-prod/Image.mjs.map} +1 -1
  105. package/dist/browser-prod/{MediaFile.js → MediaFile.mjs} +5 -5
  106. package/dist/{node-prod/MediaFile.cjs.map → browser-prod/MediaFile.mjs.map} +1 -1
  107. package/dist/browser-prod/{Metafield.js → Metafield.mjs} +5 -5
  108. package/dist/{node-prod/Metafield.cjs.map → browser-prod/Metafield.mjs.map} +1 -1
  109. package/dist/browser-prod/{ModelViewer.js → ModelViewer.mjs} +2 -2
  110. package/dist/{node-prod/ModelViewer.cjs.map → browser-prod/ModelViewer.mjs.map} +1 -1
  111. package/dist/browser-prod/{Money.js → Money.mjs} +2 -2
  112. package/dist/{node-prod/Money.cjs.map → browser-prod/Money.mjs.map} +1 -1
  113. package/dist/{browser-dev/ProductPrice.js → browser-prod/ProductPrice.mjs} +3 -3
  114. package/dist/{node-dev/ProductPrice.cjs.map → browser-prod/ProductPrice.mjs.map} +1 -1
  115. package/dist/browser-prod/{ProductProvider.js → ProductProvider.mjs} +2 -2
  116. package/dist/{node-prod/ProductProvider.cjs.map → browser-prod/ProductProvider.mjs.map} +1 -1
  117. package/dist/browser-prod/{ShopPayButton.js → ShopPayButton.mjs} +3 -3
  118. package/dist/{node-dev/ShopPayButton.cjs.map → browser-prod/ShopPayButton.mjs.map} +1 -1
  119. package/dist/browser-prod/{ShopifyProvider.js → ShopifyProvider.mjs} +2 -2
  120. package/dist/{node-prod/ShopifyProvider.cjs.map → browser-prod/ShopifyProvider.mjs.map} +1 -1
  121. package/dist/browser-prod/{Video.js → Video.mjs} +2 -2
  122. package/dist/{node-prod/Video.cjs.map → browser-prod/Video.mjs.map} +1 -1
  123. package/dist/browser-prod/_virtual/{index.js → index.mjs} +1 -1
  124. package/dist/browser-prod/_virtual/index.mjs.map +1 -0
  125. package/dist/browser-prod/_virtual/{use-sync-external-store-shim.development.js → use-sync-external-store-shim.development.mjs} +1 -1
  126. package/dist/browser-prod/_virtual/use-sync-external-store-shim.development.mjs.map +1 -0
  127. package/dist/{browser-dev/_virtual/use-sync-external-store-shim.production.min.js → browser-prod/_virtual/use-sync-external-store-shim.production.min.mjs} +1 -1
  128. package/dist/browser-prod/_virtual/use-sync-external-store-shim.production.min.mjs.map +1 -0
  129. package/dist/{browser-dev/_virtual/with-selector.development.js → browser-prod/_virtual/with-selector.development.mjs} +1 -1
  130. package/dist/browser-prod/_virtual/with-selector.development.mjs.map +1 -0
  131. package/dist/{browser-dev/_virtual/with-selector.js → browser-prod/_virtual/with-selector.mjs} +1 -1
  132. package/dist/browser-prod/_virtual/with-selector.mjs.map +1 -0
  133. package/dist/{browser-dev/_virtual/with-selector.production.min.js → browser-prod/_virtual/with-selector.production.min.mjs} +1 -1
  134. package/dist/browser-prod/_virtual/with-selector.production.min.mjs.map +1 -0
  135. package/dist/browser-prod/{cart-constants.js → cart-constants.mjs} +1 -1
  136. package/dist/{node-prod/cart-constants.cjs.map → browser-prod/cart-constants.mjs.map} +1 -1
  137. package/dist/{browser-dev/cart-hooks.js → browser-prod/cart-hooks.mjs} +3 -3
  138. package/dist/{node-dev/cart-hooks.cjs.map → browser-prod/cart-hooks.mjs.map} +1 -1
  139. package/dist/browser-prod/{cart-queries.js → cart-queries.mjs} +1 -1
  140. package/dist/{node-prod/cart-queries.cjs.map → browser-prod/cart-queries.mjs.map} +1 -1
  141. package/dist/browser-prod/{flatten-connection.js → flatten-connection.mjs} +1 -1
  142. package/dist/{node-prod/flatten-connection.cjs.map → browser-prod/flatten-connection.mjs.map} +1 -1
  143. package/dist/{browser-dev/image-size.js → browser-prod/image-size.mjs} +1 -1
  144. package/dist/{node-dev/image-size.cjs.map → browser-prod/image-size.mjs.map} +1 -1
  145. package/dist/browser-prod/index.mjs +46 -0
  146. package/dist/browser-prod/index.mjs.map +1 -0
  147. package/dist/browser-prod/{load-script.js → load-script.mjs} +1 -1
  148. package/dist/{node-dev/load-script.cjs.map → browser-prod/load-script.mjs.map} +1 -1
  149. package/dist/browser-prod/{metafield-parser.js → metafield-parser.mjs} +3 -3
  150. package/dist/{node-prod/metafield-parser.cjs.map → browser-prod/metafield-parser.mjs.map} +1 -1
  151. package/dist/{browser-dev/node_modules/@xstate/fsm/es/index.js → browser-prod/node_modules/@xstate/fsm/es/index.mjs} +1 -1
  152. package/dist/browser-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -0
  153. package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs +94 -0
  154. package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -0
  155. package/dist/browser-prod/node_modules/@xstate/react/es/{useConstant.js → useConstant.mjs} +1 -1
  156. package/dist/browser-prod/node_modules/@xstate/react/es/useConstant.mjs.map +1 -0
  157. package/dist/browser-prod/node_modules/use-isomorphic-layout-effect/dist/{use-isomorphic-layout-effect.browser.esm.js → use-isomorphic-layout-effect.browser.esm.mjs} +1 -1
  158. package/dist/browser-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs.map +1 -0
  159. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/{with-selector.development.js → with-selector.development.mjs} +3 -3
  160. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -0
  161. package/dist/{browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js → browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs} +3 -3
  162. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -0
  163. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/{use-sync-external-store-shim.development.js → use-sync-external-store-shim.development.mjs} +2 -2
  164. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -0
  165. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/{use-sync-external-store-shim.production.min.js → use-sync-external-store-shim.production.min.mjs} +2 -2
  166. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -0
  167. package/dist/{browser-dev/node_modules/use-sync-external-store/shim/index.js → browser-prod/node_modules/use-sync-external-store/shim/index.mjs} +4 -4
  168. package/dist/browser-prod/node_modules/use-sync-external-store/shim/index.mjs.map +1 -0
  169. package/dist/{browser-dev/node_modules/use-sync-external-store/shim/with-selector.js → browser-prod/node_modules/use-sync-external-store/shim/with-selector.mjs} +4 -4
  170. package/dist/browser-prod/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -0
  171. package/dist/{browser-dev/storefront-api-constants.js → browser-prod/storefront-api-constants.mjs} +1 -1
  172. package/dist/browser-prod/storefront-api-constants.mjs.map +1 -0
  173. package/dist/browser-prod/{storefront-client.js → storefront-client.mjs} +2 -2
  174. package/dist/{node-prod/storefront-client.cjs.map → browser-prod/storefront-client.mjs.map} +1 -1
  175. package/dist/{browser-dev/useCartAPIStateMachine.js → browser-prod/useCartAPIStateMachine.mjs} +5 -5
  176. package/dist/{node-dev/useCartAPIStateMachine.cjs.map → browser-prod/useCartAPIStateMachine.mjs.map} +1 -1
  177. package/dist/{browser-dev/useCartActions.js → browser-prod/useCartActions.mjs} +3 -3
  178. package/dist/{node-prod/useCartActions.cjs.map → browser-prod/useCartActions.mjs.map} +1 -1
  179. package/dist/{browser-dev/useMoney.js → browser-prod/useMoney.mjs} +2 -2
  180. package/dist/{node-dev/useMoney.cjs.map → browser-prod/useMoney.mjs.map} +1 -1
  181. package/dist/node-dev/AddToCartButton.js +16 -16
  182. package/dist/node-dev/AddToCartButton.js.map +1 -1
  183. package/dist/node-dev/{AddToCartButton.cjs → AddToCartButton.mjs} +17 -17
  184. package/dist/node-dev/AddToCartButton.mjs.map +1 -0
  185. package/dist/node-dev/BaseButton.js +7 -7
  186. package/dist/node-dev/BaseButton.js.map +1 -1
  187. package/dist/node-dev/{BaseButton.cjs → BaseButton.mjs} +8 -8
  188. package/dist/node-dev/BaseButton.mjs.map +1 -0
  189. package/dist/node-dev/BuyNowButton.js +12 -12
  190. package/dist/node-dev/BuyNowButton.js.map +1 -1
  191. package/dist/node-dev/{BuyNowButton.cjs → BuyNowButton.mjs} +13 -13
  192. package/dist/node-dev/BuyNowButton.mjs.map +1 -0
  193. package/dist/node-dev/CartCheckoutButton.js +11 -11
  194. package/dist/node-dev/CartCheckoutButton.js.map +1 -1
  195. package/dist/node-dev/CartCheckoutButton.mjs +30 -0
  196. package/dist/node-dev/CartCheckoutButton.mjs.map +1 -0
  197. package/dist/node-dev/CartProvider.js +35 -35
  198. package/dist/node-dev/CartProvider.js.map +1 -1
  199. package/dist/node-dev/{CartProvider.cjs → CartProvider.mjs} +36 -36
  200. package/dist/node-dev/CartProvider.mjs.map +1 -0
  201. package/dist/node-dev/ExternalVideo.js +5 -5
  202. package/dist/node-dev/ExternalVideo.js.map +1 -1
  203. package/dist/node-dev/{ExternalVideo.cjs → ExternalVideo.mjs} +6 -6
  204. package/dist/node-dev/ExternalVideo.mjs.map +1 -0
  205. package/dist/node-dev/Image.js +12 -12
  206. package/dist/node-dev/Image.js.map +1 -1
  207. package/dist/node-dev/{Image.cjs → Image.mjs} +13 -13
  208. package/dist/node-dev/Image.mjs.map +1 -0
  209. package/dist/node-dev/MediaFile.js +12 -12
  210. package/dist/node-dev/MediaFile.js.map +1 -1
  211. package/dist/node-dev/{MediaFile.cjs → MediaFile.mjs} +13 -13
  212. package/dist/node-dev/MediaFile.mjs.map +1 -0
  213. package/dist/node-dev/Metafield.js +32 -32
  214. package/dist/node-dev/Metafield.js.map +1 -1
  215. package/dist/node-dev/{Metafield.cjs → Metafield.mjs} +33 -33
  216. package/dist/node-dev/Metafield.mjs.map +1 -0
  217. package/dist/node-dev/ModelViewer.js +11 -11
  218. package/dist/node-dev/ModelViewer.js.map +1 -1
  219. package/dist/node-dev/{ModelViewer.cjs → ModelViewer.mjs} +12 -12
  220. package/dist/node-dev/ModelViewer.mjs.map +1 -0
  221. package/dist/node-dev/Money.js +8 -8
  222. package/dist/node-dev/Money.js.map +1 -1
  223. package/dist/node-dev/{Money.cjs → Money.mjs} +9 -9
  224. package/dist/node-dev/Money.mjs.map +1 -0
  225. package/dist/node-dev/ProductPrice.js +9 -9
  226. package/dist/node-dev/ProductPrice.js.map +1 -1
  227. package/dist/node-dev/{ProductPrice.cjs → ProductPrice.mjs} +10 -10
  228. package/dist/node-dev/ProductPrice.mjs.map +1 -0
  229. package/dist/node-dev/ProductProvider.js +25 -25
  230. package/dist/node-dev/ProductProvider.js.map +1 -1
  231. package/dist/node-dev/{ProductProvider.cjs → ProductProvider.mjs} +26 -26
  232. package/dist/node-dev/ProductProvider.mjs.map +1 -0
  233. package/dist/node-dev/ShopPayButton.js +13 -13
  234. package/dist/node-dev/ShopPayButton.js.map +1 -1
  235. package/dist/node-dev/{ShopPayButton.cjs → ShopPayButton.mjs} +14 -14
  236. package/dist/node-dev/ShopPayButton.mjs.map +1 -0
  237. package/dist/node-dev/ShopifyProvider.js +14 -14
  238. package/dist/node-dev/ShopifyProvider.js.map +1 -1
  239. package/dist/node-dev/ShopifyProvider.mjs +46 -0
  240. package/dist/node-dev/ShopifyProvider.mjs.map +1 -0
  241. package/dist/node-dev/Video.js +9 -9
  242. package/dist/node-dev/Video.js.map +1 -1
  243. package/dist/node-dev/{Video.cjs → Video.mjs} +10 -10
  244. package/dist/node-dev/Video.mjs.map +1 -0
  245. package/dist/node-dev/_virtual/index.js +5 -0
  246. package/dist/{browser-dev → node-dev}/_virtual/index.js.map +1 -1
  247. package/dist/node-dev/_virtual/index.mjs +5 -0
  248. package/dist/node-dev/_virtual/index.mjs.map +1 -0
  249. package/dist/node-dev/_virtual/use-sync-external-store-shim.development.js +5 -0
  250. package/dist/{browser-dev → node-dev}/_virtual/use-sync-external-store-shim.development.js.map +1 -1
  251. package/dist/node-dev/_virtual/use-sync-external-store-shim.development.mjs +5 -0
  252. package/dist/node-dev/_virtual/use-sync-external-store-shim.development.mjs.map +1 -0
  253. package/dist/node-dev/_virtual/use-sync-external-store-shim.production.min.js +5 -0
  254. package/dist/node-dev/_virtual/use-sync-external-store-shim.production.min.js.map +1 -0
  255. package/dist/node-dev/_virtual/use-sync-external-store-shim.production.min.mjs +5 -0
  256. package/dist/node-dev/_virtual/use-sync-external-store-shim.production.min.mjs.map +1 -0
  257. package/dist/node-dev/_virtual/with-selector.development.js +5 -0
  258. package/dist/{browser-dev → node-dev}/_virtual/with-selector.development.js.map +1 -1
  259. package/dist/node-dev/_virtual/with-selector.development.mjs +5 -0
  260. package/dist/node-dev/_virtual/with-selector.development.mjs.map +1 -0
  261. package/dist/node-dev/_virtual/with-selector.js +5 -0
  262. package/dist/{browser-dev → node-dev}/_virtual/with-selector.js.map +1 -1
  263. package/dist/node-dev/_virtual/with-selector.mjs +5 -0
  264. package/dist/node-dev/_virtual/with-selector.mjs.map +1 -0
  265. package/dist/node-dev/_virtual/with-selector.production.min.js +5 -0
  266. package/dist/{browser-dev → node-dev}/_virtual/with-selector.production.min.js.map +1 -1
  267. package/dist/node-dev/_virtual/with-selector.production.min.mjs +5 -0
  268. package/dist/node-dev/_virtual/with-selector.production.min.mjs.map +1 -0
  269. package/dist/node-dev/cart-constants.js +9 -9
  270. package/dist/node-dev/cart-constants.js.map +1 -1
  271. package/dist/node-dev/cart-constants.mjs +17 -0
  272. package/dist/node-dev/cart-constants.mjs.map +1 -0
  273. package/dist/node-dev/cart-hooks.js +15 -15
  274. package/dist/node-dev/cart-hooks.js.map +1 -1
  275. package/dist/node-dev/cart-hooks.mjs +48 -0
  276. package/dist/node-dev/cart-hooks.mjs.map +1 -0
  277. package/dist/node-dev/cart-queries.js +11 -11
  278. package/dist/node-dev/cart-queries.js.map +1 -1
  279. package/dist/{node-prod/cart-queries.cjs → node-dev/cart-queries.mjs} +12 -12
  280. package/dist/node-dev/cart-queries.mjs.map +1 -0
  281. package/dist/node-dev/flatten-connection.js +3 -3
  282. package/dist/node-dev/flatten-connection.js.map +1 -1
  283. package/dist/node-dev/{flatten-connection.cjs → flatten-connection.mjs} +4 -4
  284. package/dist/node-dev/flatten-connection.mjs.map +1 -0
  285. package/dist/node-dev/image-size.js +6 -6
  286. package/dist/node-dev/image-size.js.map +1 -1
  287. package/dist/node-dev/{image-size.cjs → image-size.mjs} +7 -7
  288. package/dist/node-dev/image-size.mjs.map +1 -0
  289. package/dist/node-dev/index.js +45 -45
  290. package/dist/node-dev/index.js.map +1 -1
  291. package/dist/node-dev/index.mjs +46 -0
  292. package/dist/node-dev/index.mjs.map +1 -0
  293. package/dist/node-dev/load-script.js +7 -7
  294. package/dist/node-dev/load-script.js.map +1 -1
  295. package/dist/node-dev/{load-script.cjs → load-script.mjs} +8 -8
  296. package/dist/node-dev/load-script.mjs.map +1 -0
  297. package/dist/node-dev/metafield-parser.js +8 -8
  298. package/dist/node-dev/metafield-parser.js.map +1 -1
  299. package/dist/node-dev/{metafield-parser.cjs → metafield-parser.mjs} +9 -9
  300. package/dist/node-dev/metafield-parser.mjs.map +1 -0
  301. package/dist/node-dev/node_modules/@xstate/fsm/es/index.js +158 -0
  302. package/dist/node-dev/node_modules/@xstate/fsm/es/index.js.map +1 -0
  303. package/dist/node-dev/node_modules/@xstate/fsm/es/index.mjs +159 -0
  304. package/dist/node-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -0
  305. package/dist/node-dev/node_modules/@xstate/react/es/fsm.js +94 -0
  306. package/dist/{browser-dev → node-dev}/node_modules/@xstate/react/es/fsm.js.map +1 -1
  307. package/dist/{browser-prod/node_modules/@xstate/react/es/fsm.js → node-dev/node_modules/@xstate/react/es/fsm.mjs} +6 -6
  308. package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -0
  309. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.js +30 -0
  310. package/dist/{browser-dev → node-dev}/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  311. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.mjs +12 -0
  312. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.mjs.map +1 -0
  313. package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js +5 -0
  314. package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js.map +1 -0
  315. package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs +6 -0
  316. package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs.map +1 -0
  317. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +107 -0
  318. package/dist/{browser-dev → node-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  319. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs +105 -0
  320. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -0
  321. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +74 -0
  322. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -0
  323. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs +72 -0
  324. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -0
  325. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +138 -0
  326. package/dist/{browser-prod → node-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  327. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs +136 -0
  328. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -0
  329. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +60 -0
  330. package/dist/{browser-prod → node-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  331. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs +58 -0
  332. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -0
  333. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.js +21 -0
  334. package/dist/{browser-prod → node-dev}/node_modules/use-sync-external-store/shim/index.js.map +1 -1
  335. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.mjs +21 -0
  336. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.mjs.map +1 -0
  337. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.js +12 -0
  338. package/dist/{browser-dev → node-dev}/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -1
  339. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.mjs +11 -0
  340. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -0
  341. package/dist/node-dev/storefront-api-constants.js +3 -3
  342. package/dist/node-dev/storefront-api-constants.js.map +1 -1
  343. package/dist/node-dev/storefront-api-constants.mjs +5 -0
  344. package/dist/node-dev/storefront-api-constants.mjs.map +1 -0
  345. package/dist/node-dev/storefront-client.js +6 -6
  346. package/dist/node-dev/storefront-client.js.map +1 -1
  347. package/dist/node-dev/{storefront-client.cjs → storefront-client.mjs} +7 -7
  348. package/dist/node-dev/storefront-client.mjs.map +1 -0
  349. package/dist/node-dev/useCartAPIStateMachine.js +20 -20
  350. package/dist/node-dev/useCartAPIStateMachine.js.map +1 -1
  351. package/dist/node-dev/{useCartAPIStateMachine.cjs → useCartAPIStateMachine.mjs} +21 -21
  352. package/dist/node-dev/useCartAPIStateMachine.mjs.map +1 -0
  353. package/dist/node-dev/useCartActions.js +26 -26
  354. package/dist/node-dev/useCartActions.js.map +1 -1
  355. package/dist/{node-prod/useCartActions.cjs → node-dev/useCartActions.mjs} +27 -27
  356. package/dist/node-dev/useCartActions.mjs.map +1 -0
  357. package/dist/node-dev/useMoney.js +10 -10
  358. package/dist/node-dev/useMoney.js.map +1 -1
  359. package/dist/node-dev/{useMoney.cjs → useMoney.mjs} +11 -11
  360. package/dist/node-dev/useMoney.mjs.map +1 -0
  361. package/dist/node-prod/AddToCartButton.js +16 -16
  362. package/dist/node-prod/AddToCartButton.js.map +1 -1
  363. package/dist/node-prod/{AddToCartButton.cjs → AddToCartButton.mjs} +17 -17
  364. package/dist/node-prod/AddToCartButton.mjs.map +1 -0
  365. package/dist/node-prod/BaseButton.js +7 -7
  366. package/dist/node-prod/BaseButton.js.map +1 -1
  367. package/dist/node-prod/{BaseButton.cjs → BaseButton.mjs} +8 -8
  368. package/dist/node-prod/BaseButton.mjs.map +1 -0
  369. package/dist/node-prod/BuyNowButton.js +12 -12
  370. package/dist/node-prod/BuyNowButton.js.map +1 -1
  371. package/dist/node-prod/{BuyNowButton.cjs → BuyNowButton.mjs} +13 -13
  372. package/dist/node-prod/BuyNowButton.mjs.map +1 -0
  373. package/dist/node-prod/CartCheckoutButton.js +11 -11
  374. package/dist/node-prod/CartCheckoutButton.js.map +1 -1
  375. package/dist/node-prod/CartCheckoutButton.mjs +30 -0
  376. package/dist/node-prod/CartCheckoutButton.mjs.map +1 -0
  377. package/dist/node-prod/CartProvider.js +35 -35
  378. package/dist/node-prod/CartProvider.js.map +1 -1
  379. package/dist/node-prod/{CartProvider.cjs → CartProvider.mjs} +36 -36
  380. package/dist/node-prod/CartProvider.mjs.map +1 -0
  381. package/dist/node-prod/ExternalVideo.js +5 -5
  382. package/dist/node-prod/ExternalVideo.js.map +1 -1
  383. package/dist/node-prod/{ExternalVideo.cjs → ExternalVideo.mjs} +6 -6
  384. package/dist/node-prod/ExternalVideo.mjs.map +1 -0
  385. package/dist/node-prod/Image.js +12 -12
  386. package/dist/node-prod/Image.js.map +1 -1
  387. package/dist/node-prod/{Image.cjs → Image.mjs} +13 -13
  388. package/dist/node-prod/Image.mjs.map +1 -0
  389. package/dist/node-prod/MediaFile.js +12 -12
  390. package/dist/node-prod/MediaFile.js.map +1 -1
  391. package/dist/node-prod/{MediaFile.cjs → MediaFile.mjs} +13 -13
  392. package/dist/node-prod/MediaFile.mjs.map +1 -0
  393. package/dist/node-prod/Metafield.js +32 -32
  394. package/dist/node-prod/Metafield.js.map +1 -1
  395. package/dist/node-prod/{Metafield.cjs → Metafield.mjs} +33 -33
  396. package/dist/node-prod/Metafield.mjs.map +1 -0
  397. package/dist/node-prod/ModelViewer.js +11 -11
  398. package/dist/node-prod/ModelViewer.js.map +1 -1
  399. package/dist/node-prod/{ModelViewer.cjs → ModelViewer.mjs} +12 -12
  400. package/dist/node-prod/ModelViewer.mjs.map +1 -0
  401. package/dist/node-prod/Money.js +8 -8
  402. package/dist/node-prod/Money.js.map +1 -1
  403. package/dist/node-prod/{Money.cjs → Money.mjs} +9 -9
  404. package/dist/node-prod/Money.mjs.map +1 -0
  405. package/dist/node-prod/ProductPrice.js +9 -9
  406. package/dist/node-prod/ProductPrice.js.map +1 -1
  407. package/dist/node-prod/{ProductPrice.cjs → ProductPrice.mjs} +10 -10
  408. package/dist/node-prod/ProductPrice.mjs.map +1 -0
  409. package/dist/node-prod/ProductProvider.js +25 -25
  410. package/dist/node-prod/ProductProvider.js.map +1 -1
  411. package/dist/node-prod/{ProductProvider.cjs → ProductProvider.mjs} +26 -26
  412. package/dist/node-prod/ProductProvider.mjs.map +1 -0
  413. package/dist/node-prod/ShopPayButton.js +13 -13
  414. package/dist/node-prod/ShopPayButton.js.map +1 -1
  415. package/dist/node-prod/{ShopPayButton.cjs → ShopPayButton.mjs} +14 -14
  416. package/dist/node-prod/ShopPayButton.mjs.map +1 -0
  417. package/dist/node-prod/ShopifyProvider.js +14 -14
  418. package/dist/node-prod/ShopifyProvider.js.map +1 -1
  419. package/dist/node-prod/ShopifyProvider.mjs +46 -0
  420. package/dist/node-prod/ShopifyProvider.mjs.map +1 -0
  421. package/dist/node-prod/Video.js +9 -9
  422. package/dist/node-prod/Video.js.map +1 -1
  423. package/dist/node-prod/{Video.cjs → Video.mjs} +10 -10
  424. package/dist/node-prod/Video.mjs.map +1 -0
  425. package/dist/node-prod/_virtual/index.js +5 -0
  426. package/dist/{browser-prod → node-prod}/_virtual/index.js.map +1 -1
  427. package/dist/node-prod/_virtual/index.mjs +5 -0
  428. package/dist/node-prod/_virtual/index.mjs.map +1 -0
  429. package/dist/node-prod/_virtual/use-sync-external-store-shim.development.js +5 -0
  430. package/dist/{browser-prod → node-prod}/_virtual/use-sync-external-store-shim.development.js.map +1 -1
  431. package/dist/node-prod/_virtual/use-sync-external-store-shim.development.mjs +5 -0
  432. package/dist/node-prod/_virtual/use-sync-external-store-shim.development.mjs.map +1 -0
  433. package/dist/node-prod/_virtual/use-sync-external-store-shim.production.min.js +5 -0
  434. package/dist/node-prod/_virtual/use-sync-external-store-shim.production.min.js.map +1 -0
  435. package/dist/node-prod/_virtual/use-sync-external-store-shim.production.min.mjs +5 -0
  436. package/dist/node-prod/_virtual/use-sync-external-store-shim.production.min.mjs.map +1 -0
  437. package/dist/node-prod/_virtual/with-selector.development.js +5 -0
  438. package/dist/{browser-prod → node-prod}/_virtual/with-selector.development.js.map +1 -1
  439. package/dist/node-prod/_virtual/with-selector.development.mjs +5 -0
  440. package/dist/node-prod/_virtual/with-selector.development.mjs.map +1 -0
  441. package/dist/node-prod/_virtual/with-selector.js +5 -0
  442. package/dist/{browser-prod → node-prod}/_virtual/with-selector.js.map +1 -1
  443. package/dist/node-prod/_virtual/with-selector.mjs +5 -0
  444. package/dist/node-prod/_virtual/with-selector.mjs.map +1 -0
  445. package/dist/node-prod/_virtual/with-selector.production.min.js +5 -0
  446. package/dist/{browser-prod → node-prod}/_virtual/with-selector.production.min.js.map +1 -1
  447. package/dist/node-prod/_virtual/with-selector.production.min.mjs +5 -0
  448. package/dist/node-prod/_virtual/with-selector.production.min.mjs.map +1 -0
  449. package/dist/node-prod/cart-constants.js +9 -9
  450. package/dist/node-prod/cart-constants.js.map +1 -1
  451. package/dist/node-prod/cart-constants.mjs +17 -0
  452. package/dist/node-prod/cart-constants.mjs.map +1 -0
  453. package/dist/node-prod/cart-hooks.js +15 -15
  454. package/dist/node-prod/cart-hooks.js.map +1 -1
  455. package/dist/node-prod/cart-hooks.mjs +48 -0
  456. package/dist/node-prod/cart-hooks.mjs.map +1 -0
  457. package/dist/node-prod/cart-queries.js +11 -11
  458. package/dist/node-prod/cart-queries.js.map +1 -1
  459. package/dist/{node-dev/cart-queries.cjs → node-prod/cart-queries.mjs} +12 -12
  460. package/dist/node-prod/cart-queries.mjs.map +1 -0
  461. package/dist/node-prod/flatten-connection.js +3 -3
  462. package/dist/node-prod/flatten-connection.js.map +1 -1
  463. package/dist/node-prod/{flatten-connection.cjs → flatten-connection.mjs} +4 -4
  464. package/dist/node-prod/flatten-connection.mjs.map +1 -0
  465. package/dist/node-prod/image-size.js +6 -6
  466. package/dist/node-prod/image-size.js.map +1 -1
  467. package/dist/node-prod/{image-size.cjs → image-size.mjs} +7 -7
  468. package/dist/node-prod/image-size.mjs.map +1 -0
  469. package/dist/node-prod/index.js +45 -45
  470. package/dist/node-prod/index.js.map +1 -1
  471. package/dist/node-prod/index.mjs +46 -0
  472. package/dist/node-prod/index.mjs.map +1 -0
  473. package/dist/node-prod/load-script.js +7 -7
  474. package/dist/node-prod/load-script.js.map +1 -1
  475. package/dist/node-prod/{load-script.cjs → load-script.mjs} +8 -8
  476. package/dist/node-prod/load-script.mjs.map +1 -0
  477. package/dist/node-prod/metafield-parser.js +8 -8
  478. package/dist/node-prod/metafield-parser.js.map +1 -1
  479. package/dist/node-prod/{metafield-parser.cjs → metafield-parser.mjs} +9 -9
  480. package/dist/node-prod/metafield-parser.mjs.map +1 -0
  481. package/dist/node-prod/node_modules/@xstate/fsm/es/index.js +158 -0
  482. package/dist/node-prod/node_modules/@xstate/fsm/es/index.js.map +1 -0
  483. package/dist/node-prod/node_modules/@xstate/fsm/es/index.mjs +159 -0
  484. package/dist/node-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -0
  485. package/dist/node-prod/node_modules/@xstate/react/es/fsm.js +94 -0
  486. package/dist/{browser-prod → node-prod}/node_modules/@xstate/react/es/fsm.js.map +1 -1
  487. package/dist/{browser-dev/node_modules/@xstate/react/es/fsm.js → node-prod/node_modules/@xstate/react/es/fsm.mjs} +6 -6
  488. package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -0
  489. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.js +30 -0
  490. package/dist/{browser-prod → node-prod}/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  491. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.mjs +12 -0
  492. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.mjs.map +1 -0
  493. package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js +5 -0
  494. package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js.map +1 -0
  495. package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs +6 -0
  496. package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs.map +1 -0
  497. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +107 -0
  498. package/dist/{browser-prod → node-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  499. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs +105 -0
  500. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -0
  501. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +74 -0
  502. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -0
  503. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs +72 -0
  504. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -0
  505. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +138 -0
  506. package/dist/{browser-dev → node-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  507. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs +136 -0
  508. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -0
  509. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +60 -0
  510. package/dist/{browser-dev → node-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  511. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs +58 -0
  512. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -0
  513. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.js +21 -0
  514. package/dist/{browser-dev → node-prod}/node_modules/use-sync-external-store/shim/index.js.map +1 -1
  515. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.mjs +21 -0
  516. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.mjs.map +1 -0
  517. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.js +12 -0
  518. package/dist/{browser-prod → node-prod}/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -1
  519. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.mjs +11 -0
  520. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -0
  521. package/dist/node-prod/storefront-api-constants.js +3 -3
  522. package/dist/node-prod/storefront-api-constants.js.map +1 -1
  523. package/dist/node-prod/storefront-api-constants.mjs +5 -0
  524. package/dist/node-prod/storefront-api-constants.mjs.map +1 -0
  525. package/dist/node-prod/storefront-client.js +6 -6
  526. package/dist/node-prod/storefront-client.js.map +1 -1
  527. package/dist/node-prod/{storefront-client.cjs → storefront-client.mjs} +7 -7
  528. package/dist/node-prod/storefront-client.mjs.map +1 -0
  529. package/dist/node-prod/useCartAPIStateMachine.js +20 -20
  530. package/dist/node-prod/useCartAPIStateMachine.js.map +1 -1
  531. package/dist/node-prod/{useCartAPIStateMachine.cjs → useCartAPIStateMachine.mjs} +21 -21
  532. package/dist/node-prod/useCartAPIStateMachine.mjs.map +1 -0
  533. package/dist/node-prod/useCartActions.js +26 -26
  534. package/dist/node-prod/useCartActions.js.map +1 -1
  535. package/dist/{node-dev/useCartActions.cjs → node-prod/useCartActions.mjs} +27 -27
  536. package/dist/node-prod/useCartActions.mjs.map +1 -0
  537. package/dist/node-prod/useMoney.js +10 -10
  538. package/dist/node-prod/useMoney.js.map +1 -1
  539. package/dist/node-prod/{useMoney.cjs → useMoney.mjs} +11 -11
  540. package/dist/node-prod/useMoney.mjs.map +1 -0
  541. package/package.json +19 -19
  542. package/dist/browser-dev/AddToCartButton.js.map +0 -1
  543. package/dist/browser-dev/BaseButton.js.map +0 -1
  544. package/dist/browser-dev/BuyNowButton.js.map +0 -1
  545. package/dist/browser-dev/CartCheckoutButton.js.map +0 -1
  546. package/dist/browser-dev/CartProvider.js.map +0 -1
  547. package/dist/browser-dev/ExternalVideo.js.map +0 -1
  548. package/dist/browser-dev/Image.js.map +0 -1
  549. package/dist/browser-dev/MediaFile.js.map +0 -1
  550. package/dist/browser-dev/Metafield.js.map +0 -1
  551. package/dist/browser-dev/ModelViewer.js.map +0 -1
  552. package/dist/browser-dev/Money.js.map +0 -1
  553. package/dist/browser-dev/ProductPrice.js.map +0 -1
  554. package/dist/browser-dev/ProductProvider.js.map +0 -1
  555. package/dist/browser-dev/ShopPayButton.js.map +0 -1
  556. package/dist/browser-dev/ShopifyProvider.js.map +0 -1
  557. package/dist/browser-dev/Video.js.map +0 -1
  558. package/dist/browser-dev/_virtual/use-sync-external-store-shim.production.min.js.map +0 -1
  559. package/dist/browser-dev/cart-constants.js.map +0 -1
  560. package/dist/browser-dev/cart-hooks.js.map +0 -1
  561. package/dist/browser-dev/cart-queries.js.map +0 -1
  562. package/dist/browser-dev/flatten-connection.js.map +0 -1
  563. package/dist/browser-dev/image-size.js.map +0 -1
  564. package/dist/browser-dev/index.js +0 -46
  565. package/dist/browser-dev/index.js.map +0 -1
  566. package/dist/browser-dev/load-script.js.map +0 -1
  567. package/dist/browser-dev/metafield-parser.js.map +0 -1
  568. package/dist/browser-dev/node_modules/@xstate/fsm/es/index.js.map +0 -1
  569. package/dist/browser-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +0 -1
  570. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +0 -1
  571. package/dist/browser-dev/storefront-api-constants.js.map +0 -1
  572. package/dist/browser-dev/storefront-client.js.map +0 -1
  573. package/dist/browser-dev/useCartAPIStateMachine.js.map +0 -1
  574. package/dist/browser-dev/useCartActions.js.map +0 -1
  575. package/dist/browser-dev/useMoney.js.map +0 -1
  576. package/dist/browser-prod/AddToCartButton.js.map +0 -1
  577. package/dist/browser-prod/BaseButton.js.map +0 -1
  578. package/dist/browser-prod/BuyNowButton.js.map +0 -1
  579. package/dist/browser-prod/CartCheckoutButton.js.map +0 -1
  580. package/dist/browser-prod/CartProvider.js.map +0 -1
  581. package/dist/browser-prod/ExternalVideo.js.map +0 -1
  582. package/dist/browser-prod/Image.js.map +0 -1
  583. package/dist/browser-prod/MediaFile.js.map +0 -1
  584. package/dist/browser-prod/Metafield.js.map +0 -1
  585. package/dist/browser-prod/ModelViewer.js.map +0 -1
  586. package/dist/browser-prod/Money.js.map +0 -1
  587. package/dist/browser-prod/ProductPrice.js.map +0 -1
  588. package/dist/browser-prod/ProductProvider.js.map +0 -1
  589. package/dist/browser-prod/ShopPayButton.js.map +0 -1
  590. package/dist/browser-prod/ShopifyProvider.js.map +0 -1
  591. package/dist/browser-prod/Video.js.map +0 -1
  592. package/dist/browser-prod/_virtual/use-sync-external-store-shim.production.min.js.map +0 -1
  593. package/dist/browser-prod/cart-constants.js.map +0 -1
  594. package/dist/browser-prod/cart-hooks.js.map +0 -1
  595. package/dist/browser-prod/cart-queries.js.map +0 -1
  596. package/dist/browser-prod/flatten-connection.js.map +0 -1
  597. package/dist/browser-prod/image-size.js.map +0 -1
  598. package/dist/browser-prod/index.js +0 -46
  599. package/dist/browser-prod/index.js.map +0 -1
  600. package/dist/browser-prod/load-script.js.map +0 -1
  601. package/dist/browser-prod/metafield-parser.js.map +0 -1
  602. package/dist/browser-prod/node_modules/@xstate/fsm/es/index.js.map +0 -1
  603. package/dist/browser-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +0 -1
  604. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +0 -1
  605. package/dist/browser-prod/storefront-api-constants.js.map +0 -1
  606. package/dist/browser-prod/storefront-client.js.map +0 -1
  607. package/dist/browser-prod/useCartAPIStateMachine.js.map +0 -1
  608. package/dist/browser-prod/useCartActions.js.map +0 -1
  609. package/dist/browser-prod/useMoney.js.map +0 -1
  610. package/dist/node-dev/CartCheckoutButton.cjs +0 -30
  611. package/dist/node-dev/ShopifyProvider.cjs +0 -46
  612. package/dist/node-dev/cart-constants.cjs +0 -17
  613. package/dist/node-dev/cart-hooks.cjs +0 -48
  614. package/dist/node-dev/index.cjs +0 -46
  615. package/dist/node-dev/index.cjs.map +0 -1
  616. package/dist/node-dev/storefront-api-constants.cjs +0 -5
  617. package/dist/node-dev/storefront-api-constants.cjs.map +0 -1
  618. package/dist/node-prod/CartCheckoutButton.cjs +0 -30
  619. package/dist/node-prod/ShopifyProvider.cjs +0 -46
  620. package/dist/node-prod/cart-constants.cjs +0 -17
  621. package/dist/node-prod/cart-hooks.cjs +0 -48
  622. package/dist/node-prod/index.cjs +0 -46
  623. package/dist/node-prod/index.cjs.map +0 -1
  624. package/dist/node-prod/storefront-api-constants.cjs +0 -5
  625. package/dist/node-prod/storefront-api-constants.cjs.map +0 -1
@@ -1,12 +1,10 @@
1
- "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const react = require("react");
4
- const useCartAPIStateMachine = require("./useCartAPIStateMachine.cjs");
5
- const cartConstants = require("./cart-constants.cjs");
6
- const jsxRuntime = require("react/jsx-runtime");
7
- const CartContext = react.createContext(null);
1
+ import { createContext, useContext, useState, useRef, useEffect, useCallback, useMemo, useTransition } from "react";
2
+ import { useCartAPIStateMachine } from "./useCartAPIStateMachine.mjs";
3
+ import { CART_ID_STORAGE_KEY } from "./cart-constants.mjs";
4
+ import { jsx } from "react/jsx-runtime";
5
+ const CartContext = createContext(null);
8
6
  function useCart() {
9
- const context = react.useContext(CartContext);
7
+ const context = useContext(CartContext);
10
8
  if (!context) {
11
9
  throw new Error("Expected a Cart Context, but no Cart Context was found");
12
10
  }
@@ -39,15 +37,15 @@ function CartProvider({
39
37
  var _a, _b, _c, _d, _e, _f, _g;
40
38
  if (countryCode)
41
39
  countryCode = countryCode.toUpperCase();
42
- const [prevCountryCode, setPrevCountryCode] = react.useState(countryCode);
43
- const [prevCustomerAccessToken, setPrevCustomerAccessToken] = react.useState(customerAccessToken);
44
- const customerOverridesCountryCode = react.useRef(false);
40
+ const [prevCountryCode, setPrevCountryCode] = useState(countryCode);
41
+ const [prevCustomerAccessToken, setPrevCustomerAccessToken] = useState(customerAccessToken);
42
+ const customerOverridesCountryCode = useRef(false);
45
43
  if (prevCountryCode !== countryCode || prevCustomerAccessToken !== customerAccessToken) {
46
44
  setPrevCountryCode(countryCode);
47
45
  setPrevCustomerAccessToken(customerAccessToken);
48
46
  customerOverridesCountryCode.current = false;
49
47
  }
50
- const [cartState, cartSend] = useCartAPIStateMachine.useCartAPIStateMachine({
48
+ const [cartState, cartSend] = useCartAPIStateMachine({
51
49
  numCartLines,
52
50
  data: cart,
53
51
  cartFragment,
@@ -151,16 +149,16 @@ function CartProvider({
151
149
  }
152
150
  }
153
151
  });
154
- const cartReady = react.useRef(false);
152
+ const cartReady = useRef(false);
155
153
  const cartCompleted = cartState.matches("cartCompleted");
156
154
  const countryChanged = (cartState.value === "idle" || cartState.value === "error" || cartState.value === "cartCompleted") && countryCode !== ((_c = (_b = (_a = cartState == null ? void 0 : cartState.context) == null ? void 0 : _a.cart) == null ? void 0 : _b.buyerIdentity) == null ? void 0 : _c.countryCode) && !cartState.context.errors;
157
- const fetchingFromStorage = react.useRef(false);
158
- react.useEffect(() => {
155
+ const fetchingFromStorage = useRef(false);
156
+ useEffect(() => {
159
157
  if (!cartReady.current && !fetchingFromStorage.current) {
160
158
  if (!cart && storageAvailable("localStorage")) {
161
159
  fetchingFromStorage.current = true;
162
160
  try {
163
- const cartId = window.localStorage.getItem(cartConstants.CART_ID_STORAGE_KEY);
161
+ const cartId = window.localStorage.getItem(CART_ID_STORAGE_KEY);
164
162
  if (cartId) {
165
163
  cartSend({
166
164
  type: "CART_FETCH",
@@ -177,7 +175,7 @@ function CartProvider({
177
175
  cartReady.current = true;
178
176
  }
179
177
  }, [cart, cartReady, cartSend]);
180
- react.useEffect(() => {
178
+ useEffect(() => {
181
179
  if (!countryChanged || customerOverridesCountryCode.current)
182
180
  return;
183
181
  cartSend({
@@ -190,32 +188,32 @@ function CartProvider({
190
188
  }
191
189
  });
192
190
  }, [countryCode, customerAccessToken, countryChanged, customerOverridesCountryCode, cartSend]);
193
- const onCartReadySend = react.useCallback((cartEvent) => {
191
+ const onCartReadySend = useCallback((cartEvent) => {
194
192
  if (!cartReady.current) {
195
193
  return console.warn("Cart isn't ready yet");
196
194
  }
197
195
  cartSend(cartEvent);
198
196
  }, [cartSend]);
199
- react.useEffect(() => {
197
+ useEffect(() => {
200
198
  var _a2, _b2, _c2;
201
199
  if (((_b2 = (_a2 = cartState == null ? void 0 : cartState.context) == null ? void 0 : _a2.cart) == null ? void 0 : _b2.id) && storageAvailable("localStorage")) {
202
200
  try {
203
- window.localStorage.setItem(cartConstants.CART_ID_STORAGE_KEY, (_c2 = cartState.context.cart) == null ? void 0 : _c2.id);
201
+ window.localStorage.setItem(CART_ID_STORAGE_KEY, (_c2 = cartState.context.cart) == null ? void 0 : _c2.id);
204
202
  } catch (error) {
205
203
  console.warn("Failed to save cartId to localStorage", error);
206
204
  }
207
205
  }
208
206
  }, [(_e = (_d = cartState == null ? void 0 : cartState.context) == null ? void 0 : _d.cart) == null ? void 0 : _e.id]);
209
- react.useEffect(() => {
207
+ useEffect(() => {
210
208
  if (cartCompleted && storageAvailable("localStorage")) {
211
209
  try {
212
- window.localStorage.removeItem(cartConstants.CART_ID_STORAGE_KEY);
210
+ window.localStorage.removeItem(CART_ID_STORAGE_KEY);
213
211
  } catch (error) {
214
212
  console.warn("Failed to delete cartId from localStorage", error);
215
213
  }
216
214
  }
217
215
  }, [cartCompleted]);
218
- const cartCreate = react.useCallback((cartInput) => {
216
+ const cartCreate = useCallback((cartInput) => {
219
217
  var _a2, _b2;
220
218
  if (countryCode && !((_a2 = cartInput.buyerIdentity) == null ? void 0 : _a2.countryCode)) {
221
219
  if (cartInput.buyerIdentity == null) {
@@ -235,7 +233,7 @@ function CartProvider({
235
233
  });
236
234
  }, [countryCode, customerAccessToken, onCartReadySend]);
237
235
  const cartDisplayState = useDelayedStateUntilHydration(cartState);
238
- const cartContextValue = react.useMemo(() => {
236
+ const cartContextValue = useMemo(() => {
239
237
  var _a2, _b2, _c2, _d2, _e2, _f2;
240
238
  return {
241
239
  ...(_b2 = (_a2 = cartDisplayState == null ? void 0 : cartDisplayState.context) == null ? void 0 : _a2.cart) != null ? _b2 : {
@@ -312,7 +310,7 @@ function CartProvider({
312
310
  cartFragment
313
311
  };
314
312
  }, [cartCreate, (_f = cartDisplayState == null ? void 0 : cartDisplayState.context) == null ? void 0 : _f.cart, (_g = cartDisplayState == null ? void 0 : cartDisplayState.context) == null ? void 0 : _g.errors, cartDisplayState.value, cartFragment, onCartReadySend]);
315
- return /* @__PURE__ */ jsxRuntime.jsx(CartContext.Provider, {
313
+ return /* @__PURE__ */ jsx(CartContext.Provider, {
316
314
  value: cartContextValue,
317
315
  children
318
316
  });
@@ -341,17 +339,17 @@ function transposeStatus(status) {
341
339
  }
342
340
  }
343
341
  function useDelayedStateUntilHydration(state) {
344
- const [isPending, startTransition] = react.useTransition();
345
- const [delayedState, setDelayedState] = react.useState(state);
346
- const firstTimePending = react.useRef(false);
342
+ const [isPending, startTransition] = useTransition();
343
+ const [delayedState, setDelayedState] = useState(state);
344
+ const firstTimePending = useRef(false);
347
345
  if (isPending) {
348
346
  firstTimePending.current = true;
349
347
  }
350
- const firstTimePendingFinished = react.useRef(false);
348
+ const firstTimePendingFinished = useRef(false);
351
349
  if (!isPending && firstTimePending.current) {
352
350
  firstTimePendingFinished.current = true;
353
351
  }
354
- react.useEffect(() => {
352
+ useEffect(() => {
355
353
  startTransition(() => {
356
354
  if (!firstTimePendingFinished.current) {
357
355
  setDelayedState(state);
@@ -477,9 +475,11 @@ fragment ImageFragment on Image {
477
475
  height
478
476
  }
479
477
  `;
480
- exports.CartContext = CartContext;
481
- exports.CartProvider = CartProvider;
482
- exports.defaultCartFragment = defaultCartFragment;
483
- exports.storageAvailable = storageAvailable;
484
- exports.useCart = useCart;
485
- //# sourceMappingURL=CartProvider.cjs.map
478
+ export {
479
+ CartContext,
480
+ CartProvider,
481
+ defaultCartFragment,
482
+ storageAvailable,
483
+ useCart
484
+ };
485
+ //# sourceMappingURL=CartProvider.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CartProvider.mjs","sources":["../../src/CartProvider.tsx"],"sourcesContent":["import {\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n useTransition,\n createContext,\n useContext,\n} from 'react';\nimport {\n AttributeInput,\n CartBuyerIdentityInput,\n CartInput,\n CartLineInput,\n CartLineUpdateInput,\n CountryCode,\n Cart as CartType,\n MutationCartNoteUpdateArgs,\n} from './storefront-api-types.js';\nimport {\n BuyerIdentityUpdateEvent,\n CartMachineContext,\n CartMachineEvent,\n CartMachineTypeState,\n CartWithActions,\n} from './cart-types.js';\nimport {useCartAPIStateMachine} from './useCartAPIStateMachine.js';\nimport {CART_ID_STORAGE_KEY} from './cart-constants.js';\nimport {PartialDeep} from 'type-fest';\n\nexport const CartContext = createContext<CartWithActions | null>(null);\n\n/**\n * The `useCart` hook provides access to the cart object. It must be a descendent of a `CartProvider` component.\n */\nexport function useCart() {\n const context = useContext(CartContext);\n\n if (!context) {\n throw new Error('Expected a Cart Context, but no Cart Context was found');\n }\n\n return context;\n}\n\nexport function CartProvider({\n children,\n numCartLines,\n onCreate,\n onLineAdd,\n onLineRemove,\n onLineUpdate,\n onNoteUpdate,\n onBuyerIdentityUpdate,\n onAttributesUpdate,\n onDiscountCodesUpdate,\n onCreateComplete,\n onLineAddComplete,\n onLineRemoveComplete,\n onLineUpdateComplete,\n onNoteUpdateComplete,\n onBuyerIdentityUpdateComplete,\n onAttributesUpdateComplete,\n onDiscountCodesUpdateComplete,\n data: cart,\n cartFragment = defaultCartFragment,\n customerAccessToken,\n countryCode = 'US',\n}: {\n /** Any `ReactNode` elements. */\n children: React.ReactNode;\n /** Maximum number of cart lines to fetch. Defaults to 250 cart lines. */\n numCartLines?: number;\n /** A callback that is invoked when the process to create a cart begins, but before the cart is created in the Storefront API. */\n onCreate?: () => void;\n /** A callback that is invoked when the process to add a line item to the cart begins, but before the line item is added to the Storefront API. */\n onLineAdd?: () => void;\n /** A callback that is invoked when the process to remove a line item to the cart begins, but before the line item is removed from the Storefront API. */\n onLineRemove?: () => void;\n /** A callback that is invoked when the process to update a line item in the cart begins, but before the line item is updated in the Storefront API. */\n onLineUpdate?: () => void;\n /** A callback that is invoked when the process to add or update a note in the cart begins, but before the note is added or updated in the Storefront API. */\n onNoteUpdate?: () => void;\n /** A callback that is invoked when the process to update the buyer identity begins, but before the buyer identity is updated in the Storefront API. */\n onBuyerIdentityUpdate?: () => void;\n /** A callback that is invoked when the process to update the cart attributes begins, but before the attributes are updated in the Storefront API. */\n onAttributesUpdate?: () => void;\n /** A callback that is invoked when the process to update the cart discount codes begins, but before the discount codes are updated in the Storefront API. */\n onDiscountCodesUpdate?: () => void;\n /** A callback that is invoked when the process to create a cart completes */\n onCreateComplete?: () => void;\n /** A callback that is invoked when the process to add a line item to the cart completes */\n onLineAddComplete?: () => void;\n /** A callback that is invoked when the process to remove a line item to the cart completes */\n onLineRemoveComplete?: () => void;\n /** A callback that is invoked when the process to update a line item in the cart completes */\n onLineUpdateComplete?: () => void;\n /** A callback that is invoked when the process to add or update a note in the cart completes */\n onNoteUpdateComplete?: () => void;\n /** A callback that is invoked when the process to update the buyer identity completes */\n onBuyerIdentityUpdateComplete?: () => void;\n /** A callback that is invoked when the process to update the cart attributes completes */\n onAttributesUpdateComplete?: () => void;\n /** A callback that is invoked when the process to update the cart discount codes completes */\n onDiscountCodesUpdateComplete?: () => void;\n /** An object with fields that correspond to the Storefront API's [Cart object](https://shopify.dev/api/storefront/latest/objects/cart). */\n data?: PartialDeep<CartType, {recurseIntoArrays: true}>;\n /** A fragment used to query the Storefront API's [Cart object](https://shopify.dev/api/storefront/latest/objects/cart) for all queries and mutations. A default value is used if no argument is provided. */\n cartFragment?: string;\n /** A customer access token that's accessible on the server if there's a customer login. */\n customerAccessToken?: CartBuyerIdentityInput['customerAccessToken'];\n /** The ISO country code for i18n. */\n countryCode?: CountryCode;\n}) {\n if (countryCode) countryCode = countryCode.toUpperCase() as CountryCode;\n const [prevCountryCode, setPrevCountryCode] = useState(countryCode);\n const [prevCustomerAccessToken, setPrevCustomerAccessToken] =\n useState(customerAccessToken);\n const customerOverridesCountryCode = useRef(false);\n\n if (\n prevCountryCode !== countryCode ||\n prevCustomerAccessToken !== customerAccessToken\n ) {\n setPrevCountryCode(countryCode);\n setPrevCustomerAccessToken(customerAccessToken);\n customerOverridesCountryCode.current = false;\n }\n\n const [cartState, cartSend] = useCartAPIStateMachine({\n numCartLines,\n data: cart,\n cartFragment,\n countryCode,\n onCartActionEntry(context, event) {\n try {\n switch (event.type) {\n case 'CART_CREATE':\n return onCreate?.();\n case 'CARTLINE_ADD':\n return onLineAdd?.();\n case 'CARTLINE_REMOVE':\n return onLineRemove?.();\n case 'CARTLINE_UPDATE':\n return onLineUpdate?.();\n case 'NOTE_UPDATE':\n return onNoteUpdate?.();\n case 'BUYER_IDENTITY_UPDATE':\n return onBuyerIdentityUpdate?.();\n case 'CART_ATTRIBUTES_UPDATE':\n return onAttributesUpdate?.();\n case 'DISCOUNT_CODES_UPDATE':\n return onDiscountCodesUpdate?.();\n }\n } catch (error) {\n console.error('Cart entry action failed', error);\n }\n },\n onCartActionOptimisticUI(context, event) {\n if (!context?.cart) return {cart: undefined};\n switch (event.type) {\n case 'CARTLINE_REMOVE':\n return {\n ...context,\n lastValidCart: context.cart,\n cart: {\n ...context.cart,\n lines: context?.cart?.lines?.filter(\n (line) => line?.id && !event.payload.lines.includes(line?.id)\n ),\n },\n };\n case 'CARTLINE_UPDATE':\n return {\n ...context,\n lastValidCart: context.cart,\n cart: {\n ...context.cart,\n lines: context?.cart?.lines?.map((line) => {\n const updatedLine = event.payload.lines.find(\n ({id}) => id === line?.id\n );\n\n if (updatedLine && updatedLine.quantity) {\n return {\n ...line,\n quantity: updatedLine.quantity,\n };\n }\n\n return line;\n }),\n },\n };\n }\n return {cart: context.cart ? {...context.cart} : undefined};\n },\n onCartActionComplete(context, event) {\n const cartActionEvent = event.payload.cartActionEvent;\n try {\n switch (event.type) {\n case 'RESOLVE':\n switch (cartActionEvent.type) {\n case 'CART_CREATE':\n return onCreateComplete?.();\n case 'CARTLINE_ADD':\n return onLineAddComplete?.();\n case 'CARTLINE_REMOVE':\n return onLineRemoveComplete?.();\n case 'CARTLINE_UPDATE':\n return onLineUpdateComplete?.();\n case 'NOTE_UPDATE':\n return onNoteUpdateComplete?.();\n case 'BUYER_IDENTITY_UPDATE':\n if (countryCodeNotUpdated(context, cartActionEvent)) {\n customerOverridesCountryCode.current = true;\n }\n return onBuyerIdentityUpdateComplete?.();\n case 'CART_ATTRIBUTES_UPDATE':\n return onAttributesUpdateComplete?.();\n case 'DISCOUNT_CODES_UPDATE':\n return onDiscountCodesUpdateComplete?.();\n }\n }\n } catch (error) {\n console.error('onCartActionComplete failed', error);\n }\n },\n });\n\n const cartReady = useRef(false);\n const cartCompleted = cartState.matches('cartCompleted');\n\n const countryChanged =\n (cartState.value === 'idle' ||\n cartState.value === 'error' ||\n cartState.value === 'cartCompleted') &&\n countryCode !== cartState?.context?.cart?.buyerIdentity?.countryCode &&\n !cartState.context.errors;\n\n const fetchingFromStorage = useRef(false);\n\n /**\n * Initializes cart with priority in this order:\n * 1. cart props\n * 2. localStorage cartId\n */\n useEffect(() => {\n if (!cartReady.current && !fetchingFromStorage.current) {\n if (!cart && storageAvailable('localStorage')) {\n fetchingFromStorage.current = true;\n try {\n const cartId = window.localStorage.getItem(CART_ID_STORAGE_KEY);\n if (cartId) {\n cartSend({type: 'CART_FETCH', payload: {cartId}});\n }\n } catch (error) {\n console.warn('error fetching cartId');\n console.warn(error);\n }\n }\n cartReady.current = true;\n }\n }, [cart, cartReady, cartSend]);\n\n // Update cart country code if cart and props countryCode's as different\n useEffect(() => {\n if (!countryChanged || customerOverridesCountryCode.current) return;\n cartSend({\n type: 'BUYER_IDENTITY_UPDATE',\n payload: {buyerIdentity: {countryCode, customerAccessToken}},\n });\n }, [\n countryCode,\n customerAccessToken,\n countryChanged,\n customerOverridesCountryCode,\n cartSend,\n ]);\n\n // send cart events when ready\n const onCartReadySend = useCallback(\n (cartEvent: CartMachineEvent) => {\n if (!cartReady.current) {\n return console.warn(\"Cart isn't ready yet\");\n }\n cartSend(cartEvent);\n },\n [cartSend]\n );\n\n // save cart id to local storage\n useEffect(() => {\n if (cartState?.context?.cart?.id && storageAvailable('localStorage')) {\n try {\n window.localStorage.setItem(\n CART_ID_STORAGE_KEY,\n cartState.context.cart?.id\n );\n } catch (error) {\n console.warn('Failed to save cartId to localStorage', error);\n }\n }\n }, [cartState?.context?.cart?.id]);\n\n // delete cart from local storage if cart fetched has been completed\n useEffect(() => {\n if (cartCompleted && storageAvailable('localStorage')) {\n try {\n window.localStorage.removeItem(CART_ID_STORAGE_KEY);\n } catch (error) {\n console.warn('Failed to delete cartId from localStorage', error);\n }\n }\n }, [cartCompleted]);\n\n const cartCreate = useCallback(\n (cartInput: CartInput) => {\n if (countryCode && !cartInput.buyerIdentity?.countryCode) {\n if (cartInput.buyerIdentity == null) {\n cartInput.buyerIdentity = {};\n }\n cartInput.buyerIdentity.countryCode = countryCode;\n }\n\n if (\n customerAccessToken &&\n !cartInput.buyerIdentity?.customerAccessToken\n ) {\n if (cartInput.buyerIdentity == null) {\n cartInput.buyerIdentity = {};\n }\n cartInput.buyerIdentity.customerAccessToken = customerAccessToken;\n }\n onCartReadySend({\n type: 'CART_CREATE',\n payload: cartInput,\n });\n },\n [countryCode, customerAccessToken, onCartReadySend]\n );\n\n // Delays the cart state in the context if the page is hydrating\n // preventing suspense boundary errors.\n const cartDisplayState = useDelayedStateUntilHydration(cartState);\n\n const cartContextValue = useMemo<CartWithActions>(() => {\n return {\n ...(cartDisplayState?.context?.cart ?? {lines: [], attributes: []}),\n status: transposeStatus(cartDisplayState.value),\n error: cartDisplayState?.context?.errors,\n totalQuantity: cartDisplayState?.context?.cart?.totalQuantity ?? 0,\n cartCreate,\n linesAdd(lines: CartLineInput[]) {\n if (cartDisplayState?.context?.cart?.id) {\n onCartReadySend({\n type: 'CARTLINE_ADD',\n payload: {lines},\n });\n } else {\n cartCreate({lines});\n }\n },\n linesRemove(lines: string[]) {\n onCartReadySend({\n type: 'CARTLINE_REMOVE',\n payload: {\n lines,\n },\n });\n },\n linesUpdate(lines: CartLineUpdateInput[]) {\n onCartReadySend({\n type: 'CARTLINE_UPDATE',\n payload: {\n lines,\n },\n });\n },\n noteUpdate(note: MutationCartNoteUpdateArgs['note']) {\n onCartReadySend({\n type: 'NOTE_UPDATE',\n payload: {\n note,\n },\n });\n },\n buyerIdentityUpdate(buyerIdentity: CartBuyerIdentityInput) {\n onCartReadySend({\n type: 'BUYER_IDENTITY_UPDATE',\n payload: {\n buyerIdentity,\n },\n });\n },\n cartAttributesUpdate(attributes: AttributeInput[]) {\n onCartReadySend({\n type: 'CART_ATTRIBUTES_UPDATE',\n payload: {\n attributes,\n },\n });\n },\n discountCodesUpdate(discountCodes: string[]) {\n onCartReadySend({\n type: 'DISCOUNT_CODES_UPDATE',\n payload: {\n discountCodes,\n },\n });\n },\n cartFragment,\n };\n }, [\n cartCreate,\n cartDisplayState?.context?.cart,\n cartDisplayState?.context?.errors,\n cartDisplayState.value,\n cartFragment,\n onCartReadySend,\n ]);\n\n return (\n <CartContext.Provider value={cartContextValue}>\n {children}\n </CartContext.Provider>\n );\n}\n\nfunction transposeStatus(\n status: CartMachineTypeState['value']\n): CartWithActions['status'] {\n switch (status) {\n case 'uninitialized':\n case 'initializationError':\n return 'uninitialized';\n case 'idle':\n case 'cartCompleted':\n case 'error':\n return 'idle';\n case 'cartFetching':\n return 'fetching';\n case 'cartCreating':\n return 'creating';\n case 'cartLineAdding':\n case 'cartLineRemoving':\n case 'cartLineUpdating':\n case 'noteUpdating':\n case 'buyerIdentityUpdating':\n case 'cartAttributesUpdating':\n case 'discountCodesUpdating':\n return 'updating';\n }\n}\n\n/**\n * Delays a state update until hydration finishes. Useful for preventing suspense boundaries errors when updating a context\n * @remarks this uses startTransition and waits for it to finish.\n */\nfunction useDelayedStateUntilHydration<T>(state: T) {\n const [isPending, startTransition] = useTransition();\n const [delayedState, setDelayedState] = useState(state);\n\n const firstTimePending = useRef(false);\n if (isPending) {\n firstTimePending.current = true;\n }\n\n const firstTimePendingFinished = useRef(false);\n if (!isPending && firstTimePending.current) {\n firstTimePendingFinished.current = true;\n }\n\n useEffect(() => {\n startTransition(() => {\n if (!firstTimePendingFinished.current) {\n setDelayedState(state);\n }\n });\n }, [state]);\n\n const displayState = firstTimePendingFinished.current ? state : delayedState;\n\n return displayState;\n}\n\n/** Check for storage availability funciton obtained from\n * https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API\n */\nexport function storageAvailable(type: 'localStorage' | 'sessionStorage') {\n let storage;\n try {\n storage = window[type];\n const x = '__storage_test__';\n storage.setItem(x, x);\n storage.removeItem(x);\n return true;\n } catch (e) {\n return (\n e instanceof DOMException &&\n // everything except Firefox\n (e.code === 22 ||\n // Firefox\n e.code === 1014 ||\n // test name field too, because code might not be present\n // everything except Firefox\n e.name === 'QuotaExceededError' ||\n // Firefox\n e.name === 'NS_ERROR_DOM_QUOTA_REACHED') &&\n // acknowledge QuotaExceededError only if there's something already stored\n storage &&\n storage.length !== 0\n );\n }\n}\n\nfunction countryCodeNotUpdated(\n context: CartMachineContext,\n event: BuyerIdentityUpdateEvent\n) {\n return (\n event.payload.buyerIdentity.countryCode &&\n context.cart?.buyerIdentity?.countryCode !==\n event.payload.buyerIdentity.countryCode\n );\n}\n\nexport const defaultCartFragment = `\nfragment CartFragment on Cart {\n id\n checkoutUrl\n totalQuantity\n buyerIdentity {\n countryCode\n customer {\n id\n email\n firstName\n lastName\n displayName\n }\n email\n phone\n }\n lines(first: $numCartLines) {\n edges {\n node {\n id\n quantity\n attributes {\n key\n value\n }\n cost {\n totalAmount {\n amount\n currencyCode\n }\n compareAtAmountPerQuantity {\n amount\n currencyCode\n }\n }\n merchandise {\n ... on ProductVariant {\n id\n availableForSale\n compareAtPriceV2 {\n ...MoneyFragment\n }\n priceV2 {\n ...MoneyFragment\n }\n requiresShipping\n title\n image {\n ...ImageFragment\n }\n product {\n handle\n title\n }\n selectedOptions {\n name\n value\n }\n }\n }\n }\n }\n }\n cost {\n subtotalAmount {\n ...MoneyFragment\n }\n totalAmount {\n ...MoneyFragment\n }\n totalDutyAmount {\n ...MoneyFragment\n }\n totalTaxAmount {\n ...MoneyFragment\n }\n }\n note\n attributes {\n key\n value\n }\n discountCodes {\n code\n }\n}\n\nfragment MoneyFragment on MoneyV2 {\n currencyCode\n amount\n}\nfragment ImageFragment on Image {\n id\n url\n altText\n width\n height\n}\n`;\n"],"names":["CartContext","createContext","useCart","context","useContext","Error","CartProvider","children","numCartLines","onCreate","onLineAdd","onLineRemove","onLineUpdate","onNoteUpdate","onBuyerIdentityUpdate","onAttributesUpdate","onDiscountCodesUpdate","onCreateComplete","onLineAddComplete","onLineRemoveComplete","onLineUpdateComplete","onNoteUpdateComplete","onBuyerIdentityUpdateComplete","onAttributesUpdateComplete","onDiscountCodesUpdateComplete","data","cart","cartFragment","defaultCartFragment","customerAccessToken","countryCode","toUpperCase","prevCountryCode","setPrevCountryCode","useState","prevCustomerAccessToken","setPrevCustomerAccessToken","customerOverridesCountryCode","useRef","current","cartState","cartSend","useCartAPIStateMachine","onCartActionEntry","event","type","error","onCartActionOptimisticUI","undefined","lastValidCart","lines","filter","line","id","payload","includes","map","updatedLine","find","quantity","onCartActionComplete","cartActionEvent","countryCodeNotUpdated","cartReady","cartCompleted","matches","countryChanged","value","buyerIdentity","errors","fetchingFromStorage","useEffect","storageAvailable","cartId","window","localStorage","getItem","CART_ID_STORAGE_KEY","console","warn","onCartReadySend","useCallback","cartEvent","setItem","removeItem","cartCreate","cartInput","cartDisplayState","useDelayedStateUntilHydration","cartContextValue","useMemo","attributes","status","transposeStatus","totalQuantity","linesAdd","linesRemove","linesUpdate","noteUpdate","note","buyerIdentityUpdate","cartAttributesUpdate","discountCodesUpdate","discountCodes","_jsx","state","isPending","startTransition","useTransition","delayedState","setDelayedState","firstTimePending","firstTimePendingFinished","displayState","storage","x","e","DOMException","code","name","length"],"mappings":"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"}
@@ -1,4 +1,6 @@
1
- import { jsx } from "react/jsx-runtime";
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const jsxRuntime = require("react/jsx-runtime");
2
4
  function ExternalVideo(props) {
3
5
  var _a, _b;
4
6
  const {
@@ -22,7 +24,7 @@ function ExternalVideo(props) {
22
24
  }
23
25
  finalUrl = urlObject.toString();
24
26
  }
25
- return /* @__PURE__ */ jsx("iframe", {
27
+ return /* @__PURE__ */ jsxRuntime.jsx("iframe", {
26
28
  ...passthroughProps,
27
29
  id: id != null ? id : data.embedUrl,
28
30
  title: (_b = (_a = data.alt) != null ? _a : data.id) != null ? _b : "external video",
@@ -33,7 +35,5 @@ function ExternalVideo(props) {
33
35
  loading
34
36
  });
35
37
  }
36
- export {
37
- ExternalVideo
38
- };
38
+ exports.ExternalVideo = ExternalVideo;
39
39
  //# sourceMappingURL=ExternalVideo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalVideo.js","sources":["../../src/ExternalVideo.tsx"],"sourcesContent":["import type {ExternalVideo as ExternalVideoType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\ninterface BaseProps {\n /**\n * An object with fields that correspond to the Storefront API's [ExternalVideo object](https://shopify.dev/api/storefront/reference/products/externalvideo).\n */\n data: PartialDeep<ExternalVideoType, {recurseIntoArrays: true}>;\n /** An object containing the options available for either\n * [YouTube](https://developers.google.com/youtube/player_parameters#Parameters) or\n * [Vimeo](https://vimeo.zendesk.com/hc/en-us/articles/360001494447-Using-Player-Parameters).\n */\n options?: YouTube | Vimeo;\n}\n\ntype PropsWeControl = 'src';\n\nexport type ExternalVideoProps = Omit<\n JSX.IntrinsicElements['iframe'],\n PropsWeControl\n> &\n BaseProps;\n\n/**\n * The `ExternalVideo` component renders an embedded video for the Storefront\n * API's [ExternalVideo object](https://shopify.dev/api/storefront/reference/products/externalvideo).\n */\nexport function ExternalVideo(props: ExternalVideoProps) {\n const {\n data,\n options,\n id = data.id,\n frameBorder = '0',\n allow = 'accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture',\n allowFullScreen = true,\n loading = 'lazy',\n ...passthroughProps\n } = props;\n\n if (!data.embedUrl) {\n throw new Error(`<ExternalVideo/> requires the 'embedUrl' property`);\n }\n\n let finalUrl: string = data.embedUrl;\n\n if (options) {\n const urlObject = new URL(data.embedUrl);\n for (const key of Object.keys(options)) {\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/32951\n urlObject.searchParams.set(key, options[key]);\n }\n finalUrl = urlObject.toString();\n }\n\n return (\n <iframe\n {...passthroughProps}\n id={id ?? data.embedUrl}\n title={data.alt ?? data.id ?? 'external video'}\n frameBorder={frameBorder}\n allow={allow}\n allowFullScreen={allowFullScreen}\n src={finalUrl}\n loading={loading}\n ></iframe>\n );\n}\n\ninterface YouTube {\n autoplay?: 0 | 1;\n cc_lang_pref?: string;\n cc_load_policy?: 1;\n color?: 'red' | 'white';\n controls?: 0 | 1;\n disablekb?: 0 | 1;\n enablejsapi?: 0 | 1;\n end?: number;\n fs?: 0 | 1;\n hl?: string;\n iv_load_policy?: 1 | 3;\n list?: string;\n list_type?: 'playlist' | 'user_uploads';\n loop?: 0 | 1;\n modest_branding?: 1;\n origin?: string;\n playlist?: string;\n plays_inline?: 0 | 1;\n rel?: 0 | 1;\n start?: number;\n widget_referrer?: string;\n}\n\ntype VimeoBoolean = 0 | 1 | boolean;\n\ninterface Vimeo {\n autopause?: VimeoBoolean;\n autoplay?: VimeoBoolean;\n background?: VimeoBoolean;\n byline?: VimeoBoolean;\n color?: string;\n controls?: VimeoBoolean;\n dnt?: VimeoBoolean;\n loop?: VimeoBoolean;\n muted?: VimeoBoolean;\n pip?: VimeoBoolean;\n playsinline?: VimeoBoolean;\n portrait?: VimeoBoolean;\n quality?: '240p' | '360p' | '540p' | '720p' | '1080p' | '2k' | '4k';\n speed?: VimeoBoolean;\n '#t'?: string;\n texttrack?: string;\n title?: VimeoBoolean;\n transparent?: VimeoBoolean;\n}\n"],"names":["ExternalVideo","props","data","options","id","frameBorder","allow","allowFullScreen","loading","passthroughProps","embedUrl","Error","finalUrl","urlObject","URL","key","Object","keys","searchParams","set","toString","alt"],"mappings":";AA2BO,SAASA,cAAcC,OAA2B;;AACjD,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC,KAAKF,KAAKE;AAAAA,IACVC,cAAc;AAAA,IACdC,QAAQ;AAAA,IACRC,kBAAkB;AAAA,IAClBC,UAAU;AAAA,OACPC;AAAAA,EACDR,IAAAA;AAEA,MAAA,CAACC,KAAKQ,UAAU;AACZ,UAAA,IAAIC,MAAO,mDAAX;AAAA,EACP;AAED,MAAIC,WAAmBV,KAAKQ;AAE5B,MAAIP,SAAS;AACX,UAAMU,YAAY,IAAIC,IAAIZ,KAAKQ,QAAb;AAClB,eAAWK,OAAOC,OAAOC,KAAKd,OAAZ,GAAsB;AAEtCU,gBAAUK,aAAaC,IAAIJ,KAAKZ,QAAQY,IAAxC;AAAA,IACD;AACDH,eAAWC,UAAUO;EACtB;AAED;OAEQX;AAAAA,IACJ,IAAIL,kBAAMF,KAAKQ;AAAAA,IACf,QAAOR,gBAAKmB,QAALnB,YAAYA,KAAKE,OAAjBF,YAAuB;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAKU;AAAAA,IACL;AAAA,EAAA,CATJ;AAYD;"}
1
+ {"version":3,"file":"ExternalVideo.js","sources":["../../src/ExternalVideo.tsx"],"sourcesContent":["import type {ExternalVideo as ExternalVideoType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\ninterface BaseProps {\n /**\n * An object with fields that correspond to the Storefront API's [ExternalVideo object](https://shopify.dev/api/storefront/reference/products/externalvideo).\n */\n data: PartialDeep<ExternalVideoType, {recurseIntoArrays: true}>;\n /** An object containing the options available for either\n * [YouTube](https://developers.google.com/youtube/player_parameters#Parameters) or\n * [Vimeo](https://vimeo.zendesk.com/hc/en-us/articles/360001494447-Using-Player-Parameters).\n */\n options?: YouTube | Vimeo;\n}\n\ntype PropsWeControl = 'src';\n\nexport type ExternalVideoProps = Omit<\n JSX.IntrinsicElements['iframe'],\n PropsWeControl\n> &\n BaseProps;\n\n/**\n * The `ExternalVideo` component renders an embedded video for the Storefront\n * API's [ExternalVideo object](https://shopify.dev/api/storefront/reference/products/externalvideo).\n */\nexport function ExternalVideo(props: ExternalVideoProps) {\n const {\n data,\n options,\n id = data.id,\n frameBorder = '0',\n allow = 'accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture',\n allowFullScreen = true,\n loading = 'lazy',\n ...passthroughProps\n } = props;\n\n if (!data.embedUrl) {\n throw new Error(`<ExternalVideo/> requires the 'embedUrl' property`);\n }\n\n let finalUrl: string = data.embedUrl;\n\n if (options) {\n const urlObject = new URL(data.embedUrl);\n for (const key of Object.keys(options)) {\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/32951\n urlObject.searchParams.set(key, options[key]);\n }\n finalUrl = urlObject.toString();\n }\n\n return (\n <iframe\n {...passthroughProps}\n id={id ?? data.embedUrl}\n title={data.alt ?? data.id ?? 'external video'}\n frameBorder={frameBorder}\n allow={allow}\n allowFullScreen={allowFullScreen}\n src={finalUrl}\n loading={loading}\n ></iframe>\n );\n}\n\ninterface YouTube {\n autoplay?: 0 | 1;\n cc_lang_pref?: string;\n cc_load_policy?: 1;\n color?: 'red' | 'white';\n controls?: 0 | 1;\n disablekb?: 0 | 1;\n enablejsapi?: 0 | 1;\n end?: number;\n fs?: 0 | 1;\n hl?: string;\n iv_load_policy?: 1 | 3;\n list?: string;\n list_type?: 'playlist' | 'user_uploads';\n loop?: 0 | 1;\n modest_branding?: 1;\n origin?: string;\n playlist?: string;\n plays_inline?: 0 | 1;\n rel?: 0 | 1;\n start?: number;\n widget_referrer?: string;\n}\n\ntype VimeoBoolean = 0 | 1 | boolean;\n\ninterface Vimeo {\n autopause?: VimeoBoolean;\n autoplay?: VimeoBoolean;\n background?: VimeoBoolean;\n byline?: VimeoBoolean;\n color?: string;\n controls?: VimeoBoolean;\n dnt?: VimeoBoolean;\n loop?: VimeoBoolean;\n muted?: VimeoBoolean;\n pip?: VimeoBoolean;\n playsinline?: VimeoBoolean;\n portrait?: VimeoBoolean;\n quality?: '240p' | '360p' | '540p' | '720p' | '1080p' | '2k' | '4k';\n speed?: VimeoBoolean;\n '#t'?: string;\n texttrack?: string;\n title?: VimeoBoolean;\n transparent?: VimeoBoolean;\n}\n"],"names":["ExternalVideo","props","data","options","id","frameBorder","allow","allowFullScreen","loading","passthroughProps","embedUrl","Error","finalUrl","urlObject","URL","key","Object","keys","searchParams","set","toString","alt"],"mappings":";;;AA2BO,SAASA,cAAcC,OAA2B;;AACjD,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC,KAAKF,KAAKE;AAAAA,IACVC,cAAc;AAAA,IACdC,QAAQ;AAAA,IACRC,kBAAkB;AAAA,IAClBC,UAAU;AAAA,OACPC;AAAAA,EACDR,IAAAA;AAEA,MAAA,CAACC,KAAKQ,UAAU;AACZ,UAAA,IAAIC,MAAO,mDAAX;AAAA,EACP;AAED,MAAIC,WAAmBV,KAAKQ;AAE5B,MAAIP,SAAS;AACX,UAAMU,YAAY,IAAIC,IAAIZ,KAAKQ,QAAb;AAClB,eAAWK,OAAOC,OAAOC,KAAKd,OAAZ,GAAsB;AAEtCU,gBAAUK,aAAaC,IAAIJ,KAAKZ,QAAQY,IAAxC;AAAA,IACD;AACDH,eAAWC,UAAUO;EACtB;AAED;OAEQX;AAAAA,IACJ,IAAIL,kBAAMF,KAAKQ;AAAAA,IACf,QAAOR,gBAAKmB,QAALnB,YAAYA,KAAKE,OAAjBF,YAAuB;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAKU;AAAAA,IACL;AAAA,EAAA,CATJ;AAYD;;"}
@@ -1,6 +1,4 @@
1
- "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const jsxRuntime = require("react/jsx-runtime");
1
+ import { jsx } from "react/jsx-runtime";
4
2
  function ExternalVideo(props) {
5
3
  var _a, _b;
6
4
  const {
@@ -24,7 +22,7 @@ function ExternalVideo(props) {
24
22
  }
25
23
  finalUrl = urlObject.toString();
26
24
  }
27
- return /* @__PURE__ */ jsxRuntime.jsx("iframe", {
25
+ return /* @__PURE__ */ jsx("iframe", {
28
26
  ...passthroughProps,
29
27
  id: id != null ? id : data.embedUrl,
30
28
  title: (_b = (_a = data.alt) != null ? _a : data.id) != null ? _b : "external video",
@@ -35,5 +33,7 @@ function ExternalVideo(props) {
35
33
  loading
36
34
  });
37
35
  }
38
- exports.ExternalVideo = ExternalVideo;
39
- //# sourceMappingURL=ExternalVideo.cjs.map
36
+ export {
37
+ ExternalVideo
38
+ };
39
+ //# sourceMappingURL=ExternalVideo.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExternalVideo.mjs","sources":["../../src/ExternalVideo.tsx"],"sourcesContent":["import type {ExternalVideo as ExternalVideoType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\ninterface BaseProps {\n /**\n * An object with fields that correspond to the Storefront API's [ExternalVideo object](https://shopify.dev/api/storefront/reference/products/externalvideo).\n */\n data: PartialDeep<ExternalVideoType, {recurseIntoArrays: true}>;\n /** An object containing the options available for either\n * [YouTube](https://developers.google.com/youtube/player_parameters#Parameters) or\n * [Vimeo](https://vimeo.zendesk.com/hc/en-us/articles/360001494447-Using-Player-Parameters).\n */\n options?: YouTube | Vimeo;\n}\n\ntype PropsWeControl = 'src';\n\nexport type ExternalVideoProps = Omit<\n JSX.IntrinsicElements['iframe'],\n PropsWeControl\n> &\n BaseProps;\n\n/**\n * The `ExternalVideo` component renders an embedded video for the Storefront\n * API's [ExternalVideo object](https://shopify.dev/api/storefront/reference/products/externalvideo).\n */\nexport function ExternalVideo(props: ExternalVideoProps) {\n const {\n data,\n options,\n id = data.id,\n frameBorder = '0',\n allow = 'accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture',\n allowFullScreen = true,\n loading = 'lazy',\n ...passthroughProps\n } = props;\n\n if (!data.embedUrl) {\n throw new Error(`<ExternalVideo/> requires the 'embedUrl' property`);\n }\n\n let finalUrl: string = data.embedUrl;\n\n if (options) {\n const urlObject = new URL(data.embedUrl);\n for (const key of Object.keys(options)) {\n // @ts-expect-error https://github.com/microsoft/TypeScript/issues/32951\n urlObject.searchParams.set(key, options[key]);\n }\n finalUrl = urlObject.toString();\n }\n\n return (\n <iframe\n {...passthroughProps}\n id={id ?? data.embedUrl}\n title={data.alt ?? data.id ?? 'external video'}\n frameBorder={frameBorder}\n allow={allow}\n allowFullScreen={allowFullScreen}\n src={finalUrl}\n loading={loading}\n ></iframe>\n );\n}\n\ninterface YouTube {\n autoplay?: 0 | 1;\n cc_lang_pref?: string;\n cc_load_policy?: 1;\n color?: 'red' | 'white';\n controls?: 0 | 1;\n disablekb?: 0 | 1;\n enablejsapi?: 0 | 1;\n end?: number;\n fs?: 0 | 1;\n hl?: string;\n iv_load_policy?: 1 | 3;\n list?: string;\n list_type?: 'playlist' | 'user_uploads';\n loop?: 0 | 1;\n modest_branding?: 1;\n origin?: string;\n playlist?: string;\n plays_inline?: 0 | 1;\n rel?: 0 | 1;\n start?: number;\n widget_referrer?: string;\n}\n\ntype VimeoBoolean = 0 | 1 | boolean;\n\ninterface Vimeo {\n autopause?: VimeoBoolean;\n autoplay?: VimeoBoolean;\n background?: VimeoBoolean;\n byline?: VimeoBoolean;\n color?: string;\n controls?: VimeoBoolean;\n dnt?: VimeoBoolean;\n loop?: VimeoBoolean;\n muted?: VimeoBoolean;\n pip?: VimeoBoolean;\n playsinline?: VimeoBoolean;\n portrait?: VimeoBoolean;\n quality?: '240p' | '360p' | '540p' | '720p' | '1080p' | '2k' | '4k';\n speed?: VimeoBoolean;\n '#t'?: string;\n texttrack?: string;\n title?: VimeoBoolean;\n transparent?: VimeoBoolean;\n}\n"],"names":["ExternalVideo","props","data","options","id","frameBorder","allow","allowFullScreen","loading","passthroughProps","embedUrl","Error","finalUrl","urlObject","URL","key","Object","keys","searchParams","set","toString","alt"],"mappings":";AA2BO,SAASA,cAAcC,OAA2B;;AACjD,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC,KAAKF,KAAKE;AAAAA,IACVC,cAAc;AAAA,IACdC,QAAQ;AAAA,IACRC,kBAAkB;AAAA,IAClBC,UAAU;AAAA,OACPC;AAAAA,EACDR,IAAAA;AAEA,MAAA,CAACC,KAAKQ,UAAU;AACZ,UAAA,IAAIC,MAAO,mDAAX;AAAA,EACP;AAED,MAAIC,WAAmBV,KAAKQ;AAE5B,MAAIP,SAAS;AACX,UAAMU,YAAY,IAAIC,IAAIZ,KAAKQ,QAAb;AAClB,eAAWK,OAAOC,OAAOC,KAAKd,OAAZ,GAAsB;AAEtCU,gBAAUK,aAAaC,IAAIJ,KAAKZ,QAAQY,IAAxC;AAAA,IACD;AACDH,eAAWC,UAAUO;EACtB;AAED;OAEQX;AAAAA,IACJ,IAAIL,kBAAMF,KAAKQ;AAAAA,IACf,QAAOR,gBAAKmB,QAALnB,YAAYA,KAAKE,OAAjBF,YAAuB;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,IACA,KAAKU;AAAAA,IACL;AAAA,EAAA,CATJ;AAYD;"}
@@ -1,11 +1,13 @@
1
- import { getShopifyImageDimensions, shopifyImageLoader, IMG_SRC_SET_SIZES, addImageSizeParametersToUrl } from "./image-size.js";
2
- import { jsx } from "react/jsx-runtime";
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const imageSize = require("./image-size.js");
4
+ const jsxRuntime = require("react/jsx-runtime");
3
5
  function Image({
4
6
  data,
5
7
  width,
6
8
  height,
7
9
  loading,
8
- loader = shopifyImageLoader,
10
+ loader = imageSize.shopifyImageLoader,
9
11
  loaderOptions,
10
12
  widths,
11
13
  decoding = "async",
@@ -22,7 +24,7 @@ function Image({
22
24
  const {
23
25
  width: imgElementWidth,
24
26
  height: imgElementHeight
25
- } = getShopifyImageDimensions({
27
+ } = imageSize.getShopifyImageDimensions({
26
28
  data,
27
29
  loaderOptions,
28
30
  elementProps: {
@@ -51,7 +53,7 @@ function Image({
51
53
  height: imgElementHeight,
52
54
  loader
53
55
  });
54
- return /* @__PURE__ */ jsx("img", {
56
+ return /* @__PURE__ */ jsxRuntime.jsx("img", {
55
57
  id: (_d = data.id) != null ? _d : "",
56
58
  alt: (_f = (_e = data.altText) != null ? _e : rest.alt) != null ? _f : "",
57
59
  loading: loading != null ? loading : "lazy",
@@ -80,11 +82,11 @@ function internalImageSrcSet({
80
82
  if (width && height) {
81
83
  aspectRatio = Number(height) / Number(width);
82
84
  }
83
- let setSizes = hasCustomWidths ? widths : IMG_SRC_SET_SIZES;
84
- if (!hasCustomWidths && width && width < IMG_SRC_SET_SIZES[IMG_SRC_SET_SIZES.length - 1]) {
85
- setSizes = IMG_SRC_SET_SIZES.filter((size) => size <= width);
85
+ let setSizes = hasCustomWidths ? widths : imageSize.IMG_SRC_SET_SIZES;
86
+ if (!hasCustomWidths && width && width < imageSize.IMG_SRC_SET_SIZES[imageSize.IMG_SRC_SET_SIZES.length - 1]) {
87
+ setSizes = imageSize.IMG_SRC_SET_SIZES.filter((size) => size <= width);
86
88
  }
87
- const srcGenerator = loader ? loader : addImageSizeParametersToUrl;
89
+ const srcGenerator = loader ? loader : imageSize.addImageSizeParametersToUrl;
88
90
  return setSizes.map((size) => `${srcGenerator({
89
91
  src,
90
92
  width: size,
@@ -93,7 +95,5 @@ function internalImageSrcSet({
93
95
  scale
94
96
  })} ${size}w`).join(", ");
95
97
  }
96
- export {
97
- Image
98
- };
98
+ exports.Image = Image;
99
99
  //# sourceMappingURL=Image.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Image.js","sources":["../../src/Image.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n getShopifyImageDimensions,\n shopifyImageLoader,\n addImageSizeParametersToUrl,\n IMG_SRC_SET_SIZES,\n} from './image-size.js';\nimport type {Image as ImageType} from './storefront-api-types.js';\nimport type {PartialDeep, Simplify} from 'type-fest';\n\ntype HtmlImageProps = React.ImgHTMLAttributes<HTMLImageElement>;\n\nexport type ShopifyLoaderOptions = {\n crop?: 'top' | 'bottom' | 'left' | 'right' | 'center';\n scale?: 2 | 3;\n width?: HtmlImageProps['width'] | ImageType['width'];\n height?: HtmlImageProps['height'] | ImageType['height'];\n};\nexport type ShopifyLoaderParams = Simplify<\n ShopifyLoaderOptions & {\n src: ImageType['url'];\n }\n>;\nexport type ShopifyImageProps = Omit<HtmlImageProps, 'src'> & {\n /** An object with fields that correspond to the Storefront API's\n * [Image object](https://shopify.dev/api/storefront/reference/common-objects/image).\n * The `data` prop is required.\n */\n data: PartialDeep<ImageType, {recurseIntoArrays: true}>;\n /** A custom function that generates the image URL. Parameters passed in\n * are `ShopifyLoaderParams`\n */\n loader?: (params: ShopifyLoaderParams) => string;\n /** An object of `loader` function options. For example, if the `loader` function\n * requires a `scale` option, then the value can be a property of the\n * `loaderOptions` object (for example, `{scale: 2}`). The object shape is `ShopifyLoaderOptions`.\n */\n loaderOptions?: ShopifyLoaderOptions;\n /**\n * `src` isn't used, and should instead be passed as part of the `data` object\n */\n src?: never;\n /**\n * An array of pixel widths to overwrite the default generated srcset. For example, `[300, 600, 800]`.\n */\n widths?: (HtmlImageProps['width'] | ImageType['width'])[];\n};\n\n/**\n * The `Image` component renders an image for the Storefront API's\n * [Image object](https://shopify.dev/api/storefront/reference/common-objects/image) by using the `data` prop. You can [customize this component](https://shopify.dev/api/hydrogen/components#customizing-hydrogen-components) using passthrough props.\n *\n * An image's width and height are determined using the following priority list:\n * 1. The width and height values for the `loaderOptions` prop\n * 2. The width and height values for bare props\n * 3. The width and height values for the `data` prop\n *\n * If only one of `width` or `height` are defined, then the other will attempt to be calculated based on the image's aspect ratio,\n * provided that both `data.width` and `data.height` are available. If `data.width` and `data.height` aren't available, then the aspect ratio cannot be determined and the missing\n * value will remain as `null`\n */\nexport function Image({\n data,\n width,\n height,\n loading,\n loader = shopifyImageLoader,\n loaderOptions,\n widths,\n decoding = 'async',\n ...rest\n}: ShopifyImageProps) {\n if (!data.url) {\n const missingUrlError = `<Image/>: the 'data' prop requires the 'url' property. Image: ${\n data.id ?? 'no ID provided'\n }`;\n\n if (__HYDROGEN_DEV__) {\n throw new Error(missingUrlError);\n } else {\n console.error(missingUrlError);\n }\n\n return null;\n }\n\n if (__HYDROGEN_DEV__ && !data.altText && !rest.alt) {\n console.warn(\n `<Image/>: the 'data' prop should have the 'altText' property, or the 'alt' prop, and one of them should not be empty. Image: ${\n data.id ?? data.url\n }`\n );\n }\n\n const {width: imgElementWidth, height: imgElementHeight} =\n getShopifyImageDimensions({\n data,\n loaderOptions,\n elementProps: {\n width,\n height,\n },\n });\n\n if (__HYDROGEN_DEV__ && (!imgElementWidth || !imgElementHeight)) {\n console.warn(\n `<Image/>: the 'data' prop requires either 'width' or 'data.width', and 'height' or 'data.height' properties. Image: ${\n data.id ?? data.url\n }`\n );\n }\n\n let finalSrc = data.url;\n\n if (loader) {\n finalSrc = loader({\n ...loaderOptions,\n src: data.url,\n width: imgElementWidth,\n height: imgElementHeight,\n });\n if (typeof finalSrc !== 'string' || !finalSrc) {\n throw new Error(\n `<Image/>: 'loader' did not return a valid string. Image: ${\n data.id ?? data.url\n }`\n );\n }\n }\n\n // determining what the intended width of the image is. For example, if the width is specified and lower than the image width, then that is the maximum image width\n // to prevent generating a srcset with widths bigger than needed or to generate images that would distort because of being larger than original\n const maxWidth =\n width && imgElementWidth && width < imgElementWidth\n ? width\n : imgElementWidth;\n const finalSrcset =\n rest.srcSet ??\n internalImageSrcSet({\n ...loaderOptions,\n widths,\n src: data.url,\n width: maxWidth,\n height: imgElementHeight,\n loader,\n });\n\n /* eslint-disable hydrogen/prefer-image-component */\n return (\n <img\n id={data.id ?? ''}\n alt={data.altText ?? rest.alt ?? ''}\n loading={loading ?? 'lazy'}\n {...rest}\n src={finalSrc}\n width={imgElementWidth ?? undefined}\n height={imgElementHeight ?? undefined}\n srcSet={finalSrcset}\n decoding={decoding}\n />\n );\n /* eslint-enable hydrogen/prefer-image-component */\n}\n\ntype InternalShopifySrcSetGeneratorsParams = Simplify<\n ShopifyLoaderOptions & {\n src: ImageType['url'];\n widths?: (HtmlImageProps['width'] | ImageType['width'])[];\n loader?: (params: ShopifyLoaderParams) => string;\n }\n>;\nfunction internalImageSrcSet({\n src,\n width,\n crop,\n scale,\n widths,\n loader,\n height,\n}: InternalShopifySrcSetGeneratorsParams) {\n const hasCustomWidths = widths && Array.isArray(widths);\n if (hasCustomWidths && widths.some((size) => isNaN(size as number))) {\n throw new Error(\n `<Image/>: the 'widths' must be an array of numbers. Image: ${src}`\n );\n }\n\n let aspectRatio = 1;\n if (width && height) {\n aspectRatio = Number(height) / Number(width);\n }\n\n let setSizes = hasCustomWidths ? widths : IMG_SRC_SET_SIZES;\n if (\n !hasCustomWidths &&\n width &&\n width < IMG_SRC_SET_SIZES[IMG_SRC_SET_SIZES.length - 1]\n ) {\n setSizes = IMG_SRC_SET_SIZES.filter((size) => size <= width);\n }\n const srcGenerator = loader ? loader : addImageSizeParametersToUrl;\n return setSizes\n .map(\n (size) =>\n `${srcGenerator({\n src,\n width: size,\n // height is not applied if there is no crop\n // if there is crop, then height is applied as a ratio of the original width + height aspect ratio * size\n height: crop ? Number(size) * aspectRatio : undefined,\n crop,\n scale,\n })} ${size}w`\n )\n .join(', ');\n}\n"],"names":["Image","data","width","height","loading","loader","shopifyImageLoader","loaderOptions","widths","decoding","rest","url","missingUrlError","id","console","error","imgElementWidth","imgElementHeight","getShopifyImageDimensions","elementProps","finalSrc","src","Error","maxWidth","finalSrcset","srcSet","internalImageSrcSet","altText","alt","undefined","crop","scale","hasCustomWidths","Array","isArray","some","size","isNaN","aspectRatio","Number","setSizes","IMG_SRC_SET_SIZES","length","filter","srcGenerator","addImageSizeParametersToUrl","map","join"],"mappings":";;AA6DO,SAASA,MAAM;AAAA,EACpBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,SAASC;AAAAA,EACTC;AAAAA,EACAC;AAAAA,EACAC,WAAW;AAAA,KACRC;AATiB,GAUA;;AAChB,MAAA,CAACT,KAAKU,KAAK;AACPC,UAAAA,kBAAmB,kEACvBX,UAAKY,OAALZ,YAAW;AAKN;AACLa,cAAQC,MAAMH,eAAd;AAAA,IACD;AAEM,WAAA;AAAA,EACR;AAUK,QAAA;AAAA,IAACV,OAAOc;AAAAA,IAAiBb,QAAQc;AAAAA,MACrCC,0BAA0B;AAAA,IACxBjB;AAAAA,IACAM;AAAAA,IACAY,cAAc;AAAA,MACZjB;AAAAA,MACAC;AAAAA,IAFY;AAAA,EAAA,CAHS;AAiB3B,MAAIiB,WAAWnB,KAAKU;AAEpB,MAAIN,QAAQ;AACVe,eAAWf,OAAO;AAAA,MAChB,GAAGE;AAAAA,MACHc,KAAKpB,KAAKU;AAAAA,MACVT,OAAOc;AAAAA,MACPb,QAAQc;AAAAA,IAAAA,CAJO;AAMjB,QAAI,OAAOG,aAAa,YAAY,CAACA,UAAU;AAC7C,YAAM,IAAIE,MACP,6DACCrB,UAAKY,OAALZ,YAAWA,KAAKU,KAFd;AAAA,IAKP;AAAA,EACF;AAID,QAAMY,WACJrB,SAASc,mBAAmBd,QAAQc,kBAChCd,QACAc;AACAQ,QAAAA,eACJd,UAAKe,WAALf,YACAgB,oBAAoB;AAAA,IAClB,GAAGnB;AAAAA,IACHC;AAAAA,IACAa,KAAKpB,KAAKU;AAAAA,IACVT,OAAOqB;AAAAA,IACPpB,QAAQc;AAAAA,IACRZ;AAAAA,EAAAA,CANiB;AAUrB,6BACE,OAAA;AAAA,IACE,KAAIJ,UAAKY,OAALZ,YAAW;AAAA,IACf,MAAKA,gBAAK0B,YAAL1B,YAAgBS,KAAKkB,QAArB3B,YAA4B;AAAA,IACjC,SAASG,4BAAW;AAAA,IAHtB,GAIMM;AAAAA,IACJ,KAAKU;AAAAA,IACL,OAAOJ,4CAAmBa;AAAAA,IAC1B,QAAQZ,8CAAoBY;AAAAA,IAC5B,QAAQL;AAAAA,IACR;AAAA,EAAA,CAVJ;AAcD;AASD,SAASE,oBAAoB;AAAA,EAC3BL;AAAAA,EACAnB;AAAAA,EACA4B;AAAAA,EACAC;AAAAA,EACAvB;AAAAA,EACAH;AAAAA,EACAF;AAP2B,GAQa;AACxC,QAAM6B,kBAAkBxB,UAAUyB,MAAMC,QAAQ1B,MAAd;AAClC,MAAIwB,mBAAmBxB,OAAO2B,KAAMC,UAASC,MAAMD,IAAD,CAA3B,GAA8C;AAC7D,UAAA,IAAId,MACP,8DAA6DD,KAD1D;AAAA,EAGP;AAED,MAAIiB,cAAc;AAClB,MAAIpC,SAASC,QAAQ;AACnBmC,kBAAcC,OAAOpC,MAAD,IAAWoC,OAAOrC,KAAD;AAAA,EACtC;AAEGsC,MAAAA,WAAWR,kBAAkBxB,SAASiC;AAC1C,MACE,CAACT,mBACD9B,SACAA,QAAQuC,kBAAkBA,kBAAkBC,SAAS,IACrD;AACAF,eAAWC,kBAAkBE,OAAQP,CAASA,SAAAA,QAAQlC,KAA3C;AAAA,EACZ;AACK0C,QAAAA,eAAevC,SAASA,SAASwC;AACvC,SAAOL,SACJM,IACEV,CACE,SAAA,GAAEQ,aAAa;AAAA,IACdvB;AAAAA,IACAnB,OAAOkC;AAAAA,IAGPjC,QAAQ2B,OAAOS,OAAOH,IAAD,IAASE,cAAcT;AAAAA,IAC5CC;AAAAA,IACAC;AAAAA,EAAAA,CAPa,KAQTK,OAXL,EAaJW,KAAK,IAbD;AAcR;"}
1
+ {"version":3,"file":"Image.js","sources":["../../src/Image.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n getShopifyImageDimensions,\n shopifyImageLoader,\n addImageSizeParametersToUrl,\n IMG_SRC_SET_SIZES,\n} from './image-size.js';\nimport type {Image as ImageType} from './storefront-api-types.js';\nimport type {PartialDeep, Simplify} from 'type-fest';\n\ntype HtmlImageProps = React.ImgHTMLAttributes<HTMLImageElement>;\n\nexport type ShopifyLoaderOptions = {\n crop?: 'top' | 'bottom' | 'left' | 'right' | 'center';\n scale?: 2 | 3;\n width?: HtmlImageProps['width'] | ImageType['width'];\n height?: HtmlImageProps['height'] | ImageType['height'];\n};\nexport type ShopifyLoaderParams = Simplify<\n ShopifyLoaderOptions & {\n src: ImageType['url'];\n }\n>;\nexport type ShopifyImageProps = Omit<HtmlImageProps, 'src'> & {\n /** An object with fields that correspond to the Storefront API's\n * [Image object](https://shopify.dev/api/storefront/reference/common-objects/image).\n * The `data` prop is required.\n */\n data: PartialDeep<ImageType, {recurseIntoArrays: true}>;\n /** A custom function that generates the image URL. Parameters passed in\n * are `ShopifyLoaderParams`\n */\n loader?: (params: ShopifyLoaderParams) => string;\n /** An object of `loader` function options. For example, if the `loader` function\n * requires a `scale` option, then the value can be a property of the\n * `loaderOptions` object (for example, `{scale: 2}`). The object shape is `ShopifyLoaderOptions`.\n */\n loaderOptions?: ShopifyLoaderOptions;\n /**\n * `src` isn't used, and should instead be passed as part of the `data` object\n */\n src?: never;\n /**\n * An array of pixel widths to overwrite the default generated srcset. For example, `[300, 600, 800]`.\n */\n widths?: (HtmlImageProps['width'] | ImageType['width'])[];\n};\n\n/**\n * The `Image` component renders an image for the Storefront API's\n * [Image object](https://shopify.dev/api/storefront/reference/common-objects/image) by using the `data` prop. You can [customize this component](https://shopify.dev/api/hydrogen/components#customizing-hydrogen-components) using passthrough props.\n *\n * An image's width and height are determined using the following priority list:\n * 1. The width and height values for the `loaderOptions` prop\n * 2. The width and height values for bare props\n * 3. The width and height values for the `data` prop\n *\n * If only one of `width` or `height` are defined, then the other will attempt to be calculated based on the image's aspect ratio,\n * provided that both `data.width` and `data.height` are available. If `data.width` and `data.height` aren't available, then the aspect ratio cannot be determined and the missing\n * value will remain as `null`\n */\nexport function Image({\n data,\n width,\n height,\n loading,\n loader = shopifyImageLoader,\n loaderOptions,\n widths,\n decoding = 'async',\n ...rest\n}: ShopifyImageProps) {\n if (!data.url) {\n const missingUrlError = `<Image/>: the 'data' prop requires the 'url' property. Image: ${\n data.id ?? 'no ID provided'\n }`;\n\n if (__HYDROGEN_DEV__) {\n throw new Error(missingUrlError);\n } else {\n console.error(missingUrlError);\n }\n\n return null;\n }\n\n if (__HYDROGEN_DEV__ && !data.altText && !rest.alt) {\n console.warn(\n `<Image/>: the 'data' prop should have the 'altText' property, or the 'alt' prop, and one of them should not be empty. Image: ${\n data.id ?? data.url\n }`\n );\n }\n\n const {width: imgElementWidth, height: imgElementHeight} =\n getShopifyImageDimensions({\n data,\n loaderOptions,\n elementProps: {\n width,\n height,\n },\n });\n\n if (__HYDROGEN_DEV__ && (!imgElementWidth || !imgElementHeight)) {\n console.warn(\n `<Image/>: the 'data' prop requires either 'width' or 'data.width', and 'height' or 'data.height' properties. Image: ${\n data.id ?? data.url\n }`\n );\n }\n\n let finalSrc = data.url;\n\n if (loader) {\n finalSrc = loader({\n ...loaderOptions,\n src: data.url,\n width: imgElementWidth,\n height: imgElementHeight,\n });\n if (typeof finalSrc !== 'string' || !finalSrc) {\n throw new Error(\n `<Image/>: 'loader' did not return a valid string. Image: ${\n data.id ?? data.url\n }`\n );\n }\n }\n\n // determining what the intended width of the image is. For example, if the width is specified and lower than the image width, then that is the maximum image width\n // to prevent generating a srcset with widths bigger than needed or to generate images that would distort because of being larger than original\n const maxWidth =\n width && imgElementWidth && width < imgElementWidth\n ? width\n : imgElementWidth;\n const finalSrcset =\n rest.srcSet ??\n internalImageSrcSet({\n ...loaderOptions,\n widths,\n src: data.url,\n width: maxWidth,\n height: imgElementHeight,\n loader,\n });\n\n /* eslint-disable hydrogen/prefer-image-component */\n return (\n <img\n id={data.id ?? ''}\n alt={data.altText ?? rest.alt ?? ''}\n loading={loading ?? 'lazy'}\n {...rest}\n src={finalSrc}\n width={imgElementWidth ?? undefined}\n height={imgElementHeight ?? undefined}\n srcSet={finalSrcset}\n decoding={decoding}\n />\n );\n /* eslint-enable hydrogen/prefer-image-component */\n}\n\ntype InternalShopifySrcSetGeneratorsParams = Simplify<\n ShopifyLoaderOptions & {\n src: ImageType['url'];\n widths?: (HtmlImageProps['width'] | ImageType['width'])[];\n loader?: (params: ShopifyLoaderParams) => string;\n }\n>;\nfunction internalImageSrcSet({\n src,\n width,\n crop,\n scale,\n widths,\n loader,\n height,\n}: InternalShopifySrcSetGeneratorsParams) {\n const hasCustomWidths = widths && Array.isArray(widths);\n if (hasCustomWidths && widths.some((size) => isNaN(size as number))) {\n throw new Error(\n `<Image/>: the 'widths' must be an array of numbers. Image: ${src}`\n );\n }\n\n let aspectRatio = 1;\n if (width && height) {\n aspectRatio = Number(height) / Number(width);\n }\n\n let setSizes = hasCustomWidths ? widths : IMG_SRC_SET_SIZES;\n if (\n !hasCustomWidths &&\n width &&\n width < IMG_SRC_SET_SIZES[IMG_SRC_SET_SIZES.length - 1]\n ) {\n setSizes = IMG_SRC_SET_SIZES.filter((size) => size <= width);\n }\n const srcGenerator = loader ? loader : addImageSizeParametersToUrl;\n return setSizes\n .map(\n (size) =>\n `${srcGenerator({\n src,\n width: size,\n // height is not applied if there is no crop\n // if there is crop, then height is applied as a ratio of the original width + height aspect ratio * size\n height: crop ? Number(size) * aspectRatio : undefined,\n crop,\n scale,\n })} ${size}w`\n )\n .join(', ');\n}\n"],"names":["Image","data","width","height","loading","loader","shopifyImageLoader","loaderOptions","widths","decoding","rest","url","missingUrlError","id","console","error","imgElementWidth","imgElementHeight","getShopifyImageDimensions","elementProps","finalSrc","src","Error","maxWidth","finalSrcset","srcSet","internalImageSrcSet","altText","alt","undefined","crop","scale","hasCustomWidths","Array","isArray","some","size","isNaN","aspectRatio","Number","setSizes","IMG_SRC_SET_SIZES","length","filter","srcGenerator","addImageSizeParametersToUrl","map","join"],"mappings":";;;;AA6DO,SAASA,MAAM;AAAA,EACpBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,SAASC,UAAAA;AAAAA,EACTC;AAAAA,EACAC;AAAAA,EACAC,WAAW;AAAA,KACRC;AATiB,GAUA;;AAChB,MAAA,CAACT,KAAKU,KAAK;AACPC,UAAAA,kBAAmB,kEACvBX,UAAKY,OAALZ,YAAW;AAKN;AACLa,cAAQC,MAAMH,eAAd;AAAA,IACD;AAEM,WAAA;AAAA,EACR;AAUK,QAAA;AAAA,IAACV,OAAOc;AAAAA,IAAiBb,QAAQc;AAAAA,MACrCC,oCAA0B;AAAA,IACxBjB;AAAAA,IACAM;AAAAA,IACAY,cAAc;AAAA,MACZjB;AAAAA,MACAC;AAAAA,IAFY;AAAA,EAAA,CAHS;AAiB3B,MAAIiB,WAAWnB,KAAKU;AAEpB,MAAIN,QAAQ;AACVe,eAAWf,OAAO;AAAA,MAChB,GAAGE;AAAAA,MACHc,KAAKpB,KAAKU;AAAAA,MACVT,OAAOc;AAAAA,MACPb,QAAQc;AAAAA,IAAAA,CAJO;AAMjB,QAAI,OAAOG,aAAa,YAAY,CAACA,UAAU;AAC7C,YAAM,IAAIE,MACP,6DACCrB,UAAKY,OAALZ,YAAWA,KAAKU,KAFd;AAAA,IAKP;AAAA,EACF;AAID,QAAMY,WACJrB,SAASc,mBAAmBd,QAAQc,kBAChCd,QACAc;AACAQ,QAAAA,eACJd,UAAKe,WAALf,YACAgB,oBAAoB;AAAA,IAClB,GAAGnB;AAAAA,IACHC;AAAAA,IACAa,KAAKpB,KAAKU;AAAAA,IACVT,OAAOqB;AAAAA,IACPpB,QAAQc;AAAAA,IACRZ;AAAAA,EAAAA,CANiB;AAUrB,wCACE,OAAA;AAAA,IACE,KAAIJ,UAAKY,OAALZ,YAAW;AAAA,IACf,MAAKA,gBAAK0B,YAAL1B,YAAgBS,KAAKkB,QAArB3B,YAA4B;AAAA,IACjC,SAASG,4BAAW;AAAA,IAHtB,GAIMM;AAAAA,IACJ,KAAKU;AAAAA,IACL,OAAOJ,4CAAmBa;AAAAA,IAC1B,QAAQZ,8CAAoBY;AAAAA,IAC5B,QAAQL;AAAAA,IACR;AAAA,EAAA,CAVJ;AAcD;AASD,SAASE,oBAAoB;AAAA,EAC3BL;AAAAA,EACAnB;AAAAA,EACA4B;AAAAA,EACAC;AAAAA,EACAvB;AAAAA,EACAH;AAAAA,EACAF;AAP2B,GAQa;AACxC,QAAM6B,kBAAkBxB,UAAUyB,MAAMC,QAAQ1B,MAAd;AAClC,MAAIwB,mBAAmBxB,OAAO2B,KAAMC,UAASC,MAAMD,IAAD,CAA3B,GAA8C;AAC7D,UAAA,IAAId,MACP,8DAA6DD,KAD1D;AAAA,EAGP;AAED,MAAIiB,cAAc;AAClB,MAAIpC,SAASC,QAAQ;AACnBmC,kBAAcC,OAAOpC,MAAD,IAAWoC,OAAOrC,KAAD;AAAA,EACtC;AAEGsC,MAAAA,WAAWR,kBAAkBxB,SAASiC;AAC1C,MACE,CAACT,mBACD9B,SACAA,QAAQuC,UAAkBA,kBAAAA,4BAAkBC,SAAS,IACrD;AACAF,eAAWC,UAAkBE,kBAAAA,OAAQP,CAASA,SAAAA,QAAQlC,KAA3C;AAAA,EACZ;AACK0C,QAAAA,eAAevC,SAASA,SAASwC;AACvC,SAAOL,SACJM,IACEV,CACE,SAAA,GAAEQ,aAAa;AAAA,IACdvB;AAAAA,IACAnB,OAAOkC;AAAAA,IAGPjC,QAAQ2B,OAAOS,OAAOH,IAAD,IAASE,cAAcT;AAAAA,IAC5CC;AAAAA,IACAC;AAAAA,EAAAA,CAPa,KAQTK,OAXL,EAaJW,KAAK,IAbD;AAcR;;"}
@@ -1,13 +1,11 @@
1
- "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const imageSize = require("./image-size.cjs");
4
- const jsxRuntime = require("react/jsx-runtime");
1
+ import { getShopifyImageDimensions, shopifyImageLoader, IMG_SRC_SET_SIZES, addImageSizeParametersToUrl } from "./image-size.mjs";
2
+ import { jsx } from "react/jsx-runtime";
5
3
  function Image({
6
4
  data,
7
5
  width,
8
6
  height,
9
7
  loading,
10
- loader = imageSize.shopifyImageLoader,
8
+ loader = shopifyImageLoader,
11
9
  loaderOptions,
12
10
  widths,
13
11
  decoding = "async",
@@ -24,7 +22,7 @@ function Image({
24
22
  const {
25
23
  width: imgElementWidth,
26
24
  height: imgElementHeight
27
- } = imageSize.getShopifyImageDimensions({
25
+ } = getShopifyImageDimensions({
28
26
  data,
29
27
  loaderOptions,
30
28
  elementProps: {
@@ -53,7 +51,7 @@ function Image({
53
51
  height: imgElementHeight,
54
52
  loader
55
53
  });
56
- return /* @__PURE__ */ jsxRuntime.jsx("img", {
54
+ return /* @__PURE__ */ jsx("img", {
57
55
  id: (_d = data.id) != null ? _d : "",
58
56
  alt: (_f = (_e = data.altText) != null ? _e : rest.alt) != null ? _f : "",
59
57
  loading: loading != null ? loading : "lazy",
@@ -82,11 +80,11 @@ function internalImageSrcSet({
82
80
  if (width && height) {
83
81
  aspectRatio = Number(height) / Number(width);
84
82
  }
85
- let setSizes = hasCustomWidths ? widths : imageSize.IMG_SRC_SET_SIZES;
86
- if (!hasCustomWidths && width && width < imageSize.IMG_SRC_SET_SIZES[imageSize.IMG_SRC_SET_SIZES.length - 1]) {
87
- setSizes = imageSize.IMG_SRC_SET_SIZES.filter((size) => size <= width);
83
+ let setSizes = hasCustomWidths ? widths : IMG_SRC_SET_SIZES;
84
+ if (!hasCustomWidths && width && width < IMG_SRC_SET_SIZES[IMG_SRC_SET_SIZES.length - 1]) {
85
+ setSizes = IMG_SRC_SET_SIZES.filter((size) => size <= width);
88
86
  }
89
- const srcGenerator = loader ? loader : imageSize.addImageSizeParametersToUrl;
87
+ const srcGenerator = loader ? loader : addImageSizeParametersToUrl;
90
88
  return setSizes.map((size) => `${srcGenerator({
91
89
  src,
92
90
  width: size,
@@ -95,5 +93,7 @@ function internalImageSrcSet({
95
93
  scale
96
94
  })} ${size}w`).join(", ");
97
95
  }
98
- exports.Image = Image;
99
- //# sourceMappingURL=Image.cjs.map
96
+ export {
97
+ Image
98
+ };
99
+ //# sourceMappingURL=Image.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Image.mjs","sources":["../../src/Image.tsx"],"sourcesContent":["import * as React from 'react';\nimport {\n getShopifyImageDimensions,\n shopifyImageLoader,\n addImageSizeParametersToUrl,\n IMG_SRC_SET_SIZES,\n} from './image-size.js';\nimport type {Image as ImageType} from './storefront-api-types.js';\nimport type {PartialDeep, Simplify} from 'type-fest';\n\ntype HtmlImageProps = React.ImgHTMLAttributes<HTMLImageElement>;\n\nexport type ShopifyLoaderOptions = {\n crop?: 'top' | 'bottom' | 'left' | 'right' | 'center';\n scale?: 2 | 3;\n width?: HtmlImageProps['width'] | ImageType['width'];\n height?: HtmlImageProps['height'] | ImageType['height'];\n};\nexport type ShopifyLoaderParams = Simplify<\n ShopifyLoaderOptions & {\n src: ImageType['url'];\n }\n>;\nexport type ShopifyImageProps = Omit<HtmlImageProps, 'src'> & {\n /** An object with fields that correspond to the Storefront API's\n * [Image object](https://shopify.dev/api/storefront/reference/common-objects/image).\n * The `data` prop is required.\n */\n data: PartialDeep<ImageType, {recurseIntoArrays: true}>;\n /** A custom function that generates the image URL. Parameters passed in\n * are `ShopifyLoaderParams`\n */\n loader?: (params: ShopifyLoaderParams) => string;\n /** An object of `loader` function options. For example, if the `loader` function\n * requires a `scale` option, then the value can be a property of the\n * `loaderOptions` object (for example, `{scale: 2}`). The object shape is `ShopifyLoaderOptions`.\n */\n loaderOptions?: ShopifyLoaderOptions;\n /**\n * `src` isn't used, and should instead be passed as part of the `data` object\n */\n src?: never;\n /**\n * An array of pixel widths to overwrite the default generated srcset. For example, `[300, 600, 800]`.\n */\n widths?: (HtmlImageProps['width'] | ImageType['width'])[];\n};\n\n/**\n * The `Image` component renders an image for the Storefront API's\n * [Image object](https://shopify.dev/api/storefront/reference/common-objects/image) by using the `data` prop. You can [customize this component](https://shopify.dev/api/hydrogen/components#customizing-hydrogen-components) using passthrough props.\n *\n * An image's width and height are determined using the following priority list:\n * 1. The width and height values for the `loaderOptions` prop\n * 2. The width and height values for bare props\n * 3. The width and height values for the `data` prop\n *\n * If only one of `width` or `height` are defined, then the other will attempt to be calculated based on the image's aspect ratio,\n * provided that both `data.width` and `data.height` are available. If `data.width` and `data.height` aren't available, then the aspect ratio cannot be determined and the missing\n * value will remain as `null`\n */\nexport function Image({\n data,\n width,\n height,\n loading,\n loader = shopifyImageLoader,\n loaderOptions,\n widths,\n decoding = 'async',\n ...rest\n}: ShopifyImageProps) {\n if (!data.url) {\n const missingUrlError = `<Image/>: the 'data' prop requires the 'url' property. Image: ${\n data.id ?? 'no ID provided'\n }`;\n\n if (__HYDROGEN_DEV__) {\n throw new Error(missingUrlError);\n } else {\n console.error(missingUrlError);\n }\n\n return null;\n }\n\n if (__HYDROGEN_DEV__ && !data.altText && !rest.alt) {\n console.warn(\n `<Image/>: the 'data' prop should have the 'altText' property, or the 'alt' prop, and one of them should not be empty. Image: ${\n data.id ?? data.url\n }`\n );\n }\n\n const {width: imgElementWidth, height: imgElementHeight} =\n getShopifyImageDimensions({\n data,\n loaderOptions,\n elementProps: {\n width,\n height,\n },\n });\n\n if (__HYDROGEN_DEV__ && (!imgElementWidth || !imgElementHeight)) {\n console.warn(\n `<Image/>: the 'data' prop requires either 'width' or 'data.width', and 'height' or 'data.height' properties. Image: ${\n data.id ?? data.url\n }`\n );\n }\n\n let finalSrc = data.url;\n\n if (loader) {\n finalSrc = loader({\n ...loaderOptions,\n src: data.url,\n width: imgElementWidth,\n height: imgElementHeight,\n });\n if (typeof finalSrc !== 'string' || !finalSrc) {\n throw new Error(\n `<Image/>: 'loader' did not return a valid string. Image: ${\n data.id ?? data.url\n }`\n );\n }\n }\n\n // determining what the intended width of the image is. For example, if the width is specified and lower than the image width, then that is the maximum image width\n // to prevent generating a srcset with widths bigger than needed or to generate images that would distort because of being larger than original\n const maxWidth =\n width && imgElementWidth && width < imgElementWidth\n ? width\n : imgElementWidth;\n const finalSrcset =\n rest.srcSet ??\n internalImageSrcSet({\n ...loaderOptions,\n widths,\n src: data.url,\n width: maxWidth,\n height: imgElementHeight,\n loader,\n });\n\n /* eslint-disable hydrogen/prefer-image-component */\n return (\n <img\n id={data.id ?? ''}\n alt={data.altText ?? rest.alt ?? ''}\n loading={loading ?? 'lazy'}\n {...rest}\n src={finalSrc}\n width={imgElementWidth ?? undefined}\n height={imgElementHeight ?? undefined}\n srcSet={finalSrcset}\n decoding={decoding}\n />\n );\n /* eslint-enable hydrogen/prefer-image-component */\n}\n\ntype InternalShopifySrcSetGeneratorsParams = Simplify<\n ShopifyLoaderOptions & {\n src: ImageType['url'];\n widths?: (HtmlImageProps['width'] | ImageType['width'])[];\n loader?: (params: ShopifyLoaderParams) => string;\n }\n>;\nfunction internalImageSrcSet({\n src,\n width,\n crop,\n scale,\n widths,\n loader,\n height,\n}: InternalShopifySrcSetGeneratorsParams) {\n const hasCustomWidths = widths && Array.isArray(widths);\n if (hasCustomWidths && widths.some((size) => isNaN(size as number))) {\n throw new Error(\n `<Image/>: the 'widths' must be an array of numbers. Image: ${src}`\n );\n }\n\n let aspectRatio = 1;\n if (width && height) {\n aspectRatio = Number(height) / Number(width);\n }\n\n let setSizes = hasCustomWidths ? widths : IMG_SRC_SET_SIZES;\n if (\n !hasCustomWidths &&\n width &&\n width < IMG_SRC_SET_SIZES[IMG_SRC_SET_SIZES.length - 1]\n ) {\n setSizes = IMG_SRC_SET_SIZES.filter((size) => size <= width);\n }\n const srcGenerator = loader ? loader : addImageSizeParametersToUrl;\n return setSizes\n .map(\n (size) =>\n `${srcGenerator({\n src,\n width: size,\n // height is not applied if there is no crop\n // if there is crop, then height is applied as a ratio of the original width + height aspect ratio * size\n height: crop ? Number(size) * aspectRatio : undefined,\n crop,\n scale,\n })} ${size}w`\n )\n .join(', ');\n}\n"],"names":["Image","data","width","height","loading","loader","shopifyImageLoader","loaderOptions","widths","decoding","rest","url","missingUrlError","id","console","error","imgElementWidth","imgElementHeight","getShopifyImageDimensions","elementProps","finalSrc","src","Error","maxWidth","finalSrcset","srcSet","internalImageSrcSet","altText","alt","undefined","crop","scale","hasCustomWidths","Array","isArray","some","size","isNaN","aspectRatio","Number","setSizes","IMG_SRC_SET_SIZES","length","filter","srcGenerator","addImageSizeParametersToUrl","map","join"],"mappings":";;AA6DO,SAASA,MAAM;AAAA,EACpBC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC,SAASC;AAAAA,EACTC;AAAAA,EACAC;AAAAA,EACAC,WAAW;AAAA,KACRC;AATiB,GAUA;;AAChB,MAAA,CAACT,KAAKU,KAAK;AACPC,UAAAA,kBAAmB,kEACvBX,UAAKY,OAALZ,YAAW;AAKN;AACLa,cAAQC,MAAMH,eAAd;AAAA,IACD;AAEM,WAAA;AAAA,EACR;AAUK,QAAA;AAAA,IAACV,OAAOc;AAAAA,IAAiBb,QAAQc;AAAAA,MACrCC,0BAA0B;AAAA,IACxBjB;AAAAA,IACAM;AAAAA,IACAY,cAAc;AAAA,MACZjB;AAAAA,MACAC;AAAAA,IAFY;AAAA,EAAA,CAHS;AAiB3B,MAAIiB,WAAWnB,KAAKU;AAEpB,MAAIN,QAAQ;AACVe,eAAWf,OAAO;AAAA,MAChB,GAAGE;AAAAA,MACHc,KAAKpB,KAAKU;AAAAA,MACVT,OAAOc;AAAAA,MACPb,QAAQc;AAAAA,IAAAA,CAJO;AAMjB,QAAI,OAAOG,aAAa,YAAY,CAACA,UAAU;AAC7C,YAAM,IAAIE,MACP,6DACCrB,UAAKY,OAALZ,YAAWA,KAAKU,KAFd;AAAA,IAKP;AAAA,EACF;AAID,QAAMY,WACJrB,SAASc,mBAAmBd,QAAQc,kBAChCd,QACAc;AACAQ,QAAAA,eACJd,UAAKe,WAALf,YACAgB,oBAAoB;AAAA,IAClB,GAAGnB;AAAAA,IACHC;AAAAA,IACAa,KAAKpB,KAAKU;AAAAA,IACVT,OAAOqB;AAAAA,IACPpB,QAAQc;AAAAA,IACRZ;AAAAA,EAAAA,CANiB;AAUrB,6BACE,OAAA;AAAA,IACE,KAAIJ,UAAKY,OAALZ,YAAW;AAAA,IACf,MAAKA,gBAAK0B,YAAL1B,YAAgBS,KAAKkB,QAArB3B,YAA4B;AAAA,IACjC,SAASG,4BAAW;AAAA,IAHtB,GAIMM;AAAAA,IACJ,KAAKU;AAAAA,IACL,OAAOJ,4CAAmBa;AAAAA,IAC1B,QAAQZ,8CAAoBY;AAAAA,IAC5B,QAAQL;AAAAA,IACR;AAAA,EAAA,CAVJ;AAcD;AASD,SAASE,oBAAoB;AAAA,EAC3BL;AAAAA,EACAnB;AAAAA,EACA4B;AAAAA,EACAC;AAAAA,EACAvB;AAAAA,EACAH;AAAAA,EACAF;AAP2B,GAQa;AACxC,QAAM6B,kBAAkBxB,UAAUyB,MAAMC,QAAQ1B,MAAd;AAClC,MAAIwB,mBAAmBxB,OAAO2B,KAAMC,UAASC,MAAMD,IAAD,CAA3B,GAA8C;AAC7D,UAAA,IAAId,MACP,8DAA6DD,KAD1D;AAAA,EAGP;AAED,MAAIiB,cAAc;AAClB,MAAIpC,SAASC,QAAQ;AACnBmC,kBAAcC,OAAOpC,MAAD,IAAWoC,OAAOrC,KAAD;AAAA,EACtC;AAEGsC,MAAAA,WAAWR,kBAAkBxB,SAASiC;AAC1C,MACE,CAACT,mBACD9B,SACAA,QAAQuC,kBAAkBA,kBAAkBC,SAAS,IACrD;AACAF,eAAWC,kBAAkBE,OAAQP,CAASA,SAAAA,QAAQlC,KAA3C;AAAA,EACZ;AACK0C,QAAAA,eAAevC,SAASA,SAASwC;AACvC,SAAOL,SACJM,IACEV,CACE,SAAA,GAAEQ,aAAa;AAAA,IACdvB;AAAAA,IACAnB,OAAOkC;AAAAA,IAGPjC,QAAQ2B,OAAOS,OAAOH,IAAD,IAASE,cAAcT;AAAAA,IAC5CC;AAAAA,IACAC;AAAAA,EAAAA,CAPa,KAQTK,OAXL,EAaJW,KAAK,IAbD;AAcR;"}
@@ -1,8 +1,10 @@
1
- import { Image } from "./Image.js";
2
- import { Video } from "./Video.js";
3
- import { ExternalVideo } from "./ExternalVideo.js";
4
- import { ModelViewer } from "./ModelViewer.js";
5
- import { jsx } from "react/jsx-runtime";
1
+ "use strict";
2
+ Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
+ const Image = require("./Image.js");
4
+ const Video = require("./Video.js");
5
+ const ExternalVideo = require("./ExternalVideo.js");
6
+ const ModelViewer = require("./ModelViewer.js");
7
+ const jsxRuntime = require("react/jsx-runtime");
6
8
  function MediaFile({
7
9
  data,
8
10
  mediaOptions,
@@ -17,28 +19,28 @@ function MediaFile({
17
19
  return null;
18
20
  }
19
21
  }
20
- return /* @__PURE__ */ jsx(Image, {
22
+ return /* @__PURE__ */ jsxRuntime.jsx(Image.Image, {
21
23
  ...passthroughProps,
22
24
  ...mediaOptions == null ? void 0 : mediaOptions.image,
23
25
  data: data.image
24
26
  });
25
27
  }
26
28
  case "Video": {
27
- return /* @__PURE__ */ jsx(Video, {
29
+ return /* @__PURE__ */ jsxRuntime.jsx(Video.Video, {
28
30
  ...passthroughProps,
29
31
  ...mediaOptions == null ? void 0 : mediaOptions.video,
30
32
  data
31
33
  });
32
34
  }
33
35
  case "ExternalVideo": {
34
- return /* @__PURE__ */ jsx(ExternalVideo, {
36
+ return /* @__PURE__ */ jsxRuntime.jsx(ExternalVideo.ExternalVideo, {
35
37
  ...passthroughProps,
36
38
  ...mediaOptions == null ? void 0 : mediaOptions.externalVideo,
37
39
  data
38
40
  });
39
41
  }
40
42
  case "Model3d": {
41
- return /* @__PURE__ */ jsx(ModelViewer, {
43
+ return /* @__PURE__ */ jsxRuntime.jsx(ModelViewer.ModelViewer, {
42
44
  ...passthroughProps,
43
45
  ...mediaOptions == null ? void 0 : mediaOptions.modelViewer,
44
46
  data
@@ -53,7 +55,5 @@ function MediaFile({
53
55
  }
54
56
  }
55
57
  }
56
- export {
57
- MediaFile
58
- };
58
+ exports.MediaFile = MediaFile;
59
59
  //# sourceMappingURL=MediaFile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MediaFile.js","sources":["../../src/MediaFile.tsx"],"sourcesContent":["import {Image, type ShopifyImageProps} from './Image.js';\nimport {Video} from './Video.js';\nimport {ExternalVideo} from './ExternalVideo.js';\nimport {ModelViewer} from './ModelViewer.js';\nimport type {MediaEdge as MediaEdgeType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\nimport type {ModelViewerElement} from '@google/model-viewer/lib/model-viewer.js';\n\ntype BaseProps = React.HTMLAttributes<\n HTMLImageElement | HTMLVideoElement | HTMLIFrameElement | ModelViewerElement\n>;\nexport interface MediaFileProps extends BaseProps {\n /** An object with fields that correspond to the Storefront API's [Media object](https://shopify.dev/api/storefront/reference/products/media). */\n data: PartialDeep<MediaEdgeType['node'], {recurseIntoArrays: true}>;\n /** The options for the `Image`, `Video`, or `ExternalVideo` components. */\n mediaOptions?: {\n /** Props that will only apply when an `<Image />` is rendered */\n image: Omit<ShopifyImageProps, 'data'>;\n /** Props that will only apply when a `<Video />` is rendered */\n video: Omit<React.ComponentProps<typeof Video>, 'data'>;\n /** Props that will only apply when an `<ExternalVideo />` is rendered */\n externalVideo: Omit<\n React.ComponentProps<typeof ExternalVideo>['options'],\n 'data'\n >;\n /** Props that will only apply when a `<ModelViewer />` is rendered */\n modelViewer: Omit<typeof ModelViewer, 'data'>;\n };\n}\n\n/**\n * The `MediaFile` component renders the media for the Storefront API's\n * [Media object](https://shopify.dev/api/storefront/reference/products/media). It renders an `Image`, a\n * `Video`, an `ExternalVideo`, or a `ModelViewer` depending on the `__typename` of the `data` prop.\n */\nexport function MediaFile({\n data,\n mediaOptions,\n ...passthroughProps\n}: MediaFileProps) {\n switch (data.__typename) {\n case 'MediaImage': {\n if (!data.image) {\n const noDataImage = `<MediaFile/>: 'data.image' does not exist for __typename of 'MediaImage'; rendering 'null' by default.`;\n if (__HYDROGEN_DEV__) {\n throw new Error(noDataImage);\n } else {\n console.warn(noDataImage);\n return null;\n }\n }\n\n return (\n <Image\n {...passthroughProps}\n {...mediaOptions?.image}\n data={data.image}\n />\n );\n }\n case 'Video': {\n return (\n <Video {...passthroughProps} {...mediaOptions?.video} data={data} />\n );\n }\n case 'ExternalVideo': {\n return (\n <ExternalVideo\n {...passthroughProps}\n {...mediaOptions?.externalVideo}\n data={data}\n />\n );\n }\n case 'Model3d': {\n return (\n // @ts-expect-error There are issues with the inferred HTML attribute types here for ModelViewer (and contentEditable), but I think that's a little bit beyond me at the moment\n <ModelViewer\n {...passthroughProps}\n {...mediaOptions?.modelViewer}\n data={data}\n />\n );\n }\n default: {\n const typenameMissingMessage = `<MediaFile /> requires the '__typename' property to exist on the 'data' prop in order to correctly render the correct component for this media. Rendering 'null' by default`;\n if (__HYDROGEN_DEV__) {\n throw new Error(typenameMissingMessage);\n } else {\n console.error(typenameMissingMessage);\n return null;\n }\n }\n }\n}\n"],"names":["MediaFile","data","mediaOptions","passthroughProps","__typename","image","noDataImage","console","warn","video","externalVideo","modelViewer","typenameMissingMessage","error"],"mappings":";;;;;AAmCO,SAASA,UAAU;AAAA,EACxBC;AAAAA,EACAC;AAAAA,KACGC;AAHqB,GAIP;AACjB,UAAQF,KAAKG,YAAb;AAAA,IACE,KAAK,cAAc;AACb,UAAA,CAACH,KAAKI,OAAO;AACf,cAAMC,cAAe;AAGd;AACLC,kBAAQC,KAAKF,WAAb;AACO,iBAAA;AAAA,QACR;AAAA,MACF;AAED,iCACG,OAAD;AAAA,QAAA,GACMH;AAAAA,QADN,GAEMD,6CAAcG;AAAAA,QAClB,MAAMJ,KAAKI;AAAAA,MAAAA,CAJf;AAAA,IAOD;AAAA,IACD,KAAK,SAAS;AACZ,iCACG,OAAD;AAAA,QAAA,GAAWF;AAAAA,QAAX,GAAiCD,6CAAcO;AAAAA,QAAO;AAAA,MAAA,CADxD;AAAA,IAGD;AAAA,IACD,KAAK,iBAAiB;AACpB,iCACG,eAAD;AAAA,QAAA,GACMN;AAAAA,QADN,GAEMD,6CAAcQ;AAAAA,QAClB;AAAA,MAAA,CAJJ;AAAA,IAOD;AAAA,IACD,KAAK,WAAW;AACd,iCAEG;WACKP;AAAAA,QADN,GAEMD,6CAAcS;AAAAA,QAClB;AAAA,MAAA,CAHF;AAAA,IAMH;AAAA,IACD,SAAS;AACP,YAAMC,yBAA0B;AAGzB;AACLL,gBAAQM,MAAMD,sBAAd;AACO,eAAA;AAAA,MACR;AAAA,IACF;AAAA,EApDH;AAsDD;"}
1
+ {"version":3,"file":"MediaFile.js","sources":["../../src/MediaFile.tsx"],"sourcesContent":["import {Image, type ShopifyImageProps} from './Image.js';\nimport {Video} from './Video.js';\nimport {ExternalVideo} from './ExternalVideo.js';\nimport {ModelViewer} from './ModelViewer.js';\nimport type {MediaEdge as MediaEdgeType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\nimport type {ModelViewerElement} from '@google/model-viewer/lib/model-viewer.js';\n\ntype BaseProps = React.HTMLAttributes<\n HTMLImageElement | HTMLVideoElement | HTMLIFrameElement | ModelViewerElement\n>;\nexport interface MediaFileProps extends BaseProps {\n /** An object with fields that correspond to the Storefront API's [Media object](https://shopify.dev/api/storefront/reference/products/media). */\n data: PartialDeep<MediaEdgeType['node'], {recurseIntoArrays: true}>;\n /** The options for the `Image`, `Video`, or `ExternalVideo` components. */\n mediaOptions?: {\n /** Props that will only apply when an `<Image />` is rendered */\n image: Omit<ShopifyImageProps, 'data'>;\n /** Props that will only apply when a `<Video />` is rendered */\n video: Omit<React.ComponentProps<typeof Video>, 'data'>;\n /** Props that will only apply when an `<ExternalVideo />` is rendered */\n externalVideo: Omit<\n React.ComponentProps<typeof ExternalVideo>['options'],\n 'data'\n >;\n /** Props that will only apply when a `<ModelViewer />` is rendered */\n modelViewer: Omit<typeof ModelViewer, 'data'>;\n };\n}\n\n/**\n * The `MediaFile` component renders the media for the Storefront API's\n * [Media object](https://shopify.dev/api/storefront/reference/products/media). It renders an `Image`, a\n * `Video`, an `ExternalVideo`, or a `ModelViewer` depending on the `__typename` of the `data` prop.\n */\nexport function MediaFile({\n data,\n mediaOptions,\n ...passthroughProps\n}: MediaFileProps) {\n switch (data.__typename) {\n case 'MediaImage': {\n if (!data.image) {\n const noDataImage = `<MediaFile/>: 'data.image' does not exist for __typename of 'MediaImage'; rendering 'null' by default.`;\n if (__HYDROGEN_DEV__) {\n throw new Error(noDataImage);\n } else {\n console.warn(noDataImage);\n return null;\n }\n }\n\n return (\n <Image\n {...passthroughProps}\n {...mediaOptions?.image}\n data={data.image}\n />\n );\n }\n case 'Video': {\n return (\n <Video {...passthroughProps} {...mediaOptions?.video} data={data} />\n );\n }\n case 'ExternalVideo': {\n return (\n <ExternalVideo\n {...passthroughProps}\n {...mediaOptions?.externalVideo}\n data={data}\n />\n );\n }\n case 'Model3d': {\n return (\n // @ts-expect-error There are issues with the inferred HTML attribute types here for ModelViewer (and contentEditable), but I think that's a little bit beyond me at the moment\n <ModelViewer\n {...passthroughProps}\n {...mediaOptions?.modelViewer}\n data={data}\n />\n );\n }\n default: {\n const typenameMissingMessage = `<MediaFile /> requires the '__typename' property to exist on the 'data' prop in order to correctly render the correct component for this media. Rendering 'null' by default`;\n if (__HYDROGEN_DEV__) {\n throw new Error(typenameMissingMessage);\n } else {\n console.error(typenameMissingMessage);\n return null;\n }\n }\n }\n}\n"],"names":["MediaFile","data","mediaOptions","passthroughProps","__typename","image","noDataImage","console","warn","Image","Video","video","ExternalVideo","externalVideo","ModelViewer","modelViewer","typenameMissingMessage","error"],"mappings":";;;;;;;AAmCO,SAASA,UAAU;AAAA,EACxBC;AAAAA,EACAC;AAAAA,KACGC;AAHqB,GAIP;AACjB,UAAQF,KAAKG,YAAb;AAAA,IACE,KAAK,cAAc;AACb,UAAA,CAACH,KAAKI,OAAO;AACf,cAAMC,cAAe;AAGd;AACLC,kBAAQC,KAAKF,WAAb;AACO,iBAAA;AAAA,QACR;AAAA,MACF;AAED,4CACGG,MAAAA,OAAD;AAAA,QAAA,GACMN;AAAAA,QADN,GAEMD,6CAAcG;AAAAA,QAClB,MAAMJ,KAAKI;AAAAA,MAAAA,CAJf;AAAA,IAOD;AAAA,IACD,KAAK,SAAS;AACZ,4CACGK,MAAAA,OAAD;AAAA,QAAA,GAAWP;AAAAA,QAAX,GAAiCD,6CAAcS;AAAAA,QAAO;AAAA,MAAA,CADxD;AAAA,IAGD;AAAA,IACD,KAAK,iBAAiB;AACpB,4CACGC,cAAAA,eAAD;AAAA,QAAA,GACMT;AAAAA,QADN,GAEMD,6CAAcW;AAAAA,QAClB;AAAA,MAAA,CAJJ;AAAA,IAOD;AAAA,IACD,KAAK,WAAW;AACd,4CAEGC,YAAAA;WACKX;AAAAA,QADN,GAEMD,6CAAca;AAAAA,QAClB;AAAA,MAAA,CAHF;AAAA,IAMH;AAAA,IACD,SAAS;AACP,YAAMC,yBAA0B;AAGzB;AACLT,gBAAQU,MAAMD,sBAAd;AACO,eAAA;AAAA,MACR;AAAA,IACF;AAAA,EApDH;AAsDD;;"}