@shopify/hydrogen-react 2026.4.0 → 2026.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (631) hide show
  1. package/dist/browser-dev/AddToCartButton.mjs +60 -71
  2. package/dist/browser-dev/AddToCartButton.mjs.map +1 -1
  3. package/dist/browser-dev/BaseButton.mjs +20 -26
  4. package/dist/browser-dev/BaseButton.mjs.map +1 -1
  5. package/dist/browser-dev/BuyNowButton.mjs +40 -45
  6. package/dist/browser-dev/BuyNowButton.mjs.map +1 -1
  7. package/dist/browser-dev/CartCheckoutButton.mjs +28 -23
  8. package/dist/browser-dev/CartCheckoutButton.mjs.map +1 -1
  9. package/dist/browser-dev/CartCost.mjs +26 -22
  10. package/dist/browser-dev/CartCost.mjs.map +1 -1
  11. package/dist/browser-dev/CartLineProvider.mjs +23 -18
  12. package/dist/browser-dev/CartLineProvider.mjs.map +1 -1
  13. package/dist/browser-dev/CartLineQuantity.mjs +18 -9
  14. package/dist/browser-dev/CartLineQuantity.mjs.map +1 -1
  15. package/dist/browser-dev/CartLineQuantityAdjustButton.mjs +48 -45
  16. package/dist/browser-dev/CartLineQuantityAdjustButton.mjs.map +1 -1
  17. package/dist/browser-dev/CartProvider.mjs +315 -385
  18. package/dist/browser-dev/CartProvider.mjs.map +1 -1
  19. package/dist/browser-dev/ExternalVideo.mjs +35 -47
  20. package/dist/browser-dev/ExternalVideo.mjs.map +1 -1
  21. package/dist/browser-dev/Image.mjs +335 -340
  22. package/dist/browser-dev/Image.mjs.map +1 -1
  23. package/dist/browser-dev/MediaFile.mjs +39 -61
  24. package/dist/browser-dev/MediaFile.mjs.map +1 -1
  25. package/dist/browser-dev/ModelViewer.mjs +115 -139
  26. package/dist/browser-dev/ModelViewer.mjs.map +1 -1
  27. package/dist/browser-dev/Money.mjs +53 -39
  28. package/dist/browser-dev/Money.mjs.map +1 -1
  29. package/dist/browser-dev/ProductPrice.mjs +44 -61
  30. package/dist/browser-dev/ProductPrice.mjs.map +1 -1
  31. package/dist/browser-dev/ProductProvider.mjs +147 -179
  32. package/dist/browser-dev/ProductProvider.mjs.map +1 -1
  33. package/dist/browser-dev/RichText.components.mjs +36 -46
  34. package/dist/browser-dev/RichText.components.mjs.map +1 -1
  35. package/dist/browser-dev/RichText.mjs +111 -154
  36. package/dist/browser-dev/RichText.mjs.map +1 -1
  37. package/dist/browser-dev/ShopPayButton.mjs +53 -81
  38. package/dist/browser-dev/ShopPayButton.mjs.map +1 -1
  39. package/dist/browser-dev/ShopifyProvider.mjs +71 -84
  40. package/dist/browser-dev/ShopifyProvider.mjs.map +1 -1
  41. package/dist/browser-dev/Video.mjs +35 -52
  42. package/dist/browser-dev/Video.mjs.map +1 -1
  43. package/dist/browser-dev/analytics-constants.mjs +41 -43
  44. package/dist/browser-dev/analytics-constants.mjs.map +1 -1
  45. package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs +127 -214
  46. package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
  47. package/dist/browser-dev/analytics-schema-trekkie-storefront-page-view.mjs +39 -50
  48. package/dist/browser-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
  49. package/dist/browser-dev/analytics-utils.mjs +78 -56
  50. package/dist/browser-dev/analytics-utils.mjs.map +1 -1
  51. package/dist/browser-dev/analytics.mjs +112 -155
  52. package/dist/browser-dev/analytics.mjs.map +1 -1
  53. package/dist/browser-dev/cart-constants.mjs +11 -15
  54. package/dist/browser-dev/cart-constants.mjs.map +1 -1
  55. package/dist/browser-dev/cart-hooks.mjs +42 -57
  56. package/dist/browser-dev/cart-hooks.mjs.map +1 -1
  57. package/dist/browser-dev/cart-queries.mjs +59 -135
  58. package/dist/browser-dev/cart-queries.mjs.map +1 -1
  59. package/dist/browser-dev/codegen.helpers.mjs +31 -20
  60. package/dist/browser-dev/codegen.helpers.mjs.map +1 -1
  61. package/dist/browser-dev/cookies-utils.mjs +44 -42
  62. package/dist/browser-dev/cookies-utils.mjs.map +1 -1
  63. package/dist/browser-dev/flatten-connection.mjs +23 -29
  64. package/dist/browser-dev/flatten-connection.mjs.map +1 -1
  65. package/dist/browser-dev/getProductOptions.mjs +248 -226
  66. package/dist/browser-dev/getProductOptions.mjs.map +1 -1
  67. package/dist/browser-dev/index.mjs +15 -70
  68. package/dist/browser-dev/load-script.mjs +38 -49
  69. package/dist/browser-dev/load-script.mjs.map +1 -1
  70. package/dist/browser-dev/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs +175 -123
  71. package/dist/browser-dev/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  72. package/dist/browser-dev/optionValueDecoder.mjs +104 -86
  73. package/dist/browser-dev/optionValueDecoder.mjs.map +1 -1
  74. package/dist/browser-dev/packages/hydrogen-react/package.mjs +6 -0
  75. package/dist/browser-dev/packages/hydrogen-react/package.mjs.map +1 -0
  76. package/dist/browser-dev/parse-metafield.mjs +122 -134
  77. package/dist/browser-dev/parse-metafield.mjs.map +1 -1
  78. package/dist/browser-dev/storefront-api-constants.mjs +6 -5
  79. package/dist/browser-dev/storefront-api-constants.mjs.map +1 -1
  80. package/dist/browser-dev/storefront-client.mjs +62 -102
  81. package/dist/browser-dev/storefront-client.mjs.map +1 -1
  82. package/dist/browser-dev/tracking-utils.mjs +68 -88
  83. package/dist/browser-dev/tracking-utils.mjs.map +1 -1
  84. package/dist/browser-dev/useCartAPIStateMachine.mjs +188 -346
  85. package/dist/browser-dev/useCartAPIStateMachine.mjs.map +1 -1
  86. package/dist/browser-dev/useCartActions.mjs +197 -172
  87. package/dist/browser-dev/useCartActions.mjs.map +1 -1
  88. package/dist/browser-dev/useMachine.mjs +50 -62
  89. package/dist/browser-dev/useMachine.mjs.map +1 -1
  90. package/dist/browser-dev/useMoney.mjs +176 -154
  91. package/dist/browser-dev/useMoney.mjs.map +1 -1
  92. package/dist/browser-dev/useSelectedOptionInUrlParam.mjs +17 -27
  93. package/dist/browser-dev/useSelectedOptionInUrlParam.mjs.map +1 -1
  94. package/dist/browser-dev/useShopifyCookies.mjs +123 -138
  95. package/dist/browser-dev/useShopifyCookies.mjs.map +1 -1
  96. package/dist/browser-prod/AddToCartButton.mjs +60 -71
  97. package/dist/browser-prod/AddToCartButton.mjs.map +1 -1
  98. package/dist/browser-prod/BaseButton.mjs +20 -26
  99. package/dist/browser-prod/BaseButton.mjs.map +1 -1
  100. package/dist/browser-prod/BuyNowButton.mjs +40 -45
  101. package/dist/browser-prod/BuyNowButton.mjs.map +1 -1
  102. package/dist/browser-prod/CartCheckoutButton.mjs +28 -23
  103. package/dist/browser-prod/CartCheckoutButton.mjs.map +1 -1
  104. package/dist/browser-prod/CartCost.mjs +26 -22
  105. package/dist/browser-prod/CartCost.mjs.map +1 -1
  106. package/dist/browser-prod/CartLineProvider.mjs +23 -18
  107. package/dist/browser-prod/CartLineProvider.mjs.map +1 -1
  108. package/dist/browser-prod/CartLineQuantity.mjs +18 -9
  109. package/dist/browser-prod/CartLineQuantity.mjs.map +1 -1
  110. package/dist/browser-prod/CartLineQuantityAdjustButton.mjs +48 -45
  111. package/dist/browser-prod/CartLineQuantityAdjustButton.mjs.map +1 -1
  112. package/dist/browser-prod/CartProvider.mjs +315 -385
  113. package/dist/browser-prod/CartProvider.mjs.map +1 -1
  114. package/dist/browser-prod/ExternalVideo.mjs +35 -47
  115. package/dist/browser-prod/ExternalVideo.mjs.map +1 -1
  116. package/dist/browser-prod/Image.mjs +326 -325
  117. package/dist/browser-prod/Image.mjs.map +1 -1
  118. package/dist/browser-prod/MediaFile.mjs +44 -63
  119. package/dist/browser-prod/MediaFile.mjs.map +1 -1
  120. package/dist/browser-prod/ModelViewer.mjs +117 -135
  121. package/dist/browser-prod/ModelViewer.mjs.map +1 -1
  122. package/dist/browser-prod/Money.mjs +53 -39
  123. package/dist/browser-prod/Money.mjs.map +1 -1
  124. package/dist/browser-prod/ProductPrice.mjs +44 -61
  125. package/dist/browser-prod/ProductPrice.mjs.map +1 -1
  126. package/dist/browser-prod/ProductProvider.mjs +147 -179
  127. package/dist/browser-prod/ProductProvider.mjs.map +1 -1
  128. package/dist/browser-prod/RichText.components.mjs +36 -46
  129. package/dist/browser-prod/RichText.components.mjs.map +1 -1
  130. package/dist/browser-prod/RichText.mjs +111 -154
  131. package/dist/browser-prod/RichText.mjs.map +1 -1
  132. package/dist/browser-prod/ShopPayButton.mjs +53 -81
  133. package/dist/browser-prod/ShopPayButton.mjs.map +1 -1
  134. package/dist/browser-prod/ShopifyProvider.mjs +71 -84
  135. package/dist/browser-prod/ShopifyProvider.mjs.map +1 -1
  136. package/dist/browser-prod/Video.mjs +35 -52
  137. package/dist/browser-prod/Video.mjs.map +1 -1
  138. package/dist/browser-prod/analytics-constants.mjs +41 -43
  139. package/dist/browser-prod/analytics-constants.mjs.map +1 -1
  140. package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs +127 -214
  141. package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
  142. package/dist/browser-prod/analytics-schema-trekkie-storefront-page-view.mjs +39 -50
  143. package/dist/browser-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
  144. package/dist/browser-prod/analytics-utils.mjs +78 -56
  145. package/dist/browser-prod/analytics-utils.mjs.map +1 -1
  146. package/dist/browser-prod/analytics.mjs +111 -153
  147. package/dist/browser-prod/analytics.mjs.map +1 -1
  148. package/dist/browser-prod/cart-constants.mjs +11 -15
  149. package/dist/browser-prod/cart-constants.mjs.map +1 -1
  150. package/dist/browser-prod/cart-hooks.mjs +42 -57
  151. package/dist/browser-prod/cart-hooks.mjs.map +1 -1
  152. package/dist/browser-prod/cart-queries.mjs +59 -135
  153. package/dist/browser-prod/cart-queries.mjs.map +1 -1
  154. package/dist/browser-prod/codegen.helpers.mjs +31 -20
  155. package/dist/browser-prod/codegen.helpers.mjs.map +1 -1
  156. package/dist/browser-prod/cookies-utils.mjs +44 -42
  157. package/dist/browser-prod/cookies-utils.mjs.map +1 -1
  158. package/dist/browser-prod/flatten-connection.mjs +23 -25
  159. package/dist/browser-prod/flatten-connection.mjs.map +1 -1
  160. package/dist/browser-prod/getProductOptions.mjs +248 -226
  161. package/dist/browser-prod/getProductOptions.mjs.map +1 -1
  162. package/dist/browser-prod/index.mjs +15 -70
  163. package/dist/browser-prod/load-script.mjs +38 -49
  164. package/dist/browser-prod/load-script.mjs.map +1 -1
  165. package/dist/browser-prod/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs +175 -123
  166. package/dist/browser-prod/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  167. package/dist/browser-prod/optionValueDecoder.mjs +104 -86
  168. package/dist/browser-prod/optionValueDecoder.mjs.map +1 -1
  169. package/dist/browser-prod/packages/hydrogen-react/package.mjs +6 -0
  170. package/dist/browser-prod/packages/hydrogen-react/package.mjs.map +1 -0
  171. package/dist/browser-prod/parse-metafield.mjs +134 -146
  172. package/dist/browser-prod/parse-metafield.mjs.map +1 -1
  173. package/dist/browser-prod/storefront-api-constants.mjs +6 -5
  174. package/dist/browser-prod/storefront-api-constants.mjs.map +1 -1
  175. package/dist/browser-prod/storefront-client.mjs +56 -84
  176. package/dist/browser-prod/storefront-client.mjs.map +1 -1
  177. package/dist/browser-prod/tracking-utils.mjs +68 -88
  178. package/dist/browser-prod/tracking-utils.mjs.map +1 -1
  179. package/dist/browser-prod/useCartAPIStateMachine.mjs +188 -346
  180. package/dist/browser-prod/useCartAPIStateMachine.mjs.map +1 -1
  181. package/dist/browser-prod/useCartActions.mjs +197 -172
  182. package/dist/browser-prod/useCartActions.mjs.map +1 -1
  183. package/dist/browser-prod/useMachine.mjs +50 -62
  184. package/dist/browser-prod/useMachine.mjs.map +1 -1
  185. package/dist/browser-prod/useMoney.mjs +176 -154
  186. package/dist/browser-prod/useMoney.mjs.map +1 -1
  187. package/dist/browser-prod/useSelectedOptionInUrlParam.mjs +17 -27
  188. package/dist/browser-prod/useSelectedOptionInUrlParam.mjs.map +1 -1
  189. package/dist/browser-prod/useShopifyCookies.mjs +123 -138
  190. package/dist/browser-prod/useShopifyCookies.mjs.map +1 -1
  191. package/dist/node-dev/AddToCartButton.js +64 -73
  192. package/dist/node-dev/AddToCartButton.js.map +1 -1
  193. package/dist/node-dev/AddToCartButton.mjs +60 -71
  194. package/dist/node-dev/AddToCartButton.mjs.map +1 -1
  195. package/dist/node-dev/BaseButton.js +21 -26
  196. package/dist/node-dev/BaseButton.js.map +1 -1
  197. package/dist/node-dev/BaseButton.mjs +20 -26
  198. package/dist/node-dev/BaseButton.mjs.map +1 -1
  199. package/dist/node-dev/BuyNowButton.js +42 -46
  200. package/dist/node-dev/BuyNowButton.js.map +1 -1
  201. package/dist/node-dev/BuyNowButton.mjs +40 -45
  202. package/dist/node-dev/BuyNowButton.mjs.map +1 -1
  203. package/dist/node-dev/CartCheckoutButton.js +30 -24
  204. package/dist/node-dev/CartCheckoutButton.js.map +1 -1
  205. package/dist/node-dev/CartCheckoutButton.mjs +28 -23
  206. package/dist/node-dev/CartCheckoutButton.mjs.map +1 -1
  207. package/dist/node-dev/CartCost.js +27 -22
  208. package/dist/node-dev/CartCost.js.map +1 -1
  209. package/dist/node-dev/CartCost.mjs +26 -22
  210. package/dist/node-dev/CartCost.mjs.map +1 -1
  211. package/dist/node-dev/CartLineProvider.js +24 -17
  212. package/dist/node-dev/CartLineProvider.js.map +1 -1
  213. package/dist/node-dev/CartLineProvider.mjs +23 -18
  214. package/dist/node-dev/CartLineProvider.mjs.map +1 -1
  215. package/dist/node-dev/CartLineQuantity.js +19 -9
  216. package/dist/node-dev/CartLineQuantity.js.map +1 -1
  217. package/dist/node-dev/CartLineQuantity.mjs +18 -9
  218. package/dist/node-dev/CartLineQuantity.mjs.map +1 -1
  219. package/dist/node-dev/CartLineQuantityAdjustButton.js +50 -46
  220. package/dist/node-dev/CartLineQuantityAdjustButton.js.map +1 -1
  221. package/dist/node-dev/CartLineQuantityAdjustButton.mjs +48 -45
  222. package/dist/node-dev/CartLineQuantityAdjustButton.mjs.map +1 -1
  223. package/dist/node-dev/CartProvider.js +317 -385
  224. package/dist/node-dev/CartProvider.js.map +1 -1
  225. package/dist/node-dev/CartProvider.mjs +315 -385
  226. package/dist/node-dev/CartProvider.mjs.map +1 -1
  227. package/dist/node-dev/ExternalVideo.js +36 -47
  228. package/dist/node-dev/ExternalVideo.js.map +1 -1
  229. package/dist/node-dev/ExternalVideo.mjs +35 -47
  230. package/dist/node-dev/ExternalVideo.mjs.map +1 -1
  231. package/dist/node-dev/Image.js +337 -355
  232. package/dist/node-dev/Image.js.map +1 -1
  233. package/dist/node-dev/Image.mjs +335 -340
  234. package/dist/node-dev/Image.mjs.map +1 -1
  235. package/dist/node-dev/MediaFile.js +42 -63
  236. package/dist/node-dev/MediaFile.js.map +1 -1
  237. package/dist/node-dev/MediaFile.mjs +39 -61
  238. package/dist/node-dev/MediaFile.mjs.map +1 -1
  239. package/dist/node-dev/ModelViewer.js +116 -139
  240. package/dist/node-dev/ModelViewer.js.map +1 -1
  241. package/dist/node-dev/ModelViewer.mjs +115 -139
  242. package/dist/node-dev/ModelViewer.mjs.map +1 -1
  243. package/dist/node-dev/Money.js +54 -39
  244. package/dist/node-dev/Money.js.map +1 -1
  245. package/dist/node-dev/Money.mjs +53 -39
  246. package/dist/node-dev/Money.mjs.map +1 -1
  247. package/dist/node-dev/ProductPrice.js +45 -61
  248. package/dist/node-dev/ProductPrice.js.map +1 -1
  249. package/dist/node-dev/ProductPrice.mjs +44 -61
  250. package/dist/node-dev/ProductPrice.mjs.map +1 -1
  251. package/dist/node-dev/ProductProvider.js +148 -178
  252. package/dist/node-dev/ProductProvider.js.map +1 -1
  253. package/dist/node-dev/ProductProvider.mjs +147 -179
  254. package/dist/node-dev/ProductProvider.mjs.map +1 -1
  255. package/dist/node-dev/RichText.components.js +37 -46
  256. package/dist/node-dev/RichText.components.js.map +1 -1
  257. package/dist/node-dev/RichText.components.mjs +36 -46
  258. package/dist/node-dev/RichText.components.mjs.map +1 -1
  259. package/dist/node-dev/RichText.js +112 -154
  260. package/dist/node-dev/RichText.js.map +1 -1
  261. package/dist/node-dev/RichText.mjs +111 -154
  262. package/dist/node-dev/RichText.mjs.map +1 -1
  263. package/dist/node-dev/ShopPayButton.js +54 -81
  264. package/dist/node-dev/ShopPayButton.js.map +1 -1
  265. package/dist/node-dev/ShopPayButton.mjs +53 -81
  266. package/dist/node-dev/ShopPayButton.mjs.map +1 -1
  267. package/dist/node-dev/ShopifyProvider.js +73 -83
  268. package/dist/node-dev/ShopifyProvider.js.map +1 -1
  269. package/dist/node-dev/ShopifyProvider.mjs +71 -84
  270. package/dist/node-dev/ShopifyProvider.mjs.map +1 -1
  271. package/dist/node-dev/Video.js +36 -52
  272. package/dist/node-dev/Video.js.map +1 -1
  273. package/dist/node-dev/Video.mjs +35 -52
  274. package/dist/node-dev/Video.mjs.map +1 -1
  275. package/dist/node-dev/_virtual/_rolldown/runtime.js +23 -0
  276. package/dist/node-dev/analytics-constants.js +40 -39
  277. package/dist/node-dev/analytics-constants.js.map +1 -1
  278. package/dist/node-dev/analytics-constants.mjs +41 -43
  279. package/dist/node-dev/analytics-constants.mjs.map +1 -1
  280. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js +128 -210
  281. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js.map +1 -1
  282. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs +127 -214
  283. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
  284. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.js +40 -51
  285. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.js.map +1 -1
  286. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.mjs +39 -50
  287. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
  288. package/dist/node-dev/analytics-utils.js +77 -52
  289. package/dist/node-dev/analytics-utils.js.map +1 -1
  290. package/dist/node-dev/analytics-utils.mjs +78 -56
  291. package/dist/node-dev/analytics-utils.mjs.map +1 -1
  292. package/dist/node-dev/analytics.js +114 -156
  293. package/dist/node-dev/analytics.js.map +1 -1
  294. package/dist/node-dev/analytics.mjs +112 -155
  295. package/dist/node-dev/analytics.mjs.map +1 -1
  296. package/dist/node-dev/cart-constants.js +10 -9
  297. package/dist/node-dev/cart-constants.js.map +1 -1
  298. package/dist/node-dev/cart-constants.mjs +11 -15
  299. package/dist/node-dev/cart-constants.mjs.map +1 -1
  300. package/dist/node-dev/cart-hooks.js +43 -57
  301. package/dist/node-dev/cart-hooks.js.map +1 -1
  302. package/dist/node-dev/cart-hooks.mjs +42 -57
  303. package/dist/node-dev/cart-hooks.mjs.map +1 -1
  304. package/dist/node-dev/cart-queries.js +58 -125
  305. package/dist/node-dev/cart-queries.js.map +1 -1
  306. package/dist/node-dev/cart-queries.mjs +59 -135
  307. package/dist/node-dev/cart-queries.mjs.map +1 -1
  308. package/dist/node-dev/codegen.helpers.js +30 -18
  309. package/dist/node-dev/codegen.helpers.js.map +1 -1
  310. package/dist/node-dev/codegen.helpers.mjs +31 -20
  311. package/dist/node-dev/codegen.helpers.mjs.map +1 -1
  312. package/dist/node-dev/cookies-utils.js +45 -42
  313. package/dist/node-dev/cookies-utils.js.map +1 -1
  314. package/dist/node-dev/cookies-utils.mjs +44 -42
  315. package/dist/node-dev/cookies-utils.mjs.map +1 -1
  316. package/dist/node-dev/flatten-connection.js +22 -28
  317. package/dist/node-dev/flatten-connection.js.map +1 -1
  318. package/dist/node-dev/flatten-connection.mjs +23 -29
  319. package/dist/node-dev/flatten-connection.mjs.map +1 -1
  320. package/dist/node-dev/getProductOptions.js +248 -224
  321. package/dist/node-dev/getProductOptions.js.map +1 -1
  322. package/dist/node-dev/getProductOptions.mjs +248 -226
  323. package/dist/node-dev/getProductOptions.mjs.map +1 -1
  324. package/dist/node-dev/index.js +88 -90
  325. package/dist/node-dev/index.mjs +15 -70
  326. package/dist/node-dev/load-script.js +38 -48
  327. package/dist/node-dev/load-script.js.map +1 -1
  328. package/dist/node-dev/load-script.mjs +38 -49
  329. package/dist/node-dev/load-script.mjs.map +1 -1
  330. package/dist/node-dev/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.js +185 -124
  331. package/dist/node-dev/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.js.map +1 -1
  332. package/dist/node-dev/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs +175 -123
  333. package/dist/node-dev/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  334. package/dist/node-dev/optionValueDecoder.js +103 -84
  335. package/dist/node-dev/optionValueDecoder.js.map +1 -1
  336. package/dist/node-dev/optionValueDecoder.mjs +104 -86
  337. package/dist/node-dev/optionValueDecoder.mjs.map +1 -1
  338. package/dist/node-dev/packages/hydrogen-react/package.js +6 -0
  339. package/dist/node-dev/packages/hydrogen-react/package.js.map +1 -0
  340. package/dist/node-dev/packages/hydrogen-react/package.mjs +6 -0
  341. package/dist/node-dev/packages/hydrogen-react/package.mjs.map +1 -0
  342. package/dist/node-dev/parse-metafield.js +122 -134
  343. package/dist/node-dev/parse-metafield.js.map +1 -1
  344. package/dist/node-dev/parse-metafield.mjs +122 -134
  345. package/dist/node-dev/parse-metafield.mjs.map +1 -1
  346. package/dist/node-dev/storefront-api-constants.js +5 -4
  347. package/dist/node-dev/storefront-api-constants.js.map +1 -1
  348. package/dist/node-dev/storefront-api-constants.mjs +6 -5
  349. package/dist/node-dev/storefront-api-constants.mjs.map +1 -1
  350. package/dist/node-dev/storefront-client.js +62 -101
  351. package/dist/node-dev/storefront-client.js.map +1 -1
  352. package/dist/node-dev/storefront-client.mjs +62 -102
  353. package/dist/node-dev/storefront-client.mjs.map +1 -1
  354. package/dist/node-dev/tracking-utils.js +67 -85
  355. package/dist/node-dev/tracking-utils.js.map +1 -1
  356. package/dist/node-dev/tracking-utils.mjs +68 -88
  357. package/dist/node-dev/tracking-utils.mjs.map +1 -1
  358. package/dist/node-dev/useCartAPIStateMachine.js +192 -349
  359. package/dist/node-dev/useCartAPIStateMachine.js.map +1 -1
  360. package/dist/node-dev/useCartAPIStateMachine.mjs +188 -346
  361. package/dist/node-dev/useCartAPIStateMachine.mjs.map +1 -1
  362. package/dist/node-dev/useCartActions.js +198 -172
  363. package/dist/node-dev/useCartActions.js.map +1 -1
  364. package/dist/node-dev/useCartActions.mjs +197 -172
  365. package/dist/node-dev/useCartActions.mjs.map +1 -1
  366. package/dist/node-dev/useMachine.js +50 -61
  367. package/dist/node-dev/useMachine.js.map +1 -1
  368. package/dist/node-dev/useMachine.mjs +50 -62
  369. package/dist/node-dev/useMachine.mjs.map +1 -1
  370. package/dist/node-dev/useMoney.js +177 -154
  371. package/dist/node-dev/useMoney.js.map +1 -1
  372. package/dist/node-dev/useMoney.mjs +176 -154
  373. package/dist/node-dev/useMoney.mjs.map +1 -1
  374. package/dist/node-dev/useSelectedOptionInUrlParam.js +18 -27
  375. package/dist/node-dev/useSelectedOptionInUrlParam.js.map +1 -1
  376. package/dist/node-dev/useSelectedOptionInUrlParam.mjs +17 -27
  377. package/dist/node-dev/useSelectedOptionInUrlParam.mjs.map +1 -1
  378. package/dist/node-dev/useShopifyCookies.js +124 -138
  379. package/dist/node-dev/useShopifyCookies.js.map +1 -1
  380. package/dist/node-dev/useShopifyCookies.mjs +123 -138
  381. package/dist/node-dev/useShopifyCookies.mjs.map +1 -1
  382. package/dist/node-prod/AddToCartButton.js +64 -73
  383. package/dist/node-prod/AddToCartButton.js.map +1 -1
  384. package/dist/node-prod/AddToCartButton.mjs +60 -71
  385. package/dist/node-prod/AddToCartButton.mjs.map +1 -1
  386. package/dist/node-prod/BaseButton.js +21 -26
  387. package/dist/node-prod/BaseButton.js.map +1 -1
  388. package/dist/node-prod/BaseButton.mjs +20 -26
  389. package/dist/node-prod/BaseButton.mjs.map +1 -1
  390. package/dist/node-prod/BuyNowButton.js +42 -46
  391. package/dist/node-prod/BuyNowButton.js.map +1 -1
  392. package/dist/node-prod/BuyNowButton.mjs +40 -45
  393. package/dist/node-prod/BuyNowButton.mjs.map +1 -1
  394. package/dist/node-prod/CartCheckoutButton.js +30 -24
  395. package/dist/node-prod/CartCheckoutButton.js.map +1 -1
  396. package/dist/node-prod/CartCheckoutButton.mjs +28 -23
  397. package/dist/node-prod/CartCheckoutButton.mjs.map +1 -1
  398. package/dist/node-prod/CartCost.js +27 -22
  399. package/dist/node-prod/CartCost.js.map +1 -1
  400. package/dist/node-prod/CartCost.mjs +26 -22
  401. package/dist/node-prod/CartCost.mjs.map +1 -1
  402. package/dist/node-prod/CartLineProvider.js +24 -17
  403. package/dist/node-prod/CartLineProvider.js.map +1 -1
  404. package/dist/node-prod/CartLineProvider.mjs +23 -18
  405. package/dist/node-prod/CartLineProvider.mjs.map +1 -1
  406. package/dist/node-prod/CartLineQuantity.js +19 -9
  407. package/dist/node-prod/CartLineQuantity.js.map +1 -1
  408. package/dist/node-prod/CartLineQuantity.mjs +18 -9
  409. package/dist/node-prod/CartLineQuantity.mjs.map +1 -1
  410. package/dist/node-prod/CartLineQuantityAdjustButton.js +50 -46
  411. package/dist/node-prod/CartLineQuantityAdjustButton.js.map +1 -1
  412. package/dist/node-prod/CartLineQuantityAdjustButton.mjs +48 -45
  413. package/dist/node-prod/CartLineQuantityAdjustButton.mjs.map +1 -1
  414. package/dist/node-prod/CartProvider.js +317 -385
  415. package/dist/node-prod/CartProvider.js.map +1 -1
  416. package/dist/node-prod/CartProvider.mjs +315 -385
  417. package/dist/node-prod/CartProvider.mjs.map +1 -1
  418. package/dist/node-prod/ExternalVideo.js +36 -47
  419. package/dist/node-prod/ExternalVideo.js.map +1 -1
  420. package/dist/node-prod/ExternalVideo.mjs +35 -47
  421. package/dist/node-prod/ExternalVideo.mjs.map +1 -1
  422. package/dist/node-prod/Image.js +328 -340
  423. package/dist/node-prod/Image.js.map +1 -1
  424. package/dist/node-prod/Image.mjs +326 -325
  425. package/dist/node-prod/Image.mjs.map +1 -1
  426. package/dist/node-prod/MediaFile.js +47 -65
  427. package/dist/node-prod/MediaFile.js.map +1 -1
  428. package/dist/node-prod/MediaFile.mjs +44 -63
  429. package/dist/node-prod/MediaFile.mjs.map +1 -1
  430. package/dist/node-prod/ModelViewer.js +118 -135
  431. package/dist/node-prod/ModelViewer.js.map +1 -1
  432. package/dist/node-prod/ModelViewer.mjs +117 -135
  433. package/dist/node-prod/ModelViewer.mjs.map +1 -1
  434. package/dist/node-prod/Money.js +54 -39
  435. package/dist/node-prod/Money.js.map +1 -1
  436. package/dist/node-prod/Money.mjs +53 -39
  437. package/dist/node-prod/Money.mjs.map +1 -1
  438. package/dist/node-prod/ProductPrice.js +45 -61
  439. package/dist/node-prod/ProductPrice.js.map +1 -1
  440. package/dist/node-prod/ProductPrice.mjs +44 -61
  441. package/dist/node-prod/ProductPrice.mjs.map +1 -1
  442. package/dist/node-prod/ProductProvider.js +148 -178
  443. package/dist/node-prod/ProductProvider.js.map +1 -1
  444. package/dist/node-prod/ProductProvider.mjs +147 -179
  445. package/dist/node-prod/ProductProvider.mjs.map +1 -1
  446. package/dist/node-prod/RichText.components.js +37 -46
  447. package/dist/node-prod/RichText.components.js.map +1 -1
  448. package/dist/node-prod/RichText.components.mjs +36 -46
  449. package/dist/node-prod/RichText.components.mjs.map +1 -1
  450. package/dist/node-prod/RichText.js +112 -154
  451. package/dist/node-prod/RichText.js.map +1 -1
  452. package/dist/node-prod/RichText.mjs +111 -154
  453. package/dist/node-prod/RichText.mjs.map +1 -1
  454. package/dist/node-prod/ShopPayButton.js +54 -81
  455. package/dist/node-prod/ShopPayButton.js.map +1 -1
  456. package/dist/node-prod/ShopPayButton.mjs +53 -81
  457. package/dist/node-prod/ShopPayButton.mjs.map +1 -1
  458. package/dist/node-prod/ShopifyProvider.js +73 -83
  459. package/dist/node-prod/ShopifyProvider.js.map +1 -1
  460. package/dist/node-prod/ShopifyProvider.mjs +71 -84
  461. package/dist/node-prod/ShopifyProvider.mjs.map +1 -1
  462. package/dist/node-prod/Video.js +36 -52
  463. package/dist/node-prod/Video.js.map +1 -1
  464. package/dist/node-prod/Video.mjs +35 -52
  465. package/dist/node-prod/Video.mjs.map +1 -1
  466. package/dist/node-prod/_virtual/_rolldown/runtime.js +23 -0
  467. package/dist/node-prod/analytics-constants.js +40 -39
  468. package/dist/node-prod/analytics-constants.js.map +1 -1
  469. package/dist/node-prod/analytics-constants.mjs +41 -43
  470. package/dist/node-prod/analytics-constants.mjs.map +1 -1
  471. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js +128 -210
  472. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js.map +1 -1
  473. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs +127 -214
  474. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
  475. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.js +40 -51
  476. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.js.map +1 -1
  477. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.mjs +39 -50
  478. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
  479. package/dist/node-prod/analytics-utils.js +77 -52
  480. package/dist/node-prod/analytics-utils.js.map +1 -1
  481. package/dist/node-prod/analytics-utils.mjs +78 -56
  482. package/dist/node-prod/analytics-utils.mjs.map +1 -1
  483. package/dist/node-prod/analytics.js +113 -154
  484. package/dist/node-prod/analytics.js.map +1 -1
  485. package/dist/node-prod/analytics.mjs +111 -153
  486. package/dist/node-prod/analytics.mjs.map +1 -1
  487. package/dist/node-prod/cart-constants.js +10 -9
  488. package/dist/node-prod/cart-constants.js.map +1 -1
  489. package/dist/node-prod/cart-constants.mjs +11 -15
  490. package/dist/node-prod/cart-constants.mjs.map +1 -1
  491. package/dist/node-prod/cart-hooks.js +43 -57
  492. package/dist/node-prod/cart-hooks.js.map +1 -1
  493. package/dist/node-prod/cart-hooks.mjs +42 -57
  494. package/dist/node-prod/cart-hooks.mjs.map +1 -1
  495. package/dist/node-prod/cart-queries.js +58 -125
  496. package/dist/node-prod/cart-queries.js.map +1 -1
  497. package/dist/node-prod/cart-queries.mjs +59 -135
  498. package/dist/node-prod/cart-queries.mjs.map +1 -1
  499. package/dist/node-prod/codegen.helpers.js +30 -18
  500. package/dist/node-prod/codegen.helpers.js.map +1 -1
  501. package/dist/node-prod/codegen.helpers.mjs +31 -20
  502. package/dist/node-prod/codegen.helpers.mjs.map +1 -1
  503. package/dist/node-prod/cookies-utils.js +45 -42
  504. package/dist/node-prod/cookies-utils.js.map +1 -1
  505. package/dist/node-prod/cookies-utils.mjs +44 -42
  506. package/dist/node-prod/cookies-utils.mjs.map +1 -1
  507. package/dist/node-prod/flatten-connection.js +22 -24
  508. package/dist/node-prod/flatten-connection.js.map +1 -1
  509. package/dist/node-prod/flatten-connection.mjs +23 -25
  510. package/dist/node-prod/flatten-connection.mjs.map +1 -1
  511. package/dist/node-prod/getProductOptions.js +248 -224
  512. package/dist/node-prod/getProductOptions.js.map +1 -1
  513. package/dist/node-prod/getProductOptions.mjs +248 -226
  514. package/dist/node-prod/getProductOptions.mjs.map +1 -1
  515. package/dist/node-prod/index.js +88 -90
  516. package/dist/node-prod/index.mjs +15 -70
  517. package/dist/node-prod/load-script.js +38 -48
  518. package/dist/node-prod/load-script.js.map +1 -1
  519. package/dist/node-prod/load-script.mjs +38 -49
  520. package/dist/node-prod/load-script.mjs.map +1 -1
  521. package/dist/node-prod/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.js +185 -124
  522. package/dist/node-prod/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.js.map +1 -1
  523. package/dist/node-prod/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs +175 -123
  524. package/dist/node-prod/node_modules/.pnpm/@xstate_fsm@2.0.0/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  525. package/dist/node-prod/optionValueDecoder.js +103 -84
  526. package/dist/node-prod/optionValueDecoder.js.map +1 -1
  527. package/dist/node-prod/optionValueDecoder.mjs +104 -86
  528. package/dist/node-prod/optionValueDecoder.mjs.map +1 -1
  529. package/dist/node-prod/packages/hydrogen-react/package.js +6 -0
  530. package/dist/node-prod/packages/hydrogen-react/package.js.map +1 -0
  531. package/dist/node-prod/packages/hydrogen-react/package.mjs +6 -0
  532. package/dist/node-prod/packages/hydrogen-react/package.mjs.map +1 -0
  533. package/dist/node-prod/parse-metafield.js +134 -146
  534. package/dist/node-prod/parse-metafield.js.map +1 -1
  535. package/dist/node-prod/parse-metafield.mjs +134 -146
  536. package/dist/node-prod/parse-metafield.mjs.map +1 -1
  537. package/dist/node-prod/storefront-api-constants.js +5 -4
  538. package/dist/node-prod/storefront-api-constants.js.map +1 -1
  539. package/dist/node-prod/storefront-api-constants.mjs +6 -5
  540. package/dist/node-prod/storefront-api-constants.mjs.map +1 -1
  541. package/dist/node-prod/storefront-client.js +56 -83
  542. package/dist/node-prod/storefront-client.js.map +1 -1
  543. package/dist/node-prod/storefront-client.mjs +56 -84
  544. package/dist/node-prod/storefront-client.mjs.map +1 -1
  545. package/dist/node-prod/tracking-utils.js +67 -85
  546. package/dist/node-prod/tracking-utils.js.map +1 -1
  547. package/dist/node-prod/tracking-utils.mjs +68 -88
  548. package/dist/node-prod/tracking-utils.mjs.map +1 -1
  549. package/dist/node-prod/useCartAPIStateMachine.js +192 -349
  550. package/dist/node-prod/useCartAPIStateMachine.js.map +1 -1
  551. package/dist/node-prod/useCartAPIStateMachine.mjs +188 -346
  552. package/dist/node-prod/useCartAPIStateMachine.mjs.map +1 -1
  553. package/dist/node-prod/useCartActions.js +198 -172
  554. package/dist/node-prod/useCartActions.js.map +1 -1
  555. package/dist/node-prod/useCartActions.mjs +197 -172
  556. package/dist/node-prod/useCartActions.mjs.map +1 -1
  557. package/dist/node-prod/useMachine.js +50 -61
  558. package/dist/node-prod/useMachine.js.map +1 -1
  559. package/dist/node-prod/useMachine.mjs +50 -62
  560. package/dist/node-prod/useMachine.mjs.map +1 -1
  561. package/dist/node-prod/useMoney.js +177 -154
  562. package/dist/node-prod/useMoney.js.map +1 -1
  563. package/dist/node-prod/useMoney.mjs +176 -154
  564. package/dist/node-prod/useMoney.mjs.map +1 -1
  565. package/dist/node-prod/useSelectedOptionInUrlParam.js +18 -27
  566. package/dist/node-prod/useSelectedOptionInUrlParam.js.map +1 -1
  567. package/dist/node-prod/useSelectedOptionInUrlParam.mjs +17 -27
  568. package/dist/node-prod/useSelectedOptionInUrlParam.mjs.map +1 -1
  569. package/dist/node-prod/useShopifyCookies.js +124 -138
  570. package/dist/node-prod/useShopifyCookies.js.map +1 -1
  571. package/dist/node-prod/useShopifyCookies.mjs +123 -138
  572. package/dist/node-prod/useShopifyCookies.mjs.map +1 -1
  573. package/dist/types/AddToCartButton.d.ts +2 -0
  574. package/dist/types/BuyNowButton.d.ts +2 -0
  575. package/dist/types/CartCheckoutButton.d.ts +2 -0
  576. package/dist/types/CartCost.d.ts +2 -0
  577. package/dist/types/CartLineProvider.d.ts +2 -0
  578. package/dist/types/CartLineQuantity.d.ts +2 -0
  579. package/dist/types/CartLineQuantityAdjustButton.d.ts +1 -0
  580. package/dist/types/CartProvider.d.ts +7 -1
  581. package/dist/types/ExternalVideo.d.ts +4 -0
  582. package/dist/types/Image.d.ts +2 -0
  583. package/dist/types/MediaFile.d.ts +4 -0
  584. package/dist/types/ModelViewer.d.ts +1 -0
  585. package/dist/types/Money.d.ts +1 -0
  586. package/dist/types/ProductPrice.d.ts +2 -0
  587. package/dist/types/ProductProvider.d.ts +2 -0
  588. package/dist/types/RichText.d.ts +2 -0
  589. package/dist/types/ShopPayButton.d.ts +1 -0
  590. package/dist/types/ShopifyProvider.d.ts +2 -0
  591. package/dist/types/Video.d.ts +2 -0
  592. package/dist/types/analytics-constants.d.ts +9 -0
  593. package/dist/types/analytics-types.d.ts +1 -0
  594. package/dist/types/analytics-utils.d.ts +1 -0
  595. package/dist/types/analytics.d.ts +6 -1
  596. package/dist/types/cart-queries.d.ts +13 -9
  597. package/dist/types/codegen.helpers.d.ts +2 -0
  598. package/dist/types/cookies-utils.d.ts +2 -1
  599. package/dist/types/flatten-connection.d.ts +3 -0
  600. package/dist/types/getProductOptions.d.ts +3 -0
  601. package/dist/types/load-script.d.ts +3 -1
  602. package/dist/types/optionValueDecoder.d.ts +3 -0
  603. package/dist/types/parse-metafield.d.ts +1 -0
  604. package/dist/types/storefront-client.d.ts +1 -0
  605. package/dist/types/tracking-utils.d.ts +2 -2
  606. package/dist/types/useMoney.d.ts +1 -0
  607. package/dist/types/useSelectedOptionInUrlParam.d.ts +1 -0
  608. package/dist/types/useShopifyCookies.d.ts +1 -0
  609. package/dist/umd/hydrogen-react.dev.js +3957 -4483
  610. package/dist/umd/hydrogen-react.dev.js.map +1 -1
  611. package/dist/umd/hydrogen-react.prod.js +42 -101
  612. package/dist/umd/hydrogen-react.prod.js.map +1 -1
  613. package/package.json +5 -5
  614. package/dist/browser-dev/index.mjs.map +0 -1
  615. package/dist/browser-dev/packages/hydrogen-react/package.json.mjs +0 -5
  616. package/dist/browser-dev/packages/hydrogen-react/package.json.mjs.map +0 -1
  617. package/dist/browser-prod/index.mjs.map +0 -1
  618. package/dist/browser-prod/packages/hydrogen-react/package.json.mjs +0 -5
  619. package/dist/browser-prod/packages/hydrogen-react/package.json.mjs.map +0 -1
  620. package/dist/node-dev/index.js.map +0 -1
  621. package/dist/node-dev/index.mjs.map +0 -1
  622. package/dist/node-dev/packages/hydrogen-react/package.json.js +0 -5
  623. package/dist/node-dev/packages/hydrogen-react/package.json.js.map +0 -1
  624. package/dist/node-dev/packages/hydrogen-react/package.json.mjs +0 -5
  625. package/dist/node-dev/packages/hydrogen-react/package.json.mjs.map +0 -1
  626. package/dist/node-prod/index.js.map +0 -1
  627. package/dist/node-prod/index.mjs.map +0 -1
  628. package/dist/node-prod/packages/hydrogen-react/package.json.js +0 -5
  629. package/dist/node-prod/packages/hydrogen-react/package.json.js.map +0 -1
  630. package/dist/node-prod/packages/hydrogen-react/package.json.mjs +0 -5
  631. package/dist/node-prod/packages/hydrogen-react/package.json.mjs.map +0 -1
@@ -1,25 +1,12 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const jsxRuntime = require("react/jsx-runtime");
4
- const React = require("react");
5
- function _interopNamespaceDefault(e) {
6
- const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
7
- if (e) {
8
- for (const k in e) {
9
- if (k !== "default") {
10
- const d = Object.getOwnPropertyDescriptor(e, k);
11
- Object.defineProperty(n, k, d.get ? d : {
12
- enumerable: true,
13
- get: () => e[k]
14
- });
15
- }
16
- }
17
- }
18
- n.default = e;
19
- return Object.freeze(n);
20
- }
21
- const React__namespace = /* @__PURE__ */ _interopNamespaceDefault(React);
22
- const IMAGE_FRAGMENT = `#graphql
1
+ const require_runtime = require("./_virtual/_rolldown/runtime.js");
2
+ let react = require("react");
3
+ react = require_runtime.__toESM(react);
4
+ let react_jsx_runtime = require("react/jsx-runtime");
5
+ //#region src/Image.tsx
6
+ /**
7
+ * A Storefront API GraphQL fragment that can be used to query for an image.
8
+ */
9
+ var IMAGE_FRAGMENT = `#graphql
23
10
  fragment Image on Image {
24
11
  altText
25
12
  url
@@ -27,342 +14,343 @@ const IMAGE_FRAGMENT = `#graphql
27
14
  height
28
15
  }
29
16
  `;
30
- const Image = React__namespace.forwardRef(
31
- ({
32
- alt,
33
- aspectRatio,
34
- crop = "center",
35
- data,
36
- decoding = "async",
37
- height = "auto",
38
- loader = shopifyLoader,
39
- loading = "lazy",
40
- sizes,
41
- src,
42
- srcSetOptions = {
43
- intervals: 15,
44
- startingWidth: 200,
45
- incrementSize: 200,
46
- placeholderWidth: 100
47
- },
48
- width = "100%",
49
- ...passthroughProps
50
- }, ref) => {
51
- const normalizedData = React__namespace.useMemo(() => {
52
- const dataWidth = (data == null ? void 0 : data.width) && (data == null ? void 0 : data.height) ? data == null ? void 0 : data.width : void 0;
53
- const dataHeight = (data == null ? void 0 : data.width) && (data == null ? void 0 : data.height) ? data == null ? void 0 : data.height : void 0;
54
- return {
55
- width: dataWidth,
56
- height: dataHeight,
57
- unitsMatch: Boolean(unitsMatch(dataWidth, dataHeight))
58
- };
59
- }, [data]);
60
- const normalizedProps = React__namespace.useMemo(() => {
61
- const nWidthProp = width || "100%";
62
- const widthParts = getUnitValueParts(nWidthProp.toString());
63
- const nWidth = `${widthParts.number}${widthParts.unit}`;
64
- const autoHeight = height === void 0 || height === null;
65
- const heightParts = autoHeight ? null : getUnitValueParts(height.toString());
66
- const fixedHeight = heightParts ? `${heightParts.number}${heightParts.unit}` : "";
67
- const nHeight = autoHeight ? "auto" : fixedHeight;
68
- const nSrc = src || (data == null ? void 0 : data.url);
69
- const nAlt = (data == null ? void 0 : data.altText) && !alt ? data == null ? void 0 : data.altText : alt || "";
70
- const nAspectRatio = aspectRatio ? aspectRatio : normalizedData.unitsMatch ? [
71
- getNormalizedFixedUnit(normalizedData.width),
72
- getNormalizedFixedUnit(normalizedData.height)
73
- ].join("/") : void 0;
74
- return {
75
- width: nWidth,
76
- height: nHeight,
77
- src: nSrc,
78
- alt: nAlt,
79
- aspectRatio: nAspectRatio
80
- };
81
- }, [
82
- width,
83
- height,
84
- src,
85
- data,
86
- alt,
87
- aspectRatio,
88
- normalizedData,
89
- passthroughProps == null ? void 0 : passthroughProps.key
90
- ]);
91
- const { intervals, startingWidth, incrementSize, placeholderWidth } = srcSetOptions;
92
- const imageWidths = React__namespace.useMemo(() => {
93
- return generateImageWidths(
94
- width,
95
- intervals,
96
- startingWidth,
97
- incrementSize
98
- );
99
- }, [width, intervals, startingWidth, incrementSize]);
100
- const fixedWidth = isFixedWidth(normalizedProps.width);
101
- if (fixedWidth) {
102
- return /* @__PURE__ */ jsxRuntime.jsx(
103
- FixedWidthImage,
104
- {
105
- aspectRatio,
106
- crop,
107
- decoding,
108
- height,
109
- imageWidths,
110
- loader,
111
- loading,
112
- normalizedProps,
113
- passthroughProps,
114
- ref,
115
- width,
116
- data
117
- }
118
- );
119
- } else {
120
- return /* @__PURE__ */ jsxRuntime.jsx(
121
- FluidImage,
122
- {
123
- aspectRatio,
124
- crop,
125
- decoding,
126
- imageWidths,
127
- loader,
128
- loading,
129
- normalizedProps,
130
- passthroughProps,
131
- placeholderWidth,
132
- ref,
133
- sizes,
134
- data
135
- }
136
- );
137
- }
138
- }
139
- );
140
- const FixedWidthImage = React__namespace.forwardRef(
141
- ({
142
- aspectRatio,
143
- crop,
144
- decoding,
145
- height,
146
- imageWidths,
147
- loader = shopifyLoader,
148
- loading,
149
- normalizedProps,
150
- passthroughProps,
151
- width,
152
- data
153
- }, ref) => {
154
- const fixed = React__namespace.useMemo(() => {
155
- const intWidth = getNormalizedFixedUnit(width);
156
- const intHeight = getNormalizedFixedUnit(height);
157
- const fixedAspectRatio = aspectRatio ? aspectRatio : unitsMatch(normalizedProps.width, normalizedProps.height) ? [intWidth, intHeight].join("/") : normalizedProps.aspectRatio ? normalizedProps.aspectRatio : void 0;
158
- const sizesArray = imageWidths === void 0 ? void 0 : generateSizes(imageWidths, fixedAspectRatio, crop, {
159
- width: (data == null ? void 0 : data.width) ?? void 0,
160
- height: (data == null ? void 0 : data.height) ?? void 0
161
- });
162
- const fixedHeight = intHeight ? intHeight : fixedAspectRatio && intWidth ? intWidth * (parseAspectRatio(fixedAspectRatio) ?? 1) : void 0;
163
- const srcSet = generateSrcSet(normalizedProps.src, sizesArray, loader);
164
- const src = loader({
165
- src: normalizedProps.src,
166
- width: intWidth,
167
- height: fixedHeight,
168
- crop: normalizedProps.height === "auto" ? void 0 : crop
169
- });
170
- return {
171
- width: intWidth,
172
- aspectRatio: fixedAspectRatio,
173
- height: fixedHeight,
174
- srcSet,
175
- src
176
- };
177
- }, [
178
- aspectRatio,
179
- crop,
180
- data,
181
- height,
182
- imageWidths,
183
- loader,
184
- normalizedProps,
185
- width
186
- ]);
187
- return /* @__PURE__ */ jsxRuntime.jsx(
188
- "img",
189
- {
190
- ref,
191
- alt: normalizedProps.alt,
192
- decoding,
193
- height: fixed.height,
194
- loading,
195
- src: fixed.src,
196
- srcSet: fixed.srcSet,
197
- width: fixed.width,
198
- style: {
199
- aspectRatio: fixed.aspectRatio,
200
- ...passthroughProps.style
201
- },
202
- ...passthroughProps
203
- }
204
- );
205
- }
206
- );
207
- const FluidImage = React__namespace.forwardRef(
208
- ({
209
- crop,
210
- decoding,
211
- imageWidths,
212
- loader = shopifyLoader,
213
- loading,
214
- normalizedProps,
215
- passthroughProps,
216
- placeholderWidth,
217
- sizes,
218
- data
219
- }, ref) => {
220
- const fluid = React__namespace.useMemo(() => {
221
- const sizesArray = imageWidths === void 0 ? void 0 : generateSizes(imageWidths, normalizedProps.aspectRatio, crop, {
222
- width: (data == null ? void 0 : data.width) ?? void 0,
223
- height: (data == null ? void 0 : data.height) ?? void 0
224
- });
225
- const placeholderHeight = normalizedProps.aspectRatio && placeholderWidth ? placeholderWidth * (parseAspectRatio(normalizedProps.aspectRatio) ?? 1) : void 0;
226
- const srcSet = generateSrcSet(normalizedProps.src, sizesArray, loader);
227
- const src = loader({
228
- src: normalizedProps.src,
229
- width: placeholderWidth,
230
- height: placeholderHeight,
231
- crop
232
- });
233
- return {
234
- placeholderHeight,
235
- srcSet,
236
- src
237
- };
238
- }, [crop, data, imageWidths, loader, normalizedProps, placeholderWidth]);
239
- return /* @__PURE__ */ jsxRuntime.jsx(
240
- "img",
241
- {
242
- ref,
243
- alt: normalizedProps.alt,
244
- decoding,
245
- height: fluid.placeholderHeight,
246
- loading,
247
- sizes,
248
- src: fluid.src,
249
- srcSet: fluid.srcSet,
250
- width: placeholderWidth,
251
- ...passthroughProps,
252
- style: {
253
- width: normalizedProps.width,
254
- aspectRatio: normalizedProps.aspectRatio,
255
- ...passthroughProps.style
256
- }
257
- }
258
- );
259
- }
260
- );
261
- const PLACEHOLDER_DOMAIN = "https://placeholder.shopify.com";
17
+ /**
18
+ * Hydrogen’s Image component is a wrapper around the HTML image element.
19
+ * It supports the same props as the HTML `img` element, but automatically
20
+ * generates the srcSet and sizes attributes for you. For most use cases,
21
+ * you’ll want to set the `aspectRatio` prop to ensure the image is sized
22
+ * correctly.
23
+ *
24
+ * @remarks
25
+ * - `decoding` is set to `async` by default.
26
+ * - `loading` is set to `lazy` by default.
27
+ * - `alt` will automatically be set to the `altText` from the Storefront API if passed in the `data` prop
28
+ * - `src` will automatically be set to the `url` from the Storefront API if passed in the `data` prop
29
+ *
30
+ * @example
31
+ * A responsive image with a 4:5 aspect ratio:
32
+ * ```
33
+ * <Image
34
+ * data={product.featuredImage}
35
+ * aspectRatio="4/5"
36
+ * sizes="(min-width: 45em) 40vw, 100vw"
37
+ * />
38
+ * ```
39
+ * @example
40
+ * A fixed size image:
41
+ * ```
42
+ * <Image
43
+ * data={product.featuredImage}
44
+ * width={100}
45
+ * height={100}
46
+ * />
47
+ * ```
48
+ *
49
+ * {@link https://shopify.dev/docs/api/hydrogen-react/components/image}
50
+ * @publicDocs
51
+ */
52
+ var Image = react.forwardRef(({ alt, aspectRatio, crop = "center", data, decoding = "async", height = "auto", loader = shopifyLoader, loading = "lazy", sizes, src, srcSetOptions = {
53
+ intervals: 15,
54
+ startingWidth: 200,
55
+ incrementSize: 200,
56
+ placeholderWidth: 100
57
+ }, width = "100%", ...passthroughProps }, ref) => {
58
+ const normalizedData = react.useMemo(() => {
59
+ const dataWidth = data?.width && data?.height ? data?.width : void 0;
60
+ const dataHeight = data?.width && data?.height ? data?.height : void 0;
61
+ return {
62
+ width: dataWidth,
63
+ height: dataHeight,
64
+ unitsMatch: Boolean(unitsMatch(dataWidth, dataHeight))
65
+ };
66
+ }, [data]);
67
+ const normalizedProps = react.useMemo(() => {
68
+ const widthParts = getUnitValueParts((width || "100%").toString());
69
+ const nWidth = `${widthParts.number}${widthParts.unit}`;
70
+ const autoHeight = height === void 0 || height === null;
71
+ const heightParts = autoHeight ? null : getUnitValueParts(height.toString());
72
+ const fixedHeight = heightParts ? `${heightParts.number}${heightParts.unit}` : "";
73
+ return {
74
+ width: nWidth,
75
+ height: autoHeight ? "auto" : fixedHeight,
76
+ src: src || data?.url,
77
+ alt: data?.altText && !alt ? data?.altText : alt || "",
78
+ aspectRatio: aspectRatio ? aspectRatio : normalizedData.unitsMatch ? [getNormalizedFixedUnit(normalizedData.width), getNormalizedFixedUnit(normalizedData.height)].join("/") : void 0
79
+ };
80
+ }, [
81
+ width,
82
+ height,
83
+ src,
84
+ data,
85
+ alt,
86
+ aspectRatio,
87
+ normalizedData,
88
+ passthroughProps?.key
89
+ ]);
90
+ const { intervals, startingWidth, incrementSize, placeholderWidth } = srcSetOptions;
91
+ const imageWidths = react.useMemo(() => {
92
+ return generateImageWidths(width, intervals, startingWidth, incrementSize);
93
+ }, [
94
+ width,
95
+ intervals,
96
+ startingWidth,
97
+ incrementSize
98
+ ]);
99
+ if (isFixedWidth(normalizedProps.width)) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FixedWidthImage, {
100
+ aspectRatio,
101
+ crop,
102
+ decoding,
103
+ height,
104
+ imageWidths,
105
+ loader,
106
+ loading,
107
+ normalizedProps,
108
+ passthroughProps,
109
+ ref,
110
+ width,
111
+ data
112
+ });
113
+ else return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FluidImage, {
114
+ aspectRatio,
115
+ crop,
116
+ decoding,
117
+ imageWidths,
118
+ loader,
119
+ loading,
120
+ normalizedProps,
121
+ passthroughProps,
122
+ placeholderWidth,
123
+ ref,
124
+ sizes,
125
+ data
126
+ });
127
+ });
128
+ var FixedWidthImage = react.forwardRef(({ aspectRatio, crop, decoding, height, imageWidths, loader = shopifyLoader, loading, normalizedProps, passthroughProps, width, data }, ref) => {
129
+ const fixed = react.useMemo(() => {
130
+ const intWidth = getNormalizedFixedUnit(width);
131
+ const intHeight = getNormalizedFixedUnit(height);
132
+ const fixedAspectRatio = aspectRatio ? aspectRatio : unitsMatch(normalizedProps.width, normalizedProps.height) ? [intWidth, intHeight].join("/") : normalizedProps.aspectRatio ? normalizedProps.aspectRatio : void 0;
133
+ const sizesArray = imageWidths === void 0 ? void 0 : generateSizes(imageWidths, fixedAspectRatio, crop, {
134
+ width: data?.width ?? void 0,
135
+ height: data?.height ?? void 0
136
+ });
137
+ const fixedHeight = intHeight ? intHeight : fixedAspectRatio && intWidth ? intWidth * (parseAspectRatio(fixedAspectRatio) ?? 1) : void 0;
138
+ return {
139
+ width: intWidth,
140
+ aspectRatio: fixedAspectRatio,
141
+ height: fixedHeight,
142
+ srcSet: generateSrcSet(normalizedProps.src, sizesArray, loader),
143
+ src: loader({
144
+ src: normalizedProps.src,
145
+ width: intWidth,
146
+ height: fixedHeight,
147
+ crop: normalizedProps.height === "auto" ? void 0 : crop
148
+ })
149
+ };
150
+ }, [
151
+ aspectRatio,
152
+ crop,
153
+ data,
154
+ height,
155
+ imageWidths,
156
+ loader,
157
+ normalizedProps,
158
+ width
159
+ ]);
160
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
161
+ ref,
162
+ alt: normalizedProps.alt,
163
+ decoding,
164
+ height: fixed.height,
165
+ loading,
166
+ src: fixed.src,
167
+ srcSet: fixed.srcSet,
168
+ width: fixed.width,
169
+ style: {
170
+ aspectRatio: fixed.aspectRatio,
171
+ ...passthroughProps.style
172
+ },
173
+ ...passthroughProps
174
+ });
175
+ });
176
+ var FluidImage = react.forwardRef(({ crop, decoding, imageWidths, loader = shopifyLoader, loading, normalizedProps, passthroughProps, placeholderWidth, sizes, data }, ref) => {
177
+ const fluid = react.useMemo(() => {
178
+ const sizesArray = imageWidths === void 0 ? void 0 : generateSizes(imageWidths, normalizedProps.aspectRatio, crop, {
179
+ width: data?.width ?? void 0,
180
+ height: data?.height ?? void 0
181
+ });
182
+ const placeholderHeight = normalizedProps.aspectRatio && placeholderWidth ? placeholderWidth * (parseAspectRatio(normalizedProps.aspectRatio) ?? 1) : void 0;
183
+ return {
184
+ placeholderHeight,
185
+ srcSet: generateSrcSet(normalizedProps.src, sizesArray, loader),
186
+ src: loader({
187
+ src: normalizedProps.src,
188
+ width: placeholderWidth,
189
+ height: placeholderHeight,
190
+ crop
191
+ })
192
+ };
193
+ }, [
194
+ crop,
195
+ data,
196
+ imageWidths,
197
+ loader,
198
+ normalizedProps,
199
+ placeholderWidth
200
+ ]);
201
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("img", {
202
+ ref,
203
+ alt: normalizedProps.alt,
204
+ decoding,
205
+ height: fluid.placeholderHeight,
206
+ loading,
207
+ sizes,
208
+ src: fluid.src,
209
+ srcSet: fluid.srcSet,
210
+ width: placeholderWidth,
211
+ ...passthroughProps,
212
+ style: {
213
+ width: normalizedProps.width,
214
+ aspectRatio: normalizedProps.aspectRatio,
215
+ ...passthroughProps.style
216
+ }
217
+ });
218
+ });
219
+ /**
220
+ * The shopifyLoader function is a simple utility function that takes a src, width,
221
+ * height, and crop and returns a string that can be used as the src for an image.
222
+ * It can be used with the Hydrogen Image component or with the next/image component.
223
+ * (or any others that accept equivalent configuration)
224
+ * @param src - The source URL of the image, e.g. `https://cdn.shopify.com/static/sample-images/garnished.jpeg`
225
+ * @param width - The width of the image, e.g. `100`
226
+ * @param height - The height of the image, e.g. `100`
227
+ * @param crop - The crop of the image, e.g. `center`
228
+ * @returns A Shopify image URL with the correct query parameters, e.g. `https://cdn.shopify.com/static/sample-images/garnished.jpeg?width=100&height=100&crop=center`
229
+ *
230
+ * @example
231
+ * ```
232
+ * shopifyLoader({
233
+ * src: 'https://cdn.shopify.com/static/sample-images/garnished.jpeg',
234
+ * width: 100,
235
+ * height: 100,
236
+ * crop: 'center',
237
+ * })
238
+ * ```
239
+ */
240
+ var PLACEHOLDER_DOMAIN = "https://placeholder.shopify.com";
262
241
  function shopifyLoader({ src, width, height, crop }) {
263
- if (!src) {
264
- return "";
265
- }
266
- const url = new URL(src, PLACEHOLDER_DOMAIN);
267
- if (width) {
268
- url.searchParams.append("width", Math.round(width).toString());
269
- }
270
- if (height) {
271
- url.searchParams.append("height", Math.round(height).toString());
272
- }
273
- if (crop) {
274
- url.searchParams.append("crop", crop);
275
- }
276
- return url.href.replace(PLACEHOLDER_DOMAIN, "");
242
+ if (!src) return "";
243
+ const url = new URL(src, PLACEHOLDER_DOMAIN);
244
+ if (width) url.searchParams.append("width", Math.round(width).toString());
245
+ if (height) url.searchParams.append("height", Math.round(height).toString());
246
+ if (crop) url.searchParams.append("crop", crop);
247
+ return url.href.replace(PLACEHOLDER_DOMAIN, "");
277
248
  }
249
+ /**
250
+ * Checks whether the width and height share the same unit type
251
+ * @param width - The width of the image, e.g. 100% | 10px
252
+ * @param height - The height of the image, e.g. auto | 100px
253
+ * @returns Whether the width and height share the same unit type (boolean)
254
+ */
278
255
  function unitsMatch(width = "100%", height = "auto") {
279
- return getUnitValueParts(width.toString()).unit === getUnitValueParts(height.toString()).unit;
256
+ return getUnitValueParts(width.toString()).unit === getUnitValueParts(height.toString()).unit;
280
257
  }
258
+ /**
259
+ * Given a CSS size, returns the unit and number parts of the value
260
+ * @param value - The CSS size, e.g. 100px
261
+ * @returns The unit and number parts of the value, e.g. \{unit: 'px', number: 100\}
262
+ */
281
263
  function getUnitValueParts(value) {
282
- const unit = value.replace(/[0-9.]/g, "");
283
- const number = parseFloat(value.replace(unit, ""));
284
- return {
285
- unit: unit === "" ? number === void 0 ? "auto" : "px" : unit,
286
- number
287
- };
264
+ const unit = value.replace(/[0-9.]/g, "");
265
+ const number = parseFloat(value.replace(unit, ""));
266
+ return {
267
+ unit: unit === "" ? number === void 0 ? "auto" : "px" : unit,
268
+ number
269
+ };
288
270
  }
271
+ /**
272
+ * Given a value, returns the width of the image as an integer in pixels
273
+ * @param value - The width of the image, e.g. 16px | 1rem | 1em | 16
274
+ * @returns The width of the image in pixels, e.g. 16, or undefined if the value is not a fixed unit
275
+ */
289
276
  function getNormalizedFixedUnit(value) {
290
- if (value === void 0) {
291
- return;
292
- }
293
- const { unit, number } = getUnitValueParts(value.toString());
294
- switch (unit) {
295
- case "em":
296
- return number * 16;
297
- case "rem":
298
- return number * 16;
299
- case "px":
300
- return number;
301
- case "":
302
- return number;
303
- default:
304
- return;
305
- }
277
+ if (value === void 0) return;
278
+ const { unit, number } = getUnitValueParts(value.toString());
279
+ switch (unit) {
280
+ case "em": return number * 16;
281
+ case "rem": return number * 16;
282
+ case "px": return number;
283
+ case "": return number;
284
+ default: return;
285
+ }
306
286
  }
287
+ /**
288
+ * This function checks whether a width is fixed or not.
289
+ * @param width - The width of the image, e.g. 100 | '100px' | '100em' | '100rem'
290
+ * @returns Whether the width is fixed or not
291
+ */
307
292
  function isFixedWidth(width) {
308
- const fixedEndings = /\d(px|em|rem)$/;
309
- return typeof width === "number" || fixedEndings.test(width);
293
+ return typeof width === "number" || /\d(px|em|rem)$/.test(width);
310
294
  }
295
+ /**
296
+ * This function generates a srcSet for Shopify images.
297
+ * @param src - The source URL of the image, e.g. https://cdn.shopify.com/static/sample-images/garnished.jpeg
298
+ * @param sizesArray - An array of objects containing the `width`, `height`, and `crop` of the image, e.g. [\{width: 200, height: 200, crop: 'center'\}, \{width: 400, height: 400, crop: 'center'\}]
299
+ * @param loader - A function that takes a Shopify image URL and returns a Shopify image URL with the correct query parameters
300
+ * @returns A srcSet for Shopify images, e.g. 'https://cdn.shopify.com/static/sample-images/garnished.jpeg?width=200&height=200&crop=center 200w, https://cdn.shopify.com/static/sample-images/garnished.jpeg?width=400&height=400&crop=center 400w'
301
+ */
311
302
  function generateSrcSet(src, sizesArray, loader = shopifyLoader) {
312
- if (!src) {
313
- return "";
314
- }
315
- if ((sizesArray == null ? void 0 : sizesArray.length) === 0 || !sizesArray) {
316
- return src;
317
- }
318
- return sizesArray.map(
319
- (size, i) => `${loader({
320
- src,
321
- width: size.width,
322
- height: size.height,
323
- crop: size.crop
324
- })} ${sizesArray.length === 3 ? `${i + 1}x` : `${size.width ?? 0}w`}`
325
- ).join(`, `);
303
+ if (!src) return "";
304
+ if (sizesArray?.length === 0 || !sizesArray) return src;
305
+ return sizesArray.map((size, i) => `${loader({
306
+ src,
307
+ width: size.width,
308
+ height: size.height,
309
+ crop: size.crop
310
+ })} ${sizesArray.length === 3 ? `${i + 1}x` : `${size.width ?? 0}w`}`).join(`, `);
326
311
  }
312
+ /**
313
+ * This function generates an array of sizes for Shopify images, for both fixed and responsive images.
314
+ * @param width - The CSS width of the image
315
+ * @param intervals - The number of intervals to generate
316
+ * @param startingWidth - The starting width of the image
317
+ * @param incrementSize - The size of each interval
318
+ * @returns An array of widths
319
+ */
327
320
  function generateImageWidths(width = "100%", intervals, startingWidth, incrementSize) {
328
- const responsive = Array.from(
329
- { length: intervals },
330
- (_, i) => i * incrementSize + startingWidth
331
- );
332
- const fixed = Array.from(
333
- { length: 3 },
334
- (_, i) => (i + 1) * (getNormalizedFixedUnit(width) ?? 0)
335
- );
336
- return isFixedWidth(width) ? fixed : responsive;
321
+ const responsive = Array.from({ length: intervals }, (_, i) => i * incrementSize + startingWidth);
322
+ const fixed = Array.from({ length: 3 }, (_, i) => (i + 1) * (getNormalizedFixedUnit(width) ?? 0));
323
+ return isFixedWidth(width) ? fixed : responsive;
337
324
  }
325
+ /**
326
+ * Simple utility function to convert an aspect ratio CSS string to a decimal, currently only supports values like `1/1`, not `0.5`, or `auto`
327
+ * @param aspectRatio - The aspect ratio of the image, e.g. `1/1`
328
+ * @returns The aspect ratio as a number, e.g. `0.5`
329
+ *
330
+ * {@link https://developer.mozilla.org/en-US/docs/Web/CSS/aspect-ratio}
331
+ */
338
332
  function parseAspectRatio(aspectRatio) {
339
- if (!aspectRatio) return;
340
- const [width, height] = aspectRatio.split("/");
341
- return 1 / (Number(width) / Number(height));
333
+ if (!aspectRatio) return;
334
+ const [width, height] = aspectRatio.split("/");
335
+ return 1 / (Number(width) / Number(height));
342
336
  }
343
337
  function generateSizes(imageWidths, aspectRatio, crop = "center", sourceDimensions) {
344
- if (!imageWidths) return;
345
- return imageWidths.map((width) => {
346
- return {
347
- width,
348
- height: aspectRatio ? width * (parseAspectRatio(aspectRatio) ?? 1) : void 0,
349
- crop
350
- };
351
- }).filter(({ width, height }) => {
352
- if ((sourceDimensions == null ? void 0 : sourceDimensions.width) && width > sourceDimensions.width) {
353
- return false;
354
- }
355
- if ((sourceDimensions == null ? void 0 : sourceDimensions.height) && height && height > sourceDimensions.height) {
356
- return false;
357
- }
358
- return true;
359
- });
338
+ if (!imageWidths) return;
339
+ return imageWidths.map((width) => {
340
+ return {
341
+ width,
342
+ height: aspectRatio ? width * (parseAspectRatio(aspectRatio) ?? 1) : void 0,
343
+ crop
344
+ };
345
+ }).filter(({ width, height }) => {
346
+ if (sourceDimensions?.width && width > sourceDimensions.width) return false;
347
+ if (sourceDimensions?.height && height && height > sourceDimensions.height) return false;
348
+ return true;
349
+ });
360
350
  }
351
+ //#endregion
361
352
  exports.IMAGE_FRAGMENT = IMAGE_FRAGMENT;
362
353
  exports.Image = Image;
363
- exports.generateImageWidths = generateImageWidths;
364
- exports.generateSizes = generateSizes;
365
- exports.generateSrcSet = generateSrcSet;
366
- exports.parseAspectRatio = parseAspectRatio;
367
354
  exports.shopifyLoader = shopifyLoader;
368
- //# sourceMappingURL=Image.js.map
355
+
356
+ //# sourceMappingURL=Image.js.map