@shopify/hydrogen-react 2026.4.1 → 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 (595) 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 +28 -66
  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 +28 -66
  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 +27 -56
  305. package/dist/node-dev/cart-queries.js.map +1 -1
  306. package/dist/node-dev/cart-queries.mjs +28 -66
  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 +27 -56
  496. package/dist/node-prod/cart-queries.js.map +1 -1
  497. package/dist/node-prod/cart-queries.mjs +28 -66
  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/umd/hydrogen-react.dev.js +3930 -4418
  574. package/dist/umd/hydrogen-react.dev.js.map +1 -1
  575. package/dist/umd/hydrogen-react.prod.js +35 -49
  576. package/dist/umd/hydrogen-react.prod.js.map +1 -1
  577. package/package.json +5 -5
  578. package/dist/browser-dev/index.mjs.map +0 -1
  579. package/dist/browser-dev/packages/hydrogen-react/package.json.mjs +0 -5
  580. package/dist/browser-dev/packages/hydrogen-react/package.json.mjs.map +0 -1
  581. package/dist/browser-prod/index.mjs.map +0 -1
  582. package/dist/browser-prod/packages/hydrogen-react/package.json.mjs +0 -5
  583. package/dist/browser-prod/packages/hydrogen-react/package.json.mjs.map +0 -1
  584. package/dist/node-dev/index.js.map +0 -1
  585. package/dist/node-dev/index.mjs.map +0 -1
  586. package/dist/node-dev/packages/hydrogen-react/package.json.js +0 -5
  587. package/dist/node-dev/packages/hydrogen-react/package.json.js.map +0 -1
  588. package/dist/node-dev/packages/hydrogen-react/package.json.mjs +0 -5
  589. package/dist/node-dev/packages/hydrogen-react/package.json.mjs.map +0 -1
  590. package/dist/node-prod/index.js.map +0 -1
  591. package/dist/node-prod/index.mjs.map +0 -1
  592. package/dist/node-prod/packages/hydrogen-react/package.json.js +0 -5
  593. package/dist/node-prod/packages/hydrogen-react/package.json.js.map +0 -1
  594. package/dist/node-prod/packages/hydrogen-react/package.json.mjs +0 -5
  595. package/dist/node-prod/packages/hydrogen-react/package.json.mjs.map +0 -1
@@ -1,33 +1,20 @@
1
- (function(p,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],l):(p=typeof globalThis<"u"?globalThis:p||self,l(p.hydrogenreact={},p.React))})(this,(function(p,l){"use strict";function tn(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const n in e)if(n!=="default"){const r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:()=>e[n]})}}return t.default=e,Object.freeze(t)}const M=tn(l);/*! *****************************************************************************
2
- Copyright (c) Microsoft Corporation.
3
-
4
- Permission to use, copy, modify, and/or distribute this software for any
5
- purpose with or without fee is hereby granted.
6
-
7
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
8
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
9
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
10
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
11
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
12
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
13
- PERFORMANCE OF THIS SOFTWARE.
14
- ***************************************************************************** */function Qe(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var r,a,i=n.call(e),o=[];try{for(;(t===void 0||t-- >0)&&!(r=i.next()).done;)o.push(r.value)}catch(s){a={error:s}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(a)throw a.error}}return o}var te;(function(e){e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped"})(te||(te={}));var Je={type:"xstate.init"};function Re(e){return e===void 0?[]:[].concat(e)}function ae(e){return{type:"xstate.assign",assignment:e}}function Xe(e,t){return typeof(e=typeof e=="string"&&t&&t[e]?t[e]:e)=="string"?{type:e}:typeof e=="function"?{type:e.name,exec:e}:e}function Ce(e){return function(t){return e===t}}function Ze(e){return typeof e=="string"?{type:e}:e}function ze(e,t){return{value:e,context:t,actions:[],changed:!1,matches:Ce(e)}}function et(e,t,n){var r=t,a=!1;return[e.filter((function(i){if(i.type==="xstate.assign"){a=!0;var o=Object.assign({},r);return typeof i.assignment=="function"?o=i.assignment(r,n):Object.keys(i.assignment).forEach((function(s){o[s]=typeof i.assignment[s]=="function"?i.assignment[s](r,n):i.assignment[s]})),r=o,!1}return!0})),r,a]}function tt(e,t){t===void 0&&(t={});var n=Qe(et(Re(e.states[e.initial].entry).map((function(o){return Xe(o,t.actions)})),e.context,Je),2),r=n[0],a=n[1],i={config:e,_options:t,initialState:{value:e.initial,actions:r,context:a,matches:Ce(e.initial)},transition:function(o,s){var u,d,h=typeof o=="string"?{value:o,context:e.context}:o,f=h.value,y=h.context,E=Ze(s),c=e.states[f];if(c.on){var S=Re(c.on[E.type]);try{for(var T=(function(k){var ue=typeof Symbol=="function"&&Symbol.iterator,_e=ue&&k[ue],Te=0;if(_e)return _e.call(k);if(k&&typeof k.length=="number")return{next:function(){return k&&Te>=k.length&&(k=void 0),{value:k&&k[Te++],done:!k}}};throw new TypeError(ue?"Object is not iterable.":"Symbol.iterator is not defined.")})(S),A=T.next();!A.done;A=T.next()){var v=A.value;if(v===void 0)return ze(f,y);var w=typeof v=="string"?{target:v}:v,R=w.target,m=w.actions,g=m===void 0?[]:m,_=w.cond,P=_===void 0?function(){return!0}:_,O=R===void 0,b=R??f,I=e.states[b];if(P(y,E)){var H=Qe(et((O?Re(g):[].concat(c.exit,g,I.entry).filter((function(k){return k}))).map((function(k){return Xe(k,i._options.actions)})),y,E),3),V=H[0],$=H[1],ee=H[2],Ee=R??f;return{value:Ee,context:$,actions:V,changed:R!==f||V.length>0||ee,matches:Ce(Ee)}}}}catch(k){u={error:k}}finally{try{A&&!A.done&&(d=T.return)&&d.call(T)}finally{if(u)throw u.error}}}return ze(f,y)}};return i}var nt=function(e,t){return e.actions.forEach((function(n){var r=n.exec;return r&&r(e.context,t)}))};function nn(e){var t=e.initialState,n=te.NotStarted,r=new Set,a={_machine:e,send:function(i){n===te.Running&&(t=e.transition(t,i),nt(t,Ze(i)),r.forEach((function(o){return o(t)})))},subscribe:function(i){return r.add(i),i(t),{unsubscribe:function(){return r.delete(i)}}},start:function(i){if(i){var o=typeof i=="object"?i:{context:e.config.context,value:i};t={value:o.value,actions:[],context:o.context,matches:Ce(o.value)}}else t=e.initialState;return n=te.Running,nt(t,Je),a},stop:function(){return n=te.Stopped,r.clear(),a},get state(){return t},get status(){return n}};return a}const rn=typeof window<"u"?l.useLayoutEffect:l.useEffect;function an(e){const t=l.useRef();return t.current||(t.current={v:e()}),t.current.v}function on(e){let t;return e.subscribe(n=>t=n).unsubscribe(),t}function sn(e,t){const n=l.useRef(),[r,a]=an(()=>{const u=[],d=nn(tt(e.config,t||e._options)),h=d.send;return d.send=f=>{if(d.status===te.NotStarted){u.push(f);return}h(f),n.current=d.state},[d,u]});rn(()=>{t&&(r._machine._options=t)});const i=l.useCallback(()=>on(r),[r]),o=l.useCallback(u=>{const{unsubscribe:d}=r.subscribe(u);return d},[r]),s=l.useSyncExternalStore(o,i,i);return l.useEffect(()=>(r.start(n.current),a.forEach(r.send),n.current=r.state,()=>{r.stop()}),[]),[s,r.send,r]}function Z(e){if(!e){const t=`flattenConnection(): needs a 'connection' to flatten, but received '${e??""}' instead.`;return console.error(t+" Returning an empty array"),[]}return"nodes"in e?e.nodes:"edges"in e&&Array.isArray(e.edges)?e.edges.map(t=>{if(!(t!=null&&t.node))throw new Error("flattenConnection(): Connection edges must contain nodes");return t.node}):[]}function Y(e){const t=`$country: CountryCode = ZZ
1
+ (function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`react`)):typeof define==`function`&&define.amd?define([`exports`,`react`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.hydrogenreact={},e.React))})(this,function(e,t){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var n=Object.create,r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,a=Object.getOwnPropertyNames,o=Object.getPrototypeOf,s=Object.prototype.hasOwnProperty,c=(e,t,n,o)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var c=a(t),l=0,u=c.length,d;l<u;l++)d=c[l],!s.call(e,d)&&d!==n&&r(e,d,{get:(e=>t[e]).bind(null,d),enumerable:!(o=i(t,d))||o.enumerable});return e};t=((e,t,i)=>(i=e==null?{}:n(o(e)),c(t||!e||!e.__esModule?r(i,`default`,{value:e,enumerable:!0}):i,e)))(t);function l(e,t){var n=typeof Symbol==`function`&&e[Symbol.iterator];if(!n)return e;var r,i,a=n.call(e),o=[];try{for(;(t===void 0||t-- >0)&&!(r=a.next()).done;)o.push(r.value)}catch(e){i={error:e}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(i)throw i.error}}return o}var u;(function(e){e[e.NotStarted=0]=`NotStarted`,e[e.Running=1]=`Running`,e[e.Stopped=2]=`Stopped`})(u||={});var d={type:`xstate.init`};function f(e){return e===void 0?[]:[].concat(e)}function p(e){return{type:`xstate.assign`,assignment:e}}function m(e,t){return typeof(e=typeof e==`string`&&t&&t[e]?t[e]:e)==`string`?{type:e}:typeof e==`function`?{type:e.name,exec:e}:e}function h(e){return function(t){return e===t}}function g(e){return typeof e==`string`?{type:e}:e}function _(e,t){return{value:e,context:t,actions:[],changed:!1,matches:h(e)}}function v(e,t,n){var r=t,i=!1;return[e.filter((function(e){if(e.type===`xstate.assign`){i=!0;var t=Object.assign({},r);return typeof e.assignment==`function`?t=e.assignment(r,n):Object.keys(e.assignment).forEach((function(i){t[i]=typeof e.assignment[i]==`function`?e.assignment[i](r,n):e.assignment[i]})),r=t,!1}return!0})),r,i]}function y(e,t){t===void 0&&(t={});var n=l(v(f(e.states[e.initial].entry).map((function(e){return m(e,t.actions)})),e.context,d),2),r=n[0],i=n[1],a={config:e,_options:t,initialState:{value:e.initial,actions:r,context:i,matches:h(e.initial)},transition:function(t,n){var r,i,o=typeof t==`string`?{value:t,context:e.context}:t,s=o.value,c=o.context,u=g(n),d=e.states[s];if(d.on){var p=f(d.on[u.type]);try{for(var y=function(e){var t=typeof Symbol==`function`&&Symbol.iterator,n=t&&e[t],r=0;if(n)return n.call(e);if(e&&typeof e.length==`number`)return{next:function(){return e&&r>=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw TypeError(t?`Object is not iterable.`:`Symbol.iterator is not defined.`)}(p),b=y.next();!b.done;b=y.next()){var x=b.value;if(x===void 0)return _(s,c);var S=typeof x==`string`?{target:x}:x,C=S.target,w=S.actions,ee=w===void 0?[]:w,T=S.cond,E=T===void 0?function(){return!0}:T,D=C===void 0,O=C??s,k=e.states[O];if(E(c,u)){var A=l(v((D?f(ee):[].concat(d.exit,ee,k.entry).filter((function(e){return e}))).map((function(e){return m(e,a._options.actions)})),c,u),3),j=A[0],te=A[1],ne=A[2],M=C??s;return{value:M,context:te,actions:j,changed:C!==s||j.length>0||ne,matches:h(M)}}}}catch(e){r={error:e}}finally{try{b&&!b.done&&(i=y.return)&&i.call(y)}finally{if(r)throw r.error}}}return _(s,c)}};return a}var b=function(e,t){return e.actions.forEach((function(n){var r=n.exec;return r&&r(e.context,t)}))};function x(e){var t=e.initialState,n=u.NotStarted,r=new Set,i={_machine:e,send:function(i){n===u.Running&&(t=e.transition(t,i),b(t,g(i)),r.forEach((function(e){return e(t)})))},subscribe:function(e){return r.add(e),e(t),{unsubscribe:function(){return r.delete(e)}}},start:function(r){if(r){var a=typeof r==`object`?r:{context:e.config.context,value:r};t={value:a.value,actions:[],context:a.context,matches:h(a.value)}}else t=e.initialState;return n=u.Running,b(t,d),i},stop:function(){return n=u.Stopped,r.clear(),i},get state(){return t},get status(){return n}};return i}var S=typeof window<`u`?t.useLayoutEffect:t.useEffect;function C(e){let n=(0,t.useRef)();return n.current||={v:e()},n.current.v}function w(e){let t;return e.subscribe(e=>t=e).unsubscribe(),t}function ee(e,n){let r=(0,t.useRef)(),[i,a]=C(()=>{let t=[],i=x(y(e.config,n||e._options)),a=i.send;return i.send=e=>{if(i.status===u.NotStarted){t.push(e);return}a(e),r.current=i.state},[i,t]});S(()=>{n&&(i._machine._options=n)});let o=(0,t.useCallback)(()=>w(i),[i]),s=(0,t.useSyncExternalStore)((0,t.useCallback)(e=>{let{unsubscribe:t}=i.subscribe(e);return t},[i]),o,o);return(0,t.useEffect)(()=>(i.start(r.current),a.forEach(i.send),r.current=i.state,()=>{i.stop()}),[]),[s,i.send,i]}function T(e){if(!e){let t=`flattenConnection(): needs a 'connection' to flatten, but received '${e??``}' instead.`;return console.error(t+` Returning an empty array`),[]}return`nodes`in e?e.nodes:`edges`in e&&Array.isArray(e.edges)?e.edges.map(e=>{if(!e?.node)throw Error(`flattenConnection(): Connection edges must contain nodes`);return e.node}):[]}function E(e){let t=`$country: CountryCode = ZZ
15
2
  $language: LanguageCode`;return e?`${t}
16
- $visitorConsent: VisitorConsent`:t}function W(e){return e?`@inContext(
3
+ $visitorConsent: VisitorConsent`:t}function D(e){return e?`@inContext(
17
4
  country: $country
18
5
  language: $language
19
6
  visitorConsent: $visitorConsent
20
7
  )`:`@inContext(
21
8
  country: $country
22
9
  language: $language
23
- )`}const cn=(e,t={})=>`
10
+ )`}var O=(e,t={})=>`
24
11
  mutation CartLineAdd(
25
12
  $cartId: ID!
26
13
  $lines: [CartLineInput!]!
27
14
  $numCartLines: Int = 250
28
- ${Y(t.includeVisitorConsent??!1)}
15
+ ${E(t.includeVisitorConsent??!1)}
29
16
  )
30
- ${W(t.includeVisitorConsent??!1)} {
17
+ ${D(t.includeVisitorConsent??!1)} {
31
18
  cartLinesAdd(cartId: $cartId, lines: $lines) {
32
19
  cart {
33
20
  ...CartFragment
@@ -36,13 +23,13 @@
36
23
  }
37
24
 
38
25
  ${e}
39
- `,un=(e,t={})=>`
26
+ `,k=(e,t={})=>`
40
27
  mutation CartCreate(
41
28
  $input: CartInput!
42
29
  $numCartLines: Int = 250
43
- ${Y(t.includeVisitorConsent??!1)}
30
+ ${E(t.includeVisitorConsent??!1)}
44
31
  )
45
- ${W(t.includeVisitorConsent??!1)} {
32
+ ${D(t.includeVisitorConsent??!1)} {
46
33
  cartCreate(input: $input) {
47
34
  cart {
48
35
  ...CartFragment
@@ -51,14 +38,14 @@
51
38
  }
52
39
 
53
40
  ${e}
54
- `,ln=(e,t={})=>`
41
+ `,A=(e,t={})=>`
55
42
  mutation CartLineRemove(
56
43
  $cartId: ID!
57
44
  $lines: [ID!]!
58
45
  $numCartLines: Int = 250
59
- ${Y(t.includeVisitorConsent??!1)}
46
+ ${E(t.includeVisitorConsent??!1)}
60
47
  )
61
- ${W(t.includeVisitorConsent??!1)} {
48
+ ${D(t.includeVisitorConsent??!1)} {
62
49
  cartLinesRemove(cartId: $cartId, lineIds: $lines) {
63
50
  cart {
64
51
  ...CartFragment
@@ -67,14 +54,14 @@
67
54
  }
68
55
 
69
56
  ${e}
70
- `,dn=(e,t={})=>`
57
+ `,j=(e,t={})=>`
71
58
  mutation CartLineUpdate(
72
59
  $cartId: ID!
73
60
  $lines: [CartLineUpdateInput!]!
74
61
  $numCartLines: Int = 250
75
- ${Y(t.includeVisitorConsent??!1)}
62
+ ${E(t.includeVisitorConsent??!1)}
76
63
  )
77
- ${W(t.includeVisitorConsent??!1)} {
64
+ ${D(t.includeVisitorConsent??!1)} {
78
65
  cartLinesUpdate(cartId: $cartId, lines: $lines) {
79
66
  cart {
80
67
  ...CartFragment
@@ -83,14 +70,14 @@
83
70
  }
84
71
 
85
72
  ${e}
86
- `,fn=(e,t={})=>`
73
+ `,te=(e,t={})=>`
87
74
  mutation CartNoteUpdate(
88
75
  $cartId: ID!
89
76
  $note: String!
90
77
  $numCartLines: Int = 250
91
- ${Y(t.includeVisitorConsent??!1)}
78
+ ${E(t.includeVisitorConsent??!1)}
92
79
  )
93
- ${W(t.includeVisitorConsent??!1)} {
80
+ ${D(t.includeVisitorConsent??!1)} {
94
81
  cartNoteUpdate(cartId: $cartId, note: $note) {
95
82
  cart {
96
83
  ...CartFragment
@@ -99,14 +86,14 @@
99
86
  }
100
87
 
101
88
  ${e}
102
- `,hn=(e,t={})=>`
89
+ `,ne=(e,t={})=>`
103
90
  mutation CartBuyerIdentityUpdate(
104
91
  $cartId: ID!
105
92
  $buyerIdentity: CartBuyerIdentityInput!
106
93
  $numCartLines: Int = 250
107
- ${Y(t.includeVisitorConsent??!1)}
94
+ ${E(t.includeVisitorConsent??!1)}
108
95
  )
109
- ${W(t.includeVisitorConsent??!1)} {
96
+ ${D(t.includeVisitorConsent??!1)} {
110
97
  cartBuyerIdentityUpdate(cartId: $cartId, buyerIdentity: $buyerIdentity) {
111
98
  cart {
112
99
  ...CartFragment
@@ -115,14 +102,14 @@
115
102
  }
116
103
 
117
104
  ${e}
118
- `,yn=(e,t={})=>`
105
+ `,M=(e,t={})=>`
119
106
  mutation CartAttributesUpdate(
120
107
  $attributes: [AttributeInput!]!
121
108
  $cartId: ID!
122
109
  $numCartLines: Int = 250
123
- ${Y(t.includeVisitorConsent??!1)}
110
+ ${E(t.includeVisitorConsent??!1)}
124
111
  )
125
- ${W(t.includeVisitorConsent??!1)} {
112
+ ${D(t.includeVisitorConsent??!1)} {
126
113
  cartAttributesUpdate(attributes: $attributes, cartId: $cartId) {
127
114
  cart {
128
115
  ...CartFragment
@@ -131,14 +118,14 @@
131
118
  }
132
119
 
133
120
  ${e}
134
- `,mn=(e,t={})=>`
121
+ `,re=(e,t={})=>`
135
122
  mutation CartDiscountCodesUpdate(
136
123
  $cartId: ID!
137
124
  $discountCodes: [String!]!
138
125
  $numCartLines: Int = 250
139
- ${Y(t.includeVisitorConsent??!1)}
126
+ ${E(t.includeVisitorConsent??!1)}
140
127
  )
141
- ${W(t.includeVisitorConsent??!1)} {
128
+ ${D(t.includeVisitorConsent??!1)} {
142
129
  cartDiscountCodesUpdate(cartId: $cartId, discountCodes: $discountCodes) {
143
130
  cart {
144
131
  ...CartFragment
@@ -147,20 +134,20 @@
147
134
  }
148
135
 
149
136
  ${e}
150
- `,gn=(e,t={})=>`
137
+ `,ie=(e,t={})=>`
151
138
  query CartQuery(
152
139
  $id: ID!
153
140
  $numCartLines: Int = 250
154
- ${Y(t.includeVisitorConsent??!1)}
141
+ ${E(t.includeVisitorConsent??!1)}
155
142
  )
156
- ${W(t.includeVisitorConsent??!1)} {
143
+ ${D(t.includeVisitorConsent??!1)} {
157
144
  cart(id: $id) {
158
145
  ...CartFragment
159
146
  }
160
147
  }
161
148
 
162
149
  ${e}
163
- `,pn=`
150
+ `,ae=`
164
151
  fragment CartFragment on Cart {
165
152
  id
166
153
  checkoutUrl
@@ -261,16 +248,15 @@
261
248
  width
262
249
  height
263
250
  }
264
- `,ie="2026-04",En="mock.shop",rt=e=>e.includes(En);function _n({storeDomain:e,privateStorefrontToken:t,publicStorefrontToken:n,storefrontApiVersion:r=ie,contentType:a}){if(!e)throw new Error(Ve+"`storeDomain` is required when creating a new Storefront client in production.");r!==ie&&Tn(`The Storefront API version that you're using is different than the version this build of Hydrogen React is targeting.
265
- You may run into unexpected errors if these versions don't match. Received version: "${r}"; expected version "${ie}"`);const i=o=>{const s=(o==null?void 0:o.storeDomain)??e;return s.includes("://")?s:`https://${s}`};return{getShopifyDomain:i,getStorefrontApiUrl(o){const s=i(o);return`${s+(s.endsWith("/")?"api":"/api")}/${(o==null?void 0:o.storefrontApiVersion)??r}/graphql.json`},getPrivateTokenHeaders(o){if(!t&&!(o!=null&&o.privateStorefrontToken)&&!rt(e))throw new Error(Ve+"You did not pass in a `privateStorefrontToken` while using `createStorefrontClient()` or `getPrivateTokenHeaders()`");return{"content-type":((o==null?void 0:o.contentType)??a)==="graphql"?"application/graphql":"application/json","X-SDK-Variant":"hydrogen-react","X-SDK-Variant-Source":"react","X-SDK-Version":r,"Shopify-Storefront-Private-Token":(o==null?void 0:o.privateStorefrontToken)??t??"",...o!=null&&o.buyerIp?{"Shopify-Storefront-Buyer-IP":o.buyerIp}:{}}},getPublicTokenHeaders(o){if(!n&&!(o!=null&&o.publicStorefrontToken)&&!rt(e))throw new Error(Ve+"You did not pass in a `publicStorefrontToken` while using `createStorefrontClient()` or `getPublicTokenHeaders()`");const s=(o==null?void 0:o.contentType)??a??"json";return at(s,r,(o==null?void 0:o.publicStorefrontToken)??n??"")}}}function at(e,t,n){return{"content-type":e==="graphql"?"application/graphql":"application/json","X-SDK-Variant":"hydrogen-react","X-SDK-Variant-Source":"react","X-SDK-Version":t,"X-Shopify-Storefront-Access-Token":n}}const it=new Set,Ve="[h2:error:createStorefrontClient] ",Tn=(e,t="warn")=>{it.has(e)||(console[t](`[h2:${t}:createStorefrontClient] `+e),it.add(e))},ot={storeDomain:"test",storefrontToken:"abc123",storefrontApiVersion:ie,countryIsoCode:"US",languageIsoCode:"EN",getStorefrontApiUrl(){return""},getPublicTokenHeaders(){return{}},getShopifyDomain(){return""}},st=l.createContext(ot);function Sn(){var e,t,n;if(typeof window>"u")return!1;try{const r=(t=(e=window.performance)==null?void 0:e.getEntriesByType)==null?void 0:t.call(e,"navigation")[0];return!!((n=r==null?void 0:r.serverTiming)!=null&&n.some(a=>a.name==="_sfapi_proxy"))}catch{return!1}}function Cn({children:e,...t}){if(!t.countryIsoCode||!t.languageIsoCode||!t.storeDomain||!t.storefrontToken||!t.storefrontApiVersion)throw new Error("Please provide the necessary props to '<ShopifyProvider/>'");t.storefrontApiVersion!==ie&&console.warn(`<ShopifyProvider/>: This version of Hydrogen React is built for Shopify's Storefront API version ${ie}, but it looks like you're using version ${t.storefrontApiVersion}. There may be issues or bugs if you use a mismatched version of Hydrogen React and the Storefront API.`);const n=l.useMemo(()=>{const r=t.sameDomainForStorefrontApi??Sn();function a(i){const o=(i==null?void 0:i.storeDomain)??t.storeDomain;return o.includes("://")?o:`https://${o}`}return{...t,sameDomainForStorefrontApi:r,getPublicTokenHeaders(i){return at(i.contentType,t.storefrontApiVersion,i.storefrontToken??t.storefrontToken)},getShopifyDomain:a,getStorefrontApiUrl(i){const o=r&&typeof window<"u"?window.location.origin:a({storeDomain:(i==null?void 0:i.storeDomain)??t.storeDomain});return`${o}${o.endsWith("/")?"":"/"}api/${(i==null?void 0:i.storefrontApiVersion)??t.storefrontApiVersion}/graphql.json`}}},[t]);return React.createElement(st.Provider,{value:n},e)}function le(){const e=l.useContext(st);if(!e)throw new Error("'useShop()' must be a descendent of <ShopifyProvider/>");return e}const De="shopifyCartId",ct="Shopify-Storefront-Id",ut="Shopify-Storefront-Y",lt="Shopify-Storefront-S",be="_shopify_y",Ae="_shopify_s",ke="X-Shopify-VisitToken",Ue="X-Shopify-UniqueToken",Ne={current:null};function ne(){var t,n,r;let e;if(typeof window<"u"&&typeof window.performance<"u")try{const a=/^https?:\/\/([^/]+)(\/api\/(?:unstable|2\d{3}-\d{2})\/graphql\.json(?=$|\?))?/,i=performance.getEntriesByType("resource");let o;for(let s=i.length-1;s>=0;s--){const u=i[s];if(u.initiatorType!=="fetch")continue;const d=window.location.host,h=u.name.match(a);if(!h)continue;const[,f,y]=h;if(f===d||y&&(f==null?void 0:f.endsWith(`.${d}`))){const c=dt(u);if(c){o=c;break}}}if(o&&(e=o),e?Ne.current=e:Ne.current&&(e=Ne.current),!e){const s=performance.getEntriesByType("navigation")[0];e=dt(s,!1)}}catch{}if(!e){const a=typeof arguments[0]=="string"?arguments[0]:typeof document<"u"?document.cookie:"";e={uniqueToken:((t=a.match(/\b_shopify_y=([^;]+)/))==null?void 0:t[1])||"",visitToken:((n=a.match(/\b_shopify_s=([^;]+)/))==null?void 0:n[1])||"",consent:((r=a.match(/\b_tracking_consent=([^;]+)/))==null?void 0:r[1])||""}}return e}function dt(e,t=!0){let n="",r="",a="";const i=e.serverTiming;if(i&&i.length>=3)for(let o=i.length-1;o>=0;o--){const{name:s,description:u}=i[o];if(!(!s||!u)&&(s==="_y"?n=u:s==="_s"?r=u:s==="_cmp"&&(a=u),n&&r&&a))break}return n&&r&&(!t||a)?{uniqueToken:n,visitToken:r,consent:a}:void 0}function bn(){const{storefrontId:e,getPublicTokenHeaders:t,getStorefrontApiUrl:n,sameDomainForStorefrontApi:r}=le();return l.useCallback(({query:a,variables:i})=>{const o=t({contentType:"json"});if(e&&(o[ct]=e),!r){const{uniqueToken:s,visitToken:u}=ne();s&&(o[ut]=s,o[Ue]=s),u&&(o[lt]=u,o[ke]=u)}return fetch(n(),{method:"POST",headers:o,body:JSON.stringify({query:a.toString(),variables:i})}).then(s=>s.json()).catch(s=>({data:void 0,errors:s==null?void 0:s.toString()}))},[t,e,n,r])}function An({numCartLines:e,cartFragment:t,countryCode:n="US",languageCode:r="EN"}){const a=bn(),i=l.useCallback(c=>a({query:gn(t),variables:{id:c,numCartLines:e,country:n,language:r}}),[a,t,e,n,r]),o=l.useCallback(c=>a({query:un(t),variables:{input:c,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),s=l.useCallback((c,S)=>a({query:cn(t),variables:{cartId:c,lines:S,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),u=l.useCallback((c,S)=>a({query:dn(t),variables:{cartId:c,lines:S,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),d=l.useCallback((c,S)=>a({query:ln(t),variables:{cartId:c,lines:S,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),h=l.useCallback((c,S)=>a({query:fn(t),variables:{cartId:c,note:S,numCartLines:e,country:n,language:r}}),[a,t,e,n,r]),f=l.useCallback((c,S)=>a({query:hn(t),variables:{cartId:c,buyerIdentity:S,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),y=l.useCallback((c,S)=>a({query:yn(t),variables:{cartId:c,attributes:S,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),E=l.useCallback((c,S)=>a({query:mn(t),variables:{cartId:c,discountCodes:S,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]);return l.useMemo(()=>({cartFetch:i,cartCreate:o,cartLineAdd:s,cartLineUpdate:u,cartLineRemove:d,noteUpdate:h,buyerIdentityUpdate:f,cartAttributesUpdate:y,discountCodesUpdate:E,cartFragment:t}),[i,o,s,u,d,h,f,y,E,t])}function G(e,t){return{entry:[...(t==null?void 0:t.entryActions)||[],ae({lastValidCart:n=>n==null?void 0:n.cart}),"onCartActionEntry","onCartActionOptimisticUI",e],on:{RESOLVE:{target:(t==null?void 0:t.resolveTarget)||"idle",actions:[ae({prevCart:n=>n==null?void 0:n.lastValidCart,cart:(n,r)=>{var a;return(a=r==null?void 0:r.payload)==null?void 0:a.cart},rawCartResult:(n,r)=>{var a;return(a=r==null?void 0:r.payload)==null?void 0:a.rawCartResult},errors:n=>{}})]},ERROR:{target:(t==null?void 0:t.errorTarget)||"error",actions:[ae({prevCart:n=>n==null?void 0:n.lastValidCart,cart:n=>n==null?void 0:n.lastValidCart,errors:(n,r)=>{var a;return(a=r==null?void 0:r.payload)==null?void 0:a.errors}})]},CART_COMPLETED:{target:"cartCompleted",actions:ae({prevCart:n=>{},cart:n=>{},lastValidCart:n=>{},rawCartResult:n=>{},errors:n=>{}})}},exit:["onCartActionComplete",...(t==null?void 0:t.exitActions)||[]]}}const de={CART_FETCH:{target:"cartFetching"},CART_CREATE:{target:"cartCreating"},CART_SET:{target:"idle",actions:[ae({rawCartResult:(e,t)=>t.payload.cart,cart:(e,t)=>Me(t.payload.cart)})]}},ft={CARTLINE_ADD:{target:"cartLineAdding"},CARTLINE_UPDATE:{target:"cartLineUpdating"},CARTLINE_REMOVE:{target:"cartLineRemoving"},NOTE_UPDATE:{target:"noteUpdating"},BUYER_IDENTITY_UPDATE:{target:"buyerIdentityUpdating"},CART_ATTRIBUTES_UPDATE:{target:"cartAttributesUpdating"},DISCOUNT_CODES_UPDATE:{target:"discountCodesUpdating"}};function wn(e){return tt({id:"Cart",initial:e?"idle":"uninitialized",context:{cart:e&&Me(e)},states:{uninitialized:{on:de},cartCompleted:{on:de},initializationError:{on:de},idle:{on:{...de,...ft}},error:{on:{...de,...ft}},cartFetching:G("cartFetchAction",{errorTarget:"initializationError"}),cartCreating:G("cartCreateAction",{errorTarget:"initializationError"}),cartLineRemoving:G("cartLineRemoveAction"),cartLineUpdating:G("cartLineUpdateAction"),cartLineAdding:G("cartLineAddAction"),noteUpdating:G("noteUpdateAction"),buyerIdentityUpdating:G("buyerIdentityUpdateAction"),cartAttributesUpdating:G("cartAttributesUpdateAction"),discountCodesUpdating:G("discountCodesUpdateAction")}})}function In({numCartLines:e,onCartActionEntry:t,onCartActionOptimisticUI:n,onCartActionComplete:r,data:a,cartFragment:i,countryCode:o,languageCode:s}){const{cartFetch:u,cartCreate:d,cartLineAdd:h,cartLineUpdate:f,cartLineRemove:y,noteUpdate:E,buyerIdentityUpdate:c,cartAttributesUpdate:S,discountCodesUpdate:T}=An({numCartLines:e,cartFragment:i,countryCode:o,languageCode:s}),A=l.useMemo(()=>wn(a),[a]),[v,w,R]=sn(A,{actions:{cartFetchAction:async(m,g)=>{var b;if(g.type!=="CART_FETCH")return;const{data:_,errors:P}=await u((b=g==null?void 0:g.payload)==null?void 0:b.cartId),O=K(g,_==null?void 0:_.cart,P);w(O)},cartCreateAction:async(m,g)=>{var b;if(g.type!=="CART_CREATE")return;const{data:_,errors:P}=await d(g==null?void 0:g.payload),O=K(g,(b=_==null?void 0:_.cartCreate)==null?void 0:b.cart,P);w(O)},cartLineAddAction:async(m,g)=>{var b,I;if(g.type!=="CARTLINE_ADD"||!((b=m==null?void 0:m.cart)!=null&&b.id))return;const{data:_,errors:P}=await h(m.cart.id,g.payload.lines),O=K(g,(I=_==null?void 0:_.cartLinesAdd)==null?void 0:I.cart,P);w(O)},cartLineUpdateAction:async(m,g)=>{var b,I;if(g.type!=="CARTLINE_UPDATE"||!((b=m==null?void 0:m.cart)!=null&&b.id))return;const{data:_,errors:P}=await f(m.cart.id,g.payload.lines),O=K(g,(I=_==null?void 0:_.cartLinesUpdate)==null?void 0:I.cart,P);w(O)},cartLineRemoveAction:async(m,g)=>{var b,I;if(g.type!=="CARTLINE_REMOVE"||!((b=m==null?void 0:m.cart)!=null&&b.id))return;const{data:_,errors:P}=await y(m.cart.id,g.payload.lines),O=K(g,(I=_==null?void 0:_.cartLinesRemove)==null?void 0:I.cart,P);w(O)},noteUpdateAction:async(m,g)=>{var b,I;if(g.type!=="NOTE_UPDATE"||!((b=m==null?void 0:m.cart)!=null&&b.id))return;const{data:_,errors:P}=await E(m.cart.id,g.payload.note),O=K(g,(I=_==null?void 0:_.cartNoteUpdate)==null?void 0:I.cart,P);w(O)},buyerIdentityUpdateAction:async(m,g)=>{var b,I;if(g.type!=="BUYER_IDENTITY_UPDATE"||!((b=m==null?void 0:m.cart)!=null&&b.id))return;const{data:_,errors:P}=await c(m.cart.id,g.payload.buyerIdentity),O=K(g,(I=_==null?void 0:_.cartBuyerIdentityUpdate)==null?void 0:I.cart,P);w(O)},cartAttributesUpdateAction:async(m,g)=>{var b,I;if(g.type!=="CART_ATTRIBUTES_UPDATE"||!((b=m==null?void 0:m.cart)!=null&&b.id))return;const{data:_,errors:P}=await S(m.cart.id,g.payload.attributes),O=K(g,(I=_==null?void 0:_.cartAttributesUpdate)==null?void 0:I.cart,P);w(O)},discountCodesUpdateAction:async(m,g)=>{var b,I;if(g.type!=="DISCOUNT_CODES_UPDATE"||!((b=m==null?void 0:m.cart)!=null&&b.id))return;const{data:_,errors:P}=await T(m.cart.id,g.payload.discountCodes),O=K(g,(I=_==null?void 0:_.cartDiscountCodesUpdate)==null?void 0:I.cart,P);w(O)},...t&&{onCartActionEntry:(m,g)=>{vn(g)&&t(m,g)}},...n&&{onCartActionOptimisticUI:ae((m,g)=>n(m,g))},...r&&{onCartActionComplete:(m,g)=>{Pn(g)&&r(m,g)}}}});return l.useMemo(()=>[v,w,R],[v,w,R])}function Me(e){return{...e,lines:Z(e==null?void 0:e.lines),note:e.note??void 0}}function K(e,t,n){return n?{type:"ERROR",payload:{errors:n,cartActionEvent:e}}:t?{type:"RESOLVE",payload:{cart:Me(t),rawCartResult:t,cartActionEvent:e}}:{type:"CART_COMPLETED",payload:{cartActionEvent:e}}}function vn(e){return e.type==="CART_CREATE"||e.type==="CARTLINE_ADD"||e.type==="CARTLINE_UPDATE"||e.type==="CARTLINE_REMOVE"||e.type==="NOTE_UPDATE"||e.type==="BUYER_IDENTITY_UPDATE"||e.type==="CART_ATTRIBUTES_UPDATE"||e.type==="DISCOUNT_CODES_UPDATE"}function Pn(e){return e.type==="RESOLVE"||e.type==="ERROR"||e.type==="CART_COMPLETED"}const ht=l.createContext(null);function oe(){const e=l.useContext(ht);if(!e)throw new Error("Expected a Cart Context, but no Cart Context was found");return e}function On({children:e,numCartLines:t,onCreate:n,onLineAdd:r,onLineRemove:a,onLineUpdate:i,onNoteUpdate:o,onBuyerIdentityUpdate:s,onAttributesUpdate:u,onDiscountCodesUpdate:d,onCreateComplete:h,onLineAddComplete:f,onLineRemoveComplete:y,onLineUpdateComplete:E,onNoteUpdateComplete:c,onBuyerIdentityUpdateComplete:S,onAttributesUpdateComplete:T,onDiscountCodesUpdateComplete:A,data:v,cartFragment:w=pn,customerAccessToken:R,countryCode:m,languageCode:g}){var Kt,Qt,Jt,Xt,Zt,zt,en;const _=le();if(!_)throw new Error("<CartProvider> needs to be a descendant of <ShopifyProvider>");m=(m??_.countryIsoCode??"US").toUpperCase(),g=(g??_.languageIsoCode??"EN").toUpperCase(),m&&(m=m.toUpperCase());const[P,O]=l.useState(m),[b,I]=l.useState(R),H=l.useRef(!1);(P!==m||b!==R)&&(O(m),I(R),H.current=!1);const[V,$]=In({numCartLines:t,data:v,cartFragment:w,countryCode:m,languageCode:g,onCartActionEntry(C,U){try{switch(U.type){case"CART_CREATE":return n==null?void 0:n();case"CARTLINE_ADD":return r==null?void 0:r();case"CARTLINE_REMOVE":return a==null?void 0:a();case"CARTLINE_UPDATE":return i==null?void 0:i();case"NOTE_UPDATE":return o==null?void 0:o();case"BUYER_IDENTITY_UPDATE":return s==null?void 0:s();case"CART_ATTRIBUTES_UPDATE":return u==null?void 0:u();case"DISCOUNT_CODES_UPDATE":return d==null?void 0:d()}}catch(F){console.error("Cart entry action failed",F)}},onCartActionOptimisticUI(C,U){var F,X,N,Se;if(!C.cart)return{...C};switch(U.type){case"CARTLINE_REMOVE":return{...C,cart:{...C.cart,lines:(X=(F=C==null?void 0:C.cart)==null?void 0:F.lines)==null?void 0:X.filter(L=>(L==null?void 0:L.id)&&!U.payload.lines.includes(L==null?void 0:L.id))}};case"CARTLINE_UPDATE":return{...C,cart:{...C.cart,lines:(Se=(N=C==null?void 0:C.cart)==null?void 0:N.lines)==null?void 0:Se.map(L=>{const Ke=U.payload.lines.find(({id:zr})=>zr===(L==null?void 0:L.id));return Ke&&Ke.quantity?{...L,quantity:Ke.quantity}:L})}}}return{...C}},onCartActionComplete(C,U){const F=U.payload.cartActionEvent;try{switch(U.type){case"RESOLVE":switch(F.type){case"CART_CREATE":return h==null?void 0:h();case"CARTLINE_ADD":return f==null?void 0:f();case"CARTLINE_REMOVE":return y==null?void 0:y();case"CARTLINE_UPDATE":return E==null?void 0:E();case"NOTE_UPDATE":return c==null?void 0:c();case"BUYER_IDENTITY_UPDATE":return Dn(C,F)&&(H.current=!0),S==null?void 0:S();case"CART_ATTRIBUTES_UPDATE":return T==null?void 0:T();case"DISCOUNT_CODES_UPDATE":return A==null?void 0:A()}}}catch(X){console.error("onCartActionComplete failed",X)}}}),ee=l.useRef(!1),[Ee,k]=l.useState(!1),ue=V.matches("cartCompleted"),_e=(V.value==="idle"||V.value==="error"||V.value==="cartCompleted")&&m!==((Jt=(Qt=(Kt=V==null?void 0:V.context)==null?void 0:Kt.cart)==null?void 0:Qt.buyerIdentity)==null?void 0:Jt.countryCode)&&!V.context.errors,Te=l.useRef(!1);l.useEffect(()=>{if(!ee.current&&!Te.current){if(!v&&Fe("localStorage")){Te.current=!0;try{const C=window.localStorage.getItem(De);C&&$({type:"CART_FETCH",payload:{cartId:C}})}catch(C){console.warn("error fetching cartId"),console.warn(C)}}ee.current=!0,k(!0)}},[v,ee,$]),l.useEffect(()=>{!_e||H.current||$({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:{countryCode:m,customerAccessToken:R}}})},[m,R,_e,H,$]);const B=l.useCallback(C=>{if(!ee.current)return console.warn("Cart isn't ready yet");$(C)},[$]);l.useEffect(()=>{var C,U,F;if((U=(C=V==null?void 0:V.context)==null?void 0:C.cart)!=null&&U.id&&Fe("localStorage"))try{window.localStorage.setItem(De,(F=V.context.cart)==null?void 0:F.id)}catch(X){console.warn("Failed to save cartId to localStorage",X)}},[(Zt=(Xt=V==null?void 0:V.context)==null?void 0:Xt.cart)==null?void 0:Zt.id]),l.useEffect(()=>{if(ue&&Fe("localStorage"))try{window.localStorage.removeItem(De)}catch(C){console.warn("Failed to delete cartId from localStorage",C)}},[ue]);const Ge=l.useCallback(C=>{var U,F;m&&!((U=C.buyerIdentity)!=null&&U.countryCode)&&(C.buyerIdentity==null&&(C.buyerIdentity={}),C.buyerIdentity.countryCode=m),R&&!((F=C.buyerIdentity)!=null&&F.customerAccessToken)&&(C.buyerIdentity==null&&(C.buyerIdentity={}),C.buyerIdentity.customerAccessToken=R),B({type:"CART_CREATE",payload:C})},[m,R,B]),D=Vn(V),Zr=l.useMemo(()=>{var C,U,F,X;return{...((C=D==null?void 0:D.context)==null?void 0:C.cart)??{lines:[],attributes:[]},status:Rn(D.value),error:(U=D==null?void 0:D.context)==null?void 0:U.errors,totalQuantity:((X=(F=D==null?void 0:D.context)==null?void 0:F.cart)==null?void 0:X.totalQuantity)??0,cartCreate:Ge,cartReady:Ee,linesAdd(N){var Se,L;(L=(Se=D==null?void 0:D.context)==null?void 0:Se.cart)!=null&&L.id?B({type:"CARTLINE_ADD",payload:{lines:N}}):Ge({lines:N})},linesRemove(N){B({type:"CARTLINE_REMOVE",payload:{lines:N}})},linesUpdate(N){B({type:"CARTLINE_UPDATE",payload:{lines:N}})},noteUpdate(N){B({type:"NOTE_UPDATE",payload:{note:N}})},buyerIdentityUpdate(N){B({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:N}})},cartAttributesUpdate(N){B({type:"CART_ATTRIBUTES_UPDATE",payload:{attributes:N}})},discountCodesUpdate(N){B({type:"DISCOUNT_CODES_UPDATE",payload:{discountCodes:N}})},cartFragment:w}},[Ge,Ee,(zt=D==null?void 0:D.context)==null?void 0:zt.cart,(en=D==null?void 0:D.context)==null?void 0:en.errors,D.value,w,B]);return React.createElement(ht.Provider,{value:Zr},e)}function Rn(e){switch(e){case"uninitialized":case"initializationError":return"uninitialized";case"idle":case"cartCompleted":case"error":return"idle";case"cartFetching":return"fetching";case"cartCreating":return"creating";case"cartLineAdding":case"cartLineRemoving":case"cartLineUpdating":case"noteUpdating":case"buyerIdentityUpdating":case"cartAttributesUpdating":case"discountCodesUpdating":return"updating"}}function Vn(e){const[t,n]=l.useTransition(),[r,a]=l.useState(e),i=l.useRef(!1);t&&(i.current=!0);const o=l.useRef(!1);return!t&&i.current&&(o.current=!0),l.useEffect(()=>{n(()=>{o.current||a(e)})},[e]),o.current?e:r}function Fe(e){let t;try{t=window[e];const n="__storage_test__";return t.setItem(n,n),t.removeItem(n),!0}catch(n){return!!(n instanceof DOMException&&(n.code===22||n.code===1014||n.name==="QuotaExceededError"||n.name==="NS_ERROR_DOM_QUOTA_REACHED")&&t&&t.length!==0)}}function Dn(e,t){var n,r;return!!(t.payload.buyerIdentity.countryCode&&((r=(n=e.cart)==null?void 0:n.buyerIdentity)==null?void 0:r.countryCode)!==t.payload.buyerIdentity.countryCode)}const yt=l.createContext(null);function kn({children:e,data:t,initialVariantId:n}){const r=l.useMemo(()=>Z(t.variants??{}),[t.variants]);if(!Nn(r))throw new Error("<ProductProvider/> requires 'product.variants.nodes' or 'product.variants.edges'");const a=l.useMemo(()=>Un(r),[r]),[i,o]=l.useState(()=>pt(n,r)),[s,u]=l.useState(()=>Et(i));l.useEffect(()=>{const T=pt(n,r);o(T),u(Et(T))},[n,r]);const d=l.useCallback((T,A)=>{u(v=>{const w={...v,[T]:A};return o(gt(r,w)),w})},[u,r]),h=l.useCallback((T,A)=>{const v=gt(r,{...s,[T]:A});return(v==null?void 0:v.availableForSale)??!0},[s,r]),f=l.useMemo(()=>Z(t.sellingPlanGroups??{}).map(T=>({...T,sellingPlans:Z((T==null?void 0:T.sellingPlans)??{})})),[t.sellingPlanGroups]),[y,E]=l.useState(void 0),c=l.useMemo(()=>{var T,A;if(!(!i||!y)){if(!((T=i.sellingPlanAllocations)!=null&&T.nodes)&&!((A=i.sellingPlanAllocations)!=null&&A.edges))throw new Error("<ProductProvider/>: You must include 'sellingPlanAllocations.nodes' or 'sellingPlanAllocations.edges' in your variants in order to calculate selectedSellingPlanAllocation");return Z(i.sellingPlanAllocations).find(v=>{var w;return((w=v==null?void 0:v.sellingPlan)==null?void 0:w.id)===y.id})}},[i,y]),S=l.useMemo(()=>({product:t,variants:r,variantsConnection:t.variants,options:a,selectedVariant:i,setSelectedVariant:o,selectedOptions:s,setSelectedOption:d,setSelectedOptions:u,isOptionInStock:h,selectedSellingPlan:y,setSelectedSellingPlan:E,selectedSellingPlanAllocation:c,sellingPlanGroups:f,sellingPlanGroupsConnection:t.sellingPlanGroups}),[t,h,a,s,y,c,i,f,d,r]);return React.createElement(yt.Provider,{value:S},e)}function mt(){const e=l.useContext(yt);if(!e)throw new Error("'useProduct' must be a child of <ProductProvider />");return e}function gt(e,t){var n,r;if(!(!e.length||((r=(n=e==null?void 0:e[0])==null?void 0:n.selectedOptions)==null?void 0:r.length)!==Object.keys(t).length))return e==null?void 0:e.find(a=>Object.entries(t).every(([i,o])=>{var s;return(s=a==null?void 0:a.selectedOptions)==null?void 0:s.some(u=>(u==null?void 0:u.name)===i&&(u==null?void 0:u.value)===o)}))}function Un(e){const t=e.reduce((n,r)=>{var a;if(!r.selectedOptions)throw new Error("'getOptions' requires 'variant.selectedOptions'");return(a=r==null?void 0:r.selectedOptions)==null||a.forEach(i=>{n[(i==null?void 0:i.name)??""]=n[(i==null?void 0:i.name)??""]||new Set,n[(i==null?void 0:i.name)??""].add((i==null?void 0:i.value)??"")}),n},{});return Object.keys(t).map(n=>({name:n,values:Array.from(t[n])}))}function pt(e,t){if(e){const n=t.find(r=>(r==null?void 0:r.id)===e);return n||console.warn("<ProductProvider/> received a 'initialVariantId' prop, but could not actually find a variant with that ID"),n}if(e===null)return null;if(e===void 0)return t.find(n=>n==null?void 0:n.availableForSale)||t[0]}function Et(e){return e!=null&&e.selectedOptions?e.selectedOptions.reduce((t,n)=>(t[(n==null?void 0:n.name)??""]=(n==null?void 0:n.value)??"",t),{}):{}}function Nn(e){return!(!e||!Array.isArray(e))}function we(e){const{as:t,onClick:n,defaultOnClick:r,children:a,buttonRef:i,...o}=e,s=l.useCallback(d=>{if(n){const h=n(d);if(typeof h=="boolean"&&h===!1||d!=null&&d.defaultPrevented)return}r==null||r(d)},[r,n]),u=t||"button";return React.createElement(u,{ref:i,onClick:s,...o},a)}function Mn(e){const[t,n]=l.useState(!1),{variantId:r,quantity:a=1,attributes:i,sellingPlanId:o,onClick:s,children:u,accessibleAddingToCartLabel:d,parent:h,...f}=e,{status:y,linesAdd:E}=oe(),{selectedVariant:c}=mt(),S=r??(c==null?void 0:c.id)??"",T=r===null||S===""||c===null||t||f.disabled;l.useEffect(()=>{t&&y==="idle"&&n(!1)},[y,t]);const A=l.useCallback(()=>{n(!0),E([{quantity:a,merchandiseId:S||"",attributes:i,parent:h,sellingPlanId:o}])},[E,a,S,i,o,h]);return M.createElement(M.Fragment,null,M.createElement(we,{...f,disabled:T,onClick:s,defaultOnClick:A},u),d?M.createElement("p",{style:{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"},role:"alert","aria-live":"assertive"},t?d:null):null)}const re={PAGE_VIEW:"PAGE_VIEW",ADD_TO_CART:"ADD_TO_CART",PAGE_VIEW_2:"PAGE_VIEW_2",COLLECTION_VIEW:"COLLECTION_VIEW",PRODUCT_VIEW:"PRODUCT_VIEW",SEARCH_VIEW:"SEARCH_VIEW"},Ie={article:"article",blog:"blog",captcha:"captcha",cart:"cart",collection:"collection",customersAccount:"customers/account",customersActivateAccount:"customers/activate_account",customersAddresses:"customers/addresses",customersLogin:"customers/login",customersOrder:"customers/order",customersRegister:"customers/register",customersResetPassword:"customers/reset_password",giftCard:"gift_card",home:"index",listCollections:"list-collections",forbidden:"403",notFound:"404",page:"page",password:"password",product:"product",policy:"policy",search:"search"},_t={hydrogen:"hydrogen",headless:"headless"},Tt={hydrogen:"6167201",headless:"12875497473"};function x(e,t){return{schema_id:e,payload:t,metadata:{event_created_at_ms:Date.now()}}}function j(e){const t={id:"",resource:null,resourceId:null,search:"",searchParams:new URLSearchParams,hash:""};if(typeof e!="string")return t;try{const{search:n,searchParams:r,pathname:a,hash:i}=new URL(e),o=a.split("/"),s=o[o.length-1],u=o[o.length-2];return!s||!u?t:{id:`${s}${n}${i}`||"",resource:u??null,resourceId:s||null,search:n,searchParams:r,hash:i}}catch{return t}}function q(e,t){return typeof e!="object"?{}:(Object.entries(e).forEach(([n,r])=>{r&&(t[n]=r)}),t)}function Fn(e){return typeof document>"u"?(console.error(`${e} should only be used within the useEffect callback or event handlers`),!0):!1}const St="xxxx-4xxx-xxxx-xxxxxxxxxxxx";function ve(){let e="";try{const t=window.crypto,n=new Uint16Array(31);t.getRandomValues(n);let r=0;e=St.replace(/[x]/g,a=>{const i=n[r]%16,o=a==="x"?i:i&3|8;return r++,o.toString(16)}).toUpperCase()}catch{e=St.replace(/[x]/g,n=>{const r=Math.random()*16|0;return(n==="x"?r:r&3|8).toString(16)}).toUpperCase()}return`${Ln()}-${e}`}function Ln(){let e=0,t=0;e=new Date().getTime()>>>0;try{t=performance.now()>>>0}catch{t=0}return Math.abs(e+t).toString(16).toLowerCase().padStart(8,"0")}function jn(e){const t=ne(e);return{[be]:t.uniqueToken,[Ae]:t.visitToken}}const qn="trekkie_storefront_page_view/1.4",xn="myshopify.dev";function Ct(e){const t=e,{id:n,resource:r}=j(t.resourceId),a=r?r.toLowerCase():void 0;return[x(qn,q({pageType:t.pageType,customerId:parseInt(j(t.customerId).id||"0"),resourceType:a,resourceId:parseInt(n)},Hn(t)))]}function Hn(e){return{appClientId:e.shopifySalesChannel?Tt[e.shopifySalesChannel]:Tt.headless,isMerchantRequest:$n(e.url),hydrogenSubchannelId:e.storefrontId||e.hydrogenSubchannelId||"0",isPersistentCookie:e.hasUserConsent,uniqToken:e.uniqueToken,visitToken:e.visitToken,microSessionId:ve(),microSessionCount:1,url:e.url,path:e.path,search:e.search,referrer:e.referrer,title:e.title,shopId:parseInt(j(e.shopId).id),currency:e.currency,contentLanguage:e.acceptedLanguage||"en"}}function $n(e){if(typeof e!="string")return!1;const t=new URL(e).hostname;return t.indexOf(xn)!==-1||t==="localhost"}const Bn="2026.4.1",Q="custom_storefront_customer_tracking/1.2",bt="page_rendered",At="collection_page_rendered",wt="product_page_rendered",Yn="product_added_to_cart",It="search_submitted";function fe(e){return{canonical_url:e.canonicalUrl||e.url,customer_id:parseInt(j(e.customerId).id||"0")}}function Wn(e){const t=e,n=fe(t),r=t.pageType,a=[];switch(a.push(x(Q,q({event_name:bt,...n},J(t)))),r){case Ie.collection:a.push(x(Q,q({event_name:At,...n,collection_name:t.collectionHandle,collection_id:parseInt(j(t.collectionId).id)},J(t))));break;case Ie.product:a.push(x(Q,q({event_name:wt,...n,products:Le(t.products),total_value:t.totalValue},J(t))));break;case Ie.search:a.push(x(Q,q({event_name:It,...n,search_string:t.searchString},J(t))));break}return a}function Gn(e){const t=e,n=fe(t);return[x(Q,q({event_name:bt,...n},J(t)))]}function Kn(e){const t=e,n=fe(t);return[x(Q,q({event_name:At,...n,collection_name:t.collectionHandle,collection_id:parseInt(j(t.collectionId).id)},J(t)))]}function Qn(e){const t=e,n=fe(t);return[x(Q,q({event_name:wt,...n,products:Le(t.products),total_value:t.totalValue},J(t)))]}function Jn(e){const t=e,n=fe(t);return[x(Q,q({event_name:It,...n,search_string:t.searchString},J(t)))]}function Xn(e){const t=e,n=j(t.cartId);return[x(Q,q({event_name:Yn,customerId:t.customerId,cart_token:n!=null&&n.id?`${n.id}`:null,total_value:t.totalValue,products:Le(t.products),customer_id:parseInt(j(t.customerId).id||"0")},J(t)))]}function J(e){const t=e;return{source:e.shopifySalesChannel||_t.headless,asset_version_id:e.assetVersionId||Bn,hydrogenSubchannelId:e.storefrontId||e.hydrogenSubchannelId||"0",is_persistent_cookie:e.hasUserConsent,deprecated_visit_token:e.visitToken,unique_token:e.uniqueToken,event_time:Date.now(),event_id:ve(),event_source_url:e.url,referrer:e.referrer,user_agent:e.userAgent,navigation_type:e.navigationType,navigation_api:e.navigationApi,shop_id:parseInt(j(e.shopId).id),currency:e.currency,ccpa_enforced:t.ccpaEnforced||!1,gdpr_enforced:t.gdprEnforced||!1,gdpr_enforced_as_string:t.gdprEnforced?"true":"false",analytics_allowed:e.analyticsAllowed||!1,marketing_allowed:e.marketingAllowed||!1,sale_of_data_allowed:e.saleOfDataAllowed||!1}}function Le(e){return e?e.map(t=>{const n=q({variant_gid:t.variantGid,category:t.category,sku:t.sku,product_id:parseInt(j(t.productGid).id),variant_id:parseInt(j(t.variantGid).id)},{product_gid:t.productGid,name:t.name,variant:t.variantName||"",brand:t.brand,price:parseFloat(t.price),quantity:Number(t.quantity||0)});return JSON.stringify(n)}):[]}function Zn(e,t){const{eventName:n,payload:r}=e;if(!r.hasUserConsent)return Promise.resolve();let a=[];const i=r;return n===re.PAGE_VIEW?a=a.concat(Ct(i),Wn(i)):n===re.ADD_TO_CART?a=a.concat(Xn(r)):n===re.PAGE_VIEW_2?a=a.concat(Ct(i),Gn(i)):n===re.COLLECTION_VIEW?a=a.concat(Kn(i)):n===re.PRODUCT_VIEW?a=a.concat(Qn(i)):n===re.SEARCH_VIEW&&(a=a.concat(Jn(i))),a.length?er(a,t):Promise.resolve()}function zn(){return typeof window>"u"||!window.navigator?!1:/Chrome-Lighthouse/.test(window.navigator.userAgent)}const vt="sendShopifyAnalytics request is unsuccessful";function er(e,t){if(zn())return Promise.resolve();const n={events:e,metadata:{event_sent_at_ms:Date.now()}};try{return fetch(t?`https://${t}/.well-known/shopify/monorail/unstable/produce_batch`:"https://monorail-edge.shopifysvc.com/unstable/produce_batch",{method:"post",headers:{"content-type":"text/plain"},body:JSON.stringify(n)}).then(r=>{if(!r.ok)throw new Error("Response failed");return r.text()}).then(r=>{r&&JSON.parse(r).result.forEach(i=>{i.status!==200&&console.error(vt,`
251
+ `,N=`2026-04`,oe=`mock.shop`,P=e=>e.includes(oe);function se({storeDomain:e,privateStorefrontToken:t,publicStorefrontToken:n,storefrontApiVersion:r=N,contentType:i}){if(!e)throw Error(ue+"`storeDomain` is required when creating a new Storefront client in production.");r!==`2026-04`&&de(`The Storefront API version that you're using is different than the version this build of Hydrogen React is targeting.\nYou may run into unexpected errors if these versions don't match. Received version: "${r}"; expected version "${N}"`);let a=t=>{let n=t?.storeDomain??e;return n.includes(`://`)?n:`https://${n}`};return{getShopifyDomain:a,getStorefrontApiUrl(e){let t=a(e);return`${t+(t.endsWith(`/`)?`api`:`/api`)}/${e?.storefrontApiVersion??r}/graphql.json`},getPrivateTokenHeaders(n){if(!t&&!n?.privateStorefrontToken&&!P(e))throw Error(ue+"You did not pass in a `privateStorefrontToken` while using `createStorefrontClient()` or `getPrivateTokenHeaders()`");return{"content-type":(n?.contentType??i)===`graphql`?`application/graphql`:`application/json`,"X-SDK-Variant":`hydrogen-react`,"X-SDK-Variant-Source":`react`,"X-SDK-Version":r,"Shopify-Storefront-Private-Token":n?.privateStorefrontToken??t??``,...n?.buyerIp?{"Shopify-Storefront-Buyer-IP":n.buyerIp}:{}}},getPublicTokenHeaders(t){if(!n&&!t?.publicStorefrontToken&&!P(e))throw Error(ue+"You did not pass in a `publicStorefrontToken` while using `createStorefrontClient()` or `getPublicTokenHeaders()`");return ce(t?.contentType??i??`json`,r,t?.publicStorefrontToken??n??``)}}}function ce(e,t,n){return{"content-type":e===`graphql`?`application/graphql`:`application/json`,"X-SDK-Variant":`hydrogen-react`,"X-SDK-Variant-Source":`react`,"X-SDK-Version":t,"X-Shopify-Storefront-Access-Token":n}}var le=new Set,ue=`[h2:error:createStorefrontClient] `,de=(e,t=`warn`)=>{le.has(e)||(console[t](`[h2:${t}:createStorefrontClient] `+e),le.add(e))},fe={storeDomain:`test`,storefrontToken:`abc123`,storefrontApiVersion:N,countryIsoCode:`US`,languageIsoCode:`EN`,getStorefrontApiUrl(){return``},getPublicTokenHeaders(){return{}},getShopifyDomain(){return``}},pe=(0,t.createContext)(fe);function me(){if(typeof window>`u`)return!1;try{return!!(window.performance?.getEntriesByType?.(`navigation`)[0])?.serverTiming?.some(e=>e.name===`_sfapi_proxy`)}catch{return!1}}function he({children:e,...n}){if(!n.countryIsoCode||!n.languageIsoCode||!n.storeDomain||!n.storefrontToken||!n.storefrontApiVersion)throw Error(`Please provide the necessary props to '<ShopifyProvider/>'`);n.storefrontApiVersion!==`2026-04`&&console.warn(`<ShopifyProvider/>: This version of Hydrogen React is built for Shopify's Storefront API version ${N}, but it looks like you're using version ${n.storefrontApiVersion}. There may be issues or bugs if you use a mismatched version of Hydrogen React and the Storefront API.`);let r=(0,t.useMemo)(()=>{let e=n.sameDomainForStorefrontApi??me();function t(e){let t=e?.storeDomain??n.storeDomain;return t.includes(`://`)?t:`https://${t}`}return{...n,sameDomainForStorefrontApi:e,getPublicTokenHeaders(e){return ce(e.contentType,n.storefrontApiVersion,e.storefrontToken??n.storefrontToken)},getShopifyDomain:t,getStorefrontApiUrl(r){let i=e&&typeof window<`u`?window.location.origin:t({storeDomain:r?.storeDomain??n.storeDomain});return`${i}${i.endsWith(`/`)?``:`/`}api/${r?.storefrontApiVersion??n.storefrontApiVersion}/graphql.json`}}},[n]);return React.createElement(pe.Provider,{value:r},e)}function F(){let e=(0,t.useContext)(pe);if(!e)throw Error(`'useShop()' must be a descendent of <ShopifyProvider/>`);return e}var ge=`shopifyCartId`,_e=`Shopify-Storefront-Id`,ve=`Shopify-Storefront-Y`,ye=`Shopify-Storefront-S`,be=`_shopify_y`,xe=`_shopify_s`,Se=`X-Shopify-VisitToken`,Ce=`X-Shopify-UniqueToken`,we={current:null};function I(){let e;if(typeof window<`u`&&window.performance!==void 0)try{let t=/^https?:\/\/([^/]+)(\/api\/(?:unstable|2\d{3}-\d{2})\/graphql\.json(?=$|\?))?/,n=performance.getEntriesByType(`resource`),r;for(let e=n.length-1;e>=0;e--){let i=n[e];if(i.initiatorType!==`fetch`)continue;let a=window.location.host,o=i.name.match(t);if(!o)continue;let[,s,c]=o;if(s===a||c&&s?.endsWith(`.${a}`)){let e=Te(i);if(e){r=e;break}}}if(r&&(e=r),e?we.current=e:we.current&&(e=we.current),!e){let t=performance.getEntriesByType(`navigation`)[0];e=Te(t,!1)}}catch{}if(!e){let t=typeof arguments[0]==`string`?arguments[0]:typeof document<`u`?document.cookie:``;e={uniqueToken:t.match(/\b_shopify_y=([^;]+)/)?.[1]||``,visitToken:t.match(/\b_shopify_s=([^;]+)/)?.[1]||``,consent:t.match(/\b_tracking_consent=([^;]+)/)?.[1]||``}}return e}function Te(e,t=!0){let n=``,r=``,i=``,a=e.serverTiming;if(a&&a.length>=3)for(let e=a.length-1;e>=0;e--){let{name:t,description:o}=a[e];if(!(!t||!o)&&(t===`_y`?n=o:t===`_s`?r=o:t===`_cmp`&&(i=o),n&&r&&i))break}return n&&r&&(!t||i)?{uniqueToken:n,visitToken:r,consent:i}:void 0}function Ee(){let{storefrontId:e,getPublicTokenHeaders:n,getStorefrontApiUrl:r,sameDomainForStorefrontApi:i}=F();return(0,t.useCallback)(({query:t,variables:a})=>{let o=n({contentType:`json`});if(e&&(o[_e]=e),!i){let{uniqueToken:e,visitToken:t}=I();e&&(o[ve]=e,o[Ce]=e),t&&(o[ye]=t,o[Se]=t)}return fetch(r(),{method:`POST`,headers:o,body:JSON.stringify({query:t.toString(),variables:a})}).then(e=>e.json()).catch(e=>({data:void 0,errors:e?.toString()}))},[n,e,r,i])}function De({numCartLines:e,cartFragment:n,countryCode:r=`US`,languageCode:i=`EN`}){let a=Ee(),o=(0,t.useCallback)(t=>a({query:ie(n),variables:{id:t,numCartLines:e,country:r,language:i}}),[a,n,e,r,i]),s=(0,t.useCallback)(t=>a({query:k(n),variables:{input:t,numCartLines:e,country:r,language:i}}),[n,r,a,e,i]),c=(0,t.useCallback)((t,o)=>a({query:O(n),variables:{cartId:t,lines:o,numCartLines:e,country:r,language:i}}),[n,r,a,e,i]),l=(0,t.useCallback)((t,o)=>a({query:j(n),variables:{cartId:t,lines:o,numCartLines:e,country:r,language:i}}),[n,r,a,e,i]),u=(0,t.useCallback)((t,o)=>a({query:A(n),variables:{cartId:t,lines:o,numCartLines:e,country:r,language:i}}),[n,r,a,e,i]),d=(0,t.useCallback)((t,o)=>a({query:te(n),variables:{cartId:t,note:o,numCartLines:e,country:r,language:i}}),[a,n,e,r,i]),f=(0,t.useCallback)((t,o)=>a({query:ne(n),variables:{cartId:t,buyerIdentity:o,numCartLines:e,country:r,language:i}}),[n,r,a,e,i]),p=(0,t.useCallback)((t,o)=>a({query:M(n),variables:{cartId:t,attributes:o,numCartLines:e,country:r,language:i}}),[n,r,a,e,i]),m=(0,t.useCallback)((t,o)=>a({query:re(n),variables:{cartId:t,discountCodes:o,numCartLines:e,country:r,language:i}}),[n,r,a,e,i]);return(0,t.useMemo)(()=>({cartFetch:o,cartCreate:s,cartLineAdd:c,cartLineUpdate:l,cartLineRemove:u,noteUpdate:d,buyerIdentityUpdate:f,cartAttributesUpdate:p,discountCodesUpdate:m,cartFragment:n}),[o,s,c,l,u,d,f,p,m,n])}function L(e,t){return{entry:[...t?.entryActions||[],p({lastValidCart:e=>e?.cart}),`onCartActionEntry`,`onCartActionOptimisticUI`,e],on:{RESOLVE:{target:t?.resolveTarget||`idle`,actions:[p({prevCart:e=>e?.lastValidCart,cart:(e,t)=>t?.payload?.cart,rawCartResult:(e,t)=>t?.payload?.rawCartResult,errors:e=>void 0})]},ERROR:{target:t?.errorTarget||`error`,actions:[p({prevCart:e=>e?.lastValidCart,cart:e=>e?.lastValidCart,errors:(e,t)=>t?.payload?.errors})]},CART_COMPLETED:{target:`cartCompleted`,actions:p({prevCart:e=>void 0,cart:e=>void 0,lastValidCart:e=>void 0,rawCartResult:e=>void 0,errors:e=>void 0})}},exit:[`onCartActionComplete`,...t?.exitActions||[]]}}var R={CART_FETCH:{target:`cartFetching`},CART_CREATE:{target:`cartCreating`},CART_SET:{target:`idle`,actions:[p({rawCartResult:(e,t)=>t.payload.cart,cart:(e,t)=>je(t.payload.cart)})]}},Oe={CARTLINE_ADD:{target:`cartLineAdding`},CARTLINE_UPDATE:{target:`cartLineUpdating`},CARTLINE_REMOVE:{target:`cartLineRemoving`},NOTE_UPDATE:{target:`noteUpdating`},BUYER_IDENTITY_UPDATE:{target:`buyerIdentityUpdating`},CART_ATTRIBUTES_UPDATE:{target:`cartAttributesUpdating`},DISCOUNT_CODES_UPDATE:{target:`discountCodesUpdating`}};function ke(e){return y({id:`Cart`,initial:e?`idle`:`uninitialized`,context:{cart:e&&je(e)},states:{uninitialized:{on:R},cartCompleted:{on:R},initializationError:{on:R},idle:{on:{...R,...Oe}},error:{on:{...R,...Oe}},cartFetching:L(`cartFetchAction`,{errorTarget:`initializationError`}),cartCreating:L(`cartCreateAction`,{errorTarget:`initializationError`}),cartLineRemoving:L(`cartLineRemoveAction`),cartLineUpdating:L(`cartLineUpdateAction`),cartLineAdding:L(`cartLineAddAction`),noteUpdating:L(`noteUpdateAction`),buyerIdentityUpdating:L(`buyerIdentityUpdateAction`),cartAttributesUpdating:L(`cartAttributesUpdateAction`),discountCodesUpdating:L(`discountCodesUpdateAction`)}})}function Ae({numCartLines:e,onCartActionEntry:n,onCartActionOptimisticUI:r,onCartActionComplete:i,data:a,cartFragment:o,countryCode:s,languageCode:c}){let{cartFetch:l,cartCreate:u,cartLineAdd:d,cartLineUpdate:f,cartLineRemove:m,noteUpdate:h,buyerIdentityUpdate:g,cartAttributesUpdate:_,discountCodesUpdate:v}=De({numCartLines:e,cartFragment:o,countryCode:s,languageCode:c}),[y,b,x]=ee((0,t.useMemo)(()=>ke(a),[a]),{actions:{cartFetchAction:async(e,t)=>{if(t.type!==`CART_FETCH`)return;let{data:n,errors:r}=await l(t?.payload?.cartId);b(z(t,n?.cart,r))},cartCreateAction:async(e,t)=>{if(t.type!==`CART_CREATE`)return;let{data:n,errors:r}=await u(t?.payload);b(z(t,n?.cartCreate?.cart,r))},cartLineAddAction:async(e,t)=>{if(t.type!==`CARTLINE_ADD`||!e?.cart?.id)return;let{data:n,errors:r}=await d(e.cart.id,t.payload.lines);b(z(t,n?.cartLinesAdd?.cart,r))},cartLineUpdateAction:async(e,t)=>{if(t.type!==`CARTLINE_UPDATE`||!e?.cart?.id)return;let{data:n,errors:r}=await f(e.cart.id,t.payload.lines);b(z(t,n?.cartLinesUpdate?.cart,r))},cartLineRemoveAction:async(e,t)=>{if(t.type!==`CARTLINE_REMOVE`||!e?.cart?.id)return;let{data:n,errors:r}=await m(e.cart.id,t.payload.lines);b(z(t,n?.cartLinesRemove?.cart,r))},noteUpdateAction:async(e,t)=>{if(t.type!==`NOTE_UPDATE`||!e?.cart?.id)return;let{data:n,errors:r}=await h(e.cart.id,t.payload.note);b(z(t,n?.cartNoteUpdate?.cart,r))},buyerIdentityUpdateAction:async(e,t)=>{if(t.type!==`BUYER_IDENTITY_UPDATE`||!e?.cart?.id)return;let{data:n,errors:r}=await g(e.cart.id,t.payload.buyerIdentity);b(z(t,n?.cartBuyerIdentityUpdate?.cart,r))},cartAttributesUpdateAction:async(e,t)=>{if(t.type!==`CART_ATTRIBUTES_UPDATE`||!e?.cart?.id)return;let{data:n,errors:r}=await _(e.cart.id,t.payload.attributes);b(z(t,n?.cartAttributesUpdate?.cart,r))},discountCodesUpdateAction:async(e,t)=>{if(t.type!==`DISCOUNT_CODES_UPDATE`||!e?.cart?.id)return;let{data:n,errors:r}=await v(e.cart.id,t.payload.discountCodes);b(z(t,n?.cartDiscountCodesUpdate?.cart,r))},...n&&{onCartActionEntry:(e,t)=>{Me(t)&&n(e,t)}},...r&&{onCartActionOptimisticUI:p((e,t)=>r(e,t))},...i&&{onCartActionComplete:(e,t)=>{Ne(t)&&i(e,t)}}}});return(0,t.useMemo)(()=>[y,b,x],[y,b,x])}function je(e){return{...e,lines:T(e?.lines),note:e.note??void 0}}function z(e,t,n){return n?{type:`ERROR`,payload:{errors:n,cartActionEvent:e}}:t?{type:`RESOLVE`,payload:{cart:je(t),rawCartResult:t,cartActionEvent:e}}:{type:`CART_COMPLETED`,payload:{cartActionEvent:e}}}function Me(e){return e.type===`CART_CREATE`||e.type===`CARTLINE_ADD`||e.type===`CARTLINE_UPDATE`||e.type===`CARTLINE_REMOVE`||e.type===`NOTE_UPDATE`||e.type===`BUYER_IDENTITY_UPDATE`||e.type===`CART_ATTRIBUTES_UPDATE`||e.type===`DISCOUNT_CODES_UPDATE`}function Ne(e){return e.type===`RESOLVE`||e.type===`ERROR`||e.type===`CART_COMPLETED`}var Pe=(0,t.createContext)(null);function B(){let e=(0,t.useContext)(Pe);if(!e)throw Error(`Expected a Cart Context, but no Cart Context was found`);return e}function Fe({children:e,numCartLines:n,onCreate:r,onLineAdd:i,onLineRemove:a,onLineUpdate:o,onNoteUpdate:s,onBuyerIdentityUpdate:c,onAttributesUpdate:l,onDiscountCodesUpdate:u,onCreateComplete:d,onLineAddComplete:f,onLineRemoveComplete:p,onLineUpdateComplete:m,onNoteUpdateComplete:h,onBuyerIdentityUpdateComplete:g,onAttributesUpdateComplete:_,onDiscountCodesUpdateComplete:v,data:y,cartFragment:b=ae,customerAccessToken:x,countryCode:S,languageCode:C}){let w=F();if(!w)throw Error(`<CartProvider> needs to be a descendant of <ShopifyProvider>`);S=(S??w.countryIsoCode??`US`).toUpperCase(),C=(C??w.languageIsoCode??`EN`).toUpperCase(),S&&=S.toUpperCase();let[ee,T]=(0,t.useState)(S),[E,D]=(0,t.useState)(x),O=(0,t.useRef)(!1);(ee!==S||E!==x)&&(T(S),D(x),O.current=!1);let[k,A]=Ae({numCartLines:n,data:y,cartFragment:b,countryCode:S,languageCode:C,onCartActionEntry(e,t){try{switch(t.type){case`CART_CREATE`:return r?.();case`CARTLINE_ADD`:return i?.();case`CARTLINE_REMOVE`:return a?.();case`CARTLINE_UPDATE`:return o?.();case`NOTE_UPDATE`:return s?.();case`BUYER_IDENTITY_UPDATE`:return c?.();case`CART_ATTRIBUTES_UPDATE`:return l?.();case`DISCOUNT_CODES_UPDATE`:return u?.()}}catch(e){console.error(`Cart entry action failed`,e)}},onCartActionOptimisticUI(e,t){if(!e.cart)return{...e};switch(t.type){case`CARTLINE_REMOVE`:return{...e,cart:{...e.cart,lines:e?.cart?.lines?.filter(e=>e?.id&&!t.payload.lines.includes(e?.id))}};case`CARTLINE_UPDATE`:return{...e,cart:{...e.cart,lines:e?.cart?.lines?.map(e=>{let n=t.payload.lines.find(({id:t})=>t===e?.id);return n&&n.quantity?{...e,quantity:n.quantity}:e})}}}return{...e}},onCartActionComplete(e,t){let n=t.payload.cartActionEvent;try{switch(t.type){case`RESOLVE`:switch(n.type){case`CART_CREATE`:return d?.();case`CARTLINE_ADD`:return f?.();case`CARTLINE_REMOVE`:return p?.();case`CARTLINE_UPDATE`:return m?.();case`NOTE_UPDATE`:return h?.();case`BUYER_IDENTITY_UPDATE`:return ze(e,n)&&(O.current=!0),g?.();case`CART_ATTRIBUTES_UPDATE`:return _?.();case`DISCOUNT_CODES_UPDATE`:return v?.()}}}catch(e){console.error(`onCartActionComplete failed`,e)}}}),j=(0,t.useRef)(!1),[te,ne]=(0,t.useState)(!1),M=k.matches(`cartCompleted`),re=(k.value===`idle`||k.value===`error`||k.value===`cartCompleted`)&&S!==k?.context?.cart?.buyerIdentity?.countryCode&&!k.context.errors,ie=(0,t.useRef)(!1);(0,t.useEffect)(()=>{if(!j.current&&!ie.current){if(!y&&Re(`localStorage`)){ie.current=!0;try{let e=window.localStorage.getItem(ge);e&&A({type:`CART_FETCH`,payload:{cartId:e}})}catch(e){console.warn(`error fetching cartId`),console.warn(e)}}j.current=!0,ne(!0)}},[y,j,A]),(0,t.useEffect)(()=>{!re||O.current||A({type:`BUYER_IDENTITY_UPDATE`,payload:{buyerIdentity:{countryCode:S,customerAccessToken:x}}})},[S,x,re,O,A]);let N=(0,t.useCallback)(e=>{if(!j.current)return console.warn(`Cart isn't ready yet`);A(e)},[A]);(0,t.useEffect)(()=>{if(k?.context?.cart?.id&&Re(`localStorage`))try{window.localStorage.setItem(ge,k.context.cart?.id)}catch(e){console.warn(`Failed to save cartId to localStorage`,e)}},[k?.context?.cart?.id]),(0,t.useEffect)(()=>{if(M&&Re(`localStorage`))try{window.localStorage.removeItem(ge)}catch(e){console.warn(`Failed to delete cartId from localStorage`,e)}},[M]);let oe=(0,t.useCallback)(e=>{S&&!e.buyerIdentity?.countryCode&&(e.buyerIdentity??={},e.buyerIdentity.countryCode=S),x&&!e.buyerIdentity?.customerAccessToken&&(e.buyerIdentity??={},e.buyerIdentity.customerAccessToken=x),N({type:`CART_CREATE`,payload:e})},[S,x,N]),P=Le(k),se=(0,t.useMemo)(()=>({...P?.context?.cart??{lines:[],attributes:[]},status:Ie(P.value),error:P?.context?.errors,totalQuantity:P?.context?.cart?.totalQuantity??0,cartCreate:oe,cartReady:te,linesAdd(e){P?.context?.cart?.id?N({type:`CARTLINE_ADD`,payload:{lines:e}}):oe({lines:e})},linesRemove(e){N({type:`CARTLINE_REMOVE`,payload:{lines:e}})},linesUpdate(e){N({type:`CARTLINE_UPDATE`,payload:{lines:e}})},noteUpdate(e){N({type:`NOTE_UPDATE`,payload:{note:e}})},buyerIdentityUpdate(e){N({type:`BUYER_IDENTITY_UPDATE`,payload:{buyerIdentity:e}})},cartAttributesUpdate(e){N({type:`CART_ATTRIBUTES_UPDATE`,payload:{attributes:e}})},discountCodesUpdate(e){N({type:`DISCOUNT_CODES_UPDATE`,payload:{discountCodes:e}})},cartFragment:b}),[oe,te,P?.context?.cart,P?.context?.errors,P.value,b,N]);return React.createElement(Pe.Provider,{value:se},e)}function Ie(e){switch(e){case`uninitialized`:case`initializationError`:return`uninitialized`;case`idle`:case`cartCompleted`:case`error`:return`idle`;case`cartFetching`:return`fetching`;case`cartCreating`:return`creating`;case`cartLineAdding`:case`cartLineRemoving`:case`cartLineUpdating`:case`noteUpdating`:case`buyerIdentityUpdating`:case`cartAttributesUpdating`:case`discountCodesUpdating`:return`updating`}}function Le(e){let[n,r]=(0,t.useTransition)(),[i,a]=(0,t.useState)(e),o=(0,t.useRef)(!1);n&&(o.current=!0);let s=(0,t.useRef)(!1);return!n&&o.current&&(s.current=!0),(0,t.useEffect)(()=>{r(()=>{s.current||a(e)})},[e]),s.current?e:i}function Re(e){let t;try{t=window[e];let n=`__storage_test__`;return t.setItem(n,n),t.removeItem(n),!0}catch(e){return!!(e instanceof DOMException&&(e.code===22||e.code===1014||e.name===`QuotaExceededError`||e.name===`NS_ERROR_DOM_QUOTA_REACHED`)&&t&&t.length!==0)}}function ze(e,t){return!!(t.payload.buyerIdentity.countryCode&&e.cart?.buyerIdentity?.countryCode!==t.payload.buyerIdentity.countryCode)}var Be=(0,t.createContext)(null);function Ve({children:e,data:n,initialVariantId:r}){let i=(0,t.useMemo)(()=>T(n.variants??{}),[n.variants]);if(!qe(i))throw Error(`<ProductProvider/> requires 'product.variants.nodes' or 'product.variants.edges'`);let a=(0,t.useMemo)(()=>We(i),[i]),[o,s]=(0,t.useState)(()=>Ge(r,i)),[c,l]=(0,t.useState)(()=>Ke(o));(0,t.useEffect)(()=>{let e=Ge(r,i);s(e),l(Ke(e))},[r,i]);let u=(0,t.useCallback)((e,t)=>{l(n=>{let r={...n,[e]:t};return s(Ue(i,r)),r})},[l,i]),d=(0,t.useCallback)((e,t)=>Ue(i,{...c,[e]:t})?.availableForSale??!0,[c,i]),f=(0,t.useMemo)(()=>T(n.sellingPlanGroups??{}).map(e=>({...e,sellingPlans:T(e?.sellingPlans??{})})),[n.sellingPlanGroups]),[p,m]=(0,t.useState)(void 0),h=(0,t.useMemo)(()=>{if(!(!o||!p)){if(!o.sellingPlanAllocations?.nodes&&!o.sellingPlanAllocations?.edges)throw Error(`<ProductProvider/>: You must include 'sellingPlanAllocations.nodes' or 'sellingPlanAllocations.edges' in your variants in order to calculate selectedSellingPlanAllocation`);return T(o.sellingPlanAllocations).find(e=>e?.sellingPlan?.id===p.id)}},[o,p]),g=(0,t.useMemo)(()=>({product:n,variants:i,variantsConnection:n.variants,options:a,selectedVariant:o,setSelectedVariant:s,selectedOptions:c,setSelectedOption:u,setSelectedOptions:l,isOptionInStock:d,selectedSellingPlan:p,setSelectedSellingPlan:m,selectedSellingPlanAllocation:h,sellingPlanGroups:f,sellingPlanGroupsConnection:n.sellingPlanGroups}),[n,d,a,c,p,h,o,f,u,i]);return React.createElement(Be.Provider,{value:g},e)}function He(){let e=(0,t.useContext)(Be);if(!e)throw Error(`'useProduct' must be a child of <ProductProvider />`);return e}function Ue(e,t){if(!(!e.length||e?.[0]?.selectedOptions?.length!==Object.keys(t).length))return e?.find(e=>Object.entries(t).every(([t,n])=>e?.selectedOptions?.some(e=>e?.name===t&&e?.value===n)))}function We(e){let t=e.reduce((e,t)=>{if(!t.selectedOptions)throw Error(`'getOptions' requires 'variant.selectedOptions'`);return t?.selectedOptions?.forEach(t=>{e[t?.name??``]=e[t?.name??``]||new Set,e[t?.name??``].add(t?.value??``)}),e},{});return Object.keys(t).map(e=>({name:e,values:Array.from(t[e])}))}function Ge(e,t){if(e){let n=t.find(t=>t?.id===e);return n||console.warn(`<ProductProvider/> received a 'initialVariantId' prop, but could not actually find a variant with that ID`),n}if(e===null)return null;if(e===void 0)return t.find(e=>e?.availableForSale)||t[0]}function Ke(e){return e?.selectedOptions?e.selectedOptions.reduce((e,t)=>(e[t?.name??``]=t?.value??``,e),{}):{}}function qe(e){return!(!e||!Array.isArray(e))}function Je(e){let{as:n,onClick:r,defaultOnClick:i,children:a,buttonRef:o,...s}=e,c=(0,t.useCallback)(e=>{if(r){let t=r(e);if(typeof t==`boolean`&&t===!1||e?.defaultPrevented)return}i?.(e)},[i,r]),l=n||`button`;return React.createElement(l,{ref:o,onClick:c,...s},a)}function Ye(e){let[n,r]=(0,t.useState)(!1),{variantId:i,quantity:a=1,attributes:o,sellingPlanId:s,onClick:c,children:l,accessibleAddingToCartLabel:u,parent:d,...f}=e,{status:p,linesAdd:m}=B(),{selectedVariant:h}=He(),g=i??h?.id??``,_=i===null||g===``||h===null||n||f.disabled;(0,t.useEffect)(()=>{n&&p===`idle`&&r(!1)},[p,n]);let v=(0,t.useCallback)(()=>{r(!0),m([{quantity:a,merchandiseId:g||``,attributes:o,parent:d,sellingPlanId:s}])},[m,a,g,o,s,d]);return t.createElement(t.Fragment,null,t.createElement(Je,{...f,disabled:_,onClick:c,defaultOnClick:v},l),u?t.createElement(`p`,{style:{position:`absolute`,width:`1px`,height:`1px`,padding:`0`,margin:`-1px`,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,borderWidth:`0`},role:`alert`,"aria-live":`assertive`},n?u:null):null)}var V={PAGE_VIEW:`PAGE_VIEW`,ADD_TO_CART:`ADD_TO_CART`,PAGE_VIEW_2:`PAGE_VIEW_2`,COLLECTION_VIEW:`COLLECTION_VIEW`,PRODUCT_VIEW:`PRODUCT_VIEW`,SEARCH_VIEW:`SEARCH_VIEW`},Xe={article:`article`,blog:`blog`,captcha:`captcha`,cart:`cart`,collection:`collection`,customersAccount:`customers/account`,customersActivateAccount:`customers/activate_account`,customersAddresses:`customers/addresses`,customersLogin:`customers/login`,customersOrder:`customers/order`,customersRegister:`customers/register`,customersResetPassword:`customers/reset_password`,giftCard:`gift_card`,home:`index`,listCollections:`list-collections`,forbidden:`403`,notFound:`404`,page:`page`,password:`password`,product:`product`,policy:`policy`,search:`search`},Ze={hydrogen:`hydrogen`,headless:`headless`},Qe={hydrogen:`6167201`,headless:`12875497473`};function H(e,t){return{schema_id:e,payload:t,metadata:{event_created_at_ms:Date.now()}}}function U(e){let t={id:``,resource:null,resourceId:null,search:``,searchParams:new URLSearchParams,hash:``};if(typeof e!=`string`)return t;try{let{search:n,searchParams:r,pathname:i,hash:a}=new URL(e),o=i.split(`/`),s=o[o.length-1],c=o[o.length-2];return!s||!c?t:{id:`${s}${n}${a}`||``,resource:c??null,resourceId:s||null,search:n,searchParams:r,hash:a}}catch{return t}}function W(e,t){return typeof e==`object`?(Object.entries(e).forEach(([e,n])=>{n&&(t[e]=n)}),t):{}}function $e(e){return typeof document>`u`?(console.error(`${e} should only be used within the useEffect callback or event handlers`),!0):!1}var et=`xxxx-4xxx-xxxx-xxxxxxxxxxxx`;function tt(){let e=``;try{let t=window.crypto,n=new Uint16Array(31);t.getRandomValues(n);let r=0;e=et.replace(/[x]/g,e=>{let t=n[r]%16,i=e===`x`?t:t&3|8;return r++,i.toString(16)}).toUpperCase()}catch{e=et.replace(/[x]/g,e=>{let t=Math.random()*16|0;return(e===`x`?t:t&3|8).toString(16)}).toUpperCase()}return`${nt()}-${e}`}function nt(){let e=0,t=0;e=new Date().getTime()>>>0;try{t=performance.now()>>>0}catch{t=0}return Math.abs(e+t).toString(16).toLowerCase().padStart(8,`0`)}function rt(e){let t=I(e);return{[be]:t.uniqueToken,[xe]:t.visitToken}}var it=`trekkie_storefront_page_view/1.4`,at=`myshopify.dev`;function ot(e){let t=e,{id:n,resource:r}=U(t.resourceId),i=r?r.toLowerCase():void 0;return[H(it,W({pageType:t.pageType,customerId:parseInt(U(t.customerId).id||`0`),resourceType:i,resourceId:parseInt(n)},st(t)))]}function st(e){return{appClientId:e.shopifySalesChannel?Qe[e.shopifySalesChannel]:Qe.headless,isMerchantRequest:ct(e.url),hydrogenSubchannelId:e.storefrontId||e.hydrogenSubchannelId||`0`,isPersistentCookie:e.hasUserConsent,uniqToken:e.uniqueToken,visitToken:e.visitToken,microSessionId:tt(),microSessionCount:1,url:e.url,path:e.path,search:e.search,referrer:e.referrer,title:e.title,shopId:parseInt(U(e.shopId).id),currency:e.currency,contentLanguage:e.acceptedLanguage||`en`}}function ct(e){if(typeof e!=`string`)return!1;let t=new URL(e).hostname;return t.indexOf(at)!==-1||t===`localhost`}var G=`custom_storefront_customer_tracking/1.2`,lt=`page_rendered`,ut=`collection_page_rendered`,dt=`product_page_rendered`,ft=`product_added_to_cart`,pt=`search_submitted`;function K(e){return{canonical_url:e.canonicalUrl||e.url,customer_id:parseInt(U(e.customerId).id||`0`)}}function mt(e){let t=e,n=K(t),r=t.pageType,i=[];switch(i.push(H(G,W({event_name:lt,...n},q(t)))),r){case Xe.collection:i.push(H(G,W({event_name:ut,...n,collection_name:t.collectionHandle,collection_id:parseInt(U(t.collectionId).id)},q(t))));break;case Xe.product:i.push(H(G,W({event_name:dt,...n,products:bt(t.products),total_value:t.totalValue},q(t))));break;case Xe.search:i.push(H(G,W({event_name:pt,...n,search_string:t.searchString},q(t))));break}return i}function ht(e){let t=e;return[H(G,W({event_name:lt,...K(t)},q(t)))]}function gt(e){let t=e;return[H(G,W({event_name:ut,...K(t),collection_name:t.collectionHandle,collection_id:parseInt(U(t.collectionId).id)},q(t)))]}function _t(e){let t=e;return[H(G,W({event_name:dt,...K(t),products:bt(t.products),total_value:t.totalValue},q(t)))]}function vt(e){let t=e;return[H(G,W({event_name:pt,...K(t),search_string:t.searchString},q(t)))]}function yt(e){let t=e,n=U(t.cartId);return[H(G,W({event_name:ft,customerId:t.customerId,cart_token:n?.id?`${n.id}`:null,total_value:t.totalValue,products:bt(t.products),customer_id:parseInt(U(t.customerId).id||`0`)},q(t)))]}function q(e){let t=e;return{source:e.shopifySalesChannel||Ze.headless,asset_version_id:e.assetVersionId||`2026.4.2`,hydrogenSubchannelId:e.storefrontId||e.hydrogenSubchannelId||`0`,is_persistent_cookie:e.hasUserConsent,deprecated_visit_token:e.visitToken,unique_token:e.uniqueToken,event_time:Date.now(),event_id:tt(),event_source_url:e.url,referrer:e.referrer,user_agent:e.userAgent,navigation_type:e.navigationType,navigation_api:e.navigationApi,shop_id:parseInt(U(e.shopId).id),currency:e.currency,ccpa_enforced:t.ccpaEnforced||!1,gdpr_enforced:t.gdprEnforced||!1,gdpr_enforced_as_string:t.gdprEnforced?`true`:`false`,analytics_allowed:e.analyticsAllowed||!1,marketing_allowed:e.marketingAllowed||!1,sale_of_data_allowed:e.saleOfDataAllowed||!1}}function bt(e){return e?e.map(e=>{let t=W({variant_gid:e.variantGid,category:e.category,sku:e.sku,product_id:parseInt(U(e.productGid).id),variant_id:parseInt(U(e.variantGid).id)},{product_gid:e.productGid,name:e.name,variant:e.variantName||``,brand:e.brand,price:parseFloat(e.price),quantity:Number(e.quantity||0)});return JSON.stringify(t)}):[]}function xt(e,t){let{eventName:n,payload:r}=e;if(!r.hasUserConsent)return Promise.resolve();let i=[],a=r;return n===V.PAGE_VIEW?i=i.concat(ot(a),mt(a)):n===V.ADD_TO_CART?i=i.concat(yt(r)):n===V.PAGE_VIEW_2?i=i.concat(ot(a),ht(a)):n===V.COLLECTION_VIEW?i=i.concat(gt(a)):n===V.PRODUCT_VIEW?i=i.concat(_t(a)):n===V.SEARCH_VIEW&&(i=i.concat(vt(a))),i.length?wt(i,t):Promise.resolve()}function St(){return typeof window>`u`||!window.navigator?!1:/Chrome-Lighthouse/.test(window.navigator.userAgent)}var Ct=`sendShopifyAnalytics request is unsuccessful`;function wt(e,t){if(St())return Promise.resolve();let n={events:e,metadata:{event_sent_at_ms:Date.now()}};try{return fetch(t?`https://${t}/.well-known/shopify/monorail/unstable/produce_batch`:`https://monorail-edge.shopifysvc.com/unstable/produce_batch`,{method:`post`,headers:{"content-type":`text/plain`},body:JSON.stringify(n)}).then(e=>{if(!e.ok)throw Error(`Response failed`);return e.text()}).then(e=>{e&&JSON.parse(e).result.forEach(e=>{e.status!==200&&console.error(Ct,`
266
252
 
267
- `,i.message)})}).catch(r=>{console.error(vt,r)})}catch{return Promise.resolve()}}function tr(){if(Fn("getClientBrowserParameters"))return{uniqueToken:"",visitToken:"",url:"",path:"",search:"",referrer:"",title:"",userAgent:"",navigationType:"",navigationApi:""};const[e,t]=ar(),n=ne();return{uniqueToken:n.uniqueToken,visitToken:n.visitToken,url:location.href,path:location.pathname,search:location.search,referrer:document.referrer,title:document.title,userAgent:navigator.userAgent,navigationType:e,navigationApi:t}}function nr(){try{const e=(performance==null?void 0:performance.getEntriesByType)&&(performance==null?void 0:performance.getEntriesByType("navigation"));if(e&&e[0]){const t=window.performance.getEntriesByType("navigation")[0].type;return t&&t.toString()}}catch{}}function rr(){var e,t;try{if(PerformanceNavigation&&((e=performance==null?void 0:performance.navigation)==null?void 0:e.type)!==null&&((t=performance==null?void 0:performance.navigation)==null?void 0:t.type)!==void 0){const n=performance.navigation.type;switch(n){case PerformanceNavigation.TYPE_NAVIGATE:return"navigate";case PerformanceNavigation.TYPE_RELOAD:return"reload";case PerformanceNavigation.TYPE_BACK_FORWARD:return"back_forward";default:return`unknown: ${n}`}}}catch{}}function ar(){try{let e="PerformanceNavigationTiming",t=nr();return t||(t=rr(),e="performance.navigation"),t?[t,e]:["unknown","unknown"]}catch{}return["error","error"]}function ir(e){const{cartCreate:t,checkoutUrl:n}=oe(),[r,a]=l.useState(!1),{quantity:i,variantId:o,sellingPlanId:s,onClick:u,attributes:d,children:h,...f}=e;l.useEffect(()=>{r&&n&&(window.location.href=n)},[r,n]);const y=l.useCallback(()=>{a(!0),t({lines:[{quantity:i??1,merchandiseId:o,attributes:d,sellingPlanId:s}]})},[t,i,o,d,s]);return React.createElement(we,{disabled:r??f.disabled,...f,onClick:u,defaultOnClick:y},h)}function or(e){const[t,n]=l.useState(!1),{status:r,checkoutUrl:a}=oe(),{children:i,...o}=e;return l.useEffect(()=>{t&&a&&r==="idle"&&(window.location.href=a)},[t,r,a]),React.createElement(we,{...o,disabled:t||o.disabled,onClick:()=>n(!0)},i)}function Pt(e){const{countryIsoCode:t,languageIsoCode:n}=le(),r=n.includes("_")?n.replace("_","-"):`${n}-${t}`;if(!r)throw new Error("useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work");const a=parseFloat(e.amount);let i=!0;try{new Intl.NumberFormat(r,{style:"currency",currency:e.currencyCode})}catch(c){c instanceof RangeError&&c.message.includes("currency")&&(i=!1)}const{defaultFormatter:o,nameFormatter:s,narrowSymbolFormatter:u,withoutTrailingZerosFormatter:d,withoutCurrencyFormatter:h,withoutTrailingZerosOrCurrencyFormatter:f}=l.useMemo(()=>{const c=i?{style:"currency",currency:e.currencyCode}:{style:"decimal",minimumFractionDigits:2,maximumFractionDigits:2};return{defaultFormatter:se(r,c),nameFormatter:se(r,{...c,currencyDisplay:"name"}),narrowSymbolFormatter:se(r,{...c,currencyDisplay:"narrowSymbol"}),withoutTrailingZerosFormatter:se(r,{...c,minimumFractionDigits:0,maximumFractionDigits:0}),withoutCurrencyFormatter:se(r,{minimumFractionDigits:2,maximumFractionDigits:2}),withoutTrailingZerosOrCurrencyFormatter:se(r,{minimumFractionDigits:0,maximumFractionDigits:0})}},[e.currencyCode,r,i]),y=c=>c.type==="currency",E=l.useMemo(()=>({original:()=>e,currencyCode:()=>e.currencyCode,localizedString:()=>{const c=o().format(a);return i?c:`${c} ${e.currencyCode}`},parts:()=>{const c=o().formatToParts(a);return i||c.push({type:"literal",value:" "},{type:"currency",value:e.currencyCode}),c},withoutTrailingZeros:()=>{const c=a%1===0?d().format(a):o().format(a);return i?c:`${c} ${e.currencyCode}`},withoutTrailingZerosAndCurrency:()=>a%1===0?f().format(a):h().format(a),currencyName:()=>{var c;return((c=s().formatToParts(a).find(y))==null?void 0:c.value)??e.currencyCode},currencySymbol:()=>{var c;return((c=o().formatToParts(a).find(y))==null?void 0:c.value)??e.currencyCode},currencyNarrowSymbol:()=>{var c;return((c=u().formatToParts(a).find(y))==null?void 0:c.value)??""},amount:()=>o().formatToParts(a).filter(c=>["decimal","fraction","group","integer","literal"].includes(c.type)).map(c=>c.value).join("")}),[e,a,i,s,o,u,h,d,f]);return l.useMemo(()=>new Proxy(E,{get:(c,S)=>{var T;return(T=Reflect.get(c,S))==null?void 0:T.call(null)}}),[E])}const Ot=new Map;function se(e,t){const n=JSON.stringify([e,t]);return function(){let r=Ot.get(n);if(!r){try{r=new Intl.NumberFormat(e,t)}catch(a){if(a instanceof RangeError&&a.message.includes("currency")){const i={...t};delete i.currency,delete i.currencyDisplay,delete i.currencySign,r=new Intl.NumberFormat(e,i)}else throw a}Ot.set(n,r)}return r}}function Pe({data:e,as:t,withoutCurrency:n,withoutTrailingZeros:r,measurement:a,measurementSeparator:i="/",...o}){if(!sr(e))throw new Error("<Money/> needs a valid 'data' prop that has 'amount' and 'currencyCode'");const s=Pt(e),u=t??"div";let d=s.localizedString;return(n||r)&&(n&&!r?d=s.amount:!n&&r?d=s.withoutTrailingZeros:d=s.withoutTrailingZerosAndCurrency),React.createElement(u,{...o},d,a&&a.referenceUnit&&React.createElement(React.Fragment,null,i,a.referenceUnit))}function sr(e){return typeof e.amount=="string"&&!!e.amount&&typeof e.currencyCode=="string"&&!!e.currencyCode}function cr(e){const{cost:t}=oe(),{amountType:n="total",children:r,...a}=e;let i;return n=="total"?i=t==null?void 0:t.totalAmount:n=="subtotal"?i=t==null?void 0:t.subtotalAmount:n=="tax"?i=t==null?void 0:t.totalTaxAmount:n=="duty"&&(i=t==null?void 0:t.totalDutyAmount),i==null?null:React.createElement(Pe,{...a,data:i},r)}const Rt=l.createContext(null);function je(){const e=l.useContext(Rt);if(e==null)throw new Error("Expected a cart line context but none was found");return e}function ur({children:e,line:t}){return React.createElement(Rt.Provider,{value:t},e)}function lr(e){const t=je(),{as:n,...r}=e,a=n||"span";return React.createElement(a,{...r},t.quantity)}function dr(e){const{status:t,linesRemove:n,linesUpdate:r}=oe(),a=je(),{children:i,adjust:o,onClick:s,...u}=e,d=l.useCallback(()=>{if(o==="remove"){n([(a==null?void 0:a.id)??""]);return}const f=o==="decrease"?((a==null?void 0:a.quantity)??0)-1:((a==null?void 0:a.quantity)??0)+1;if(f<=0){n([(a==null?void 0:a.id)??""]);return}const y={id:(a==null?void 0:a.id)??"",quantity:f,attributes:(a==null?void 0:a.attributes)??[]};r([y])},[o,a==null?void 0:a.attributes,a==null?void 0:a.id,a==null?void 0:a.quantity,n,r]),h=u.disabled;return React.createElement(we,{...u,onClick:s,defaultOnClick:d,disabled:typeof h<"u"?h:t!=="idle"},i)}const fr={DateTime:"string",Decimal:"string",HTML:"string",URL:"string",Color:"string",UnsignedInt64:"string"},hr={DateTime:"string",Decimal:"string",HTML:"string",ISO8601DateTime:"string",URL:"string",UnsignedInt64:"string"},Vt=l.forwardRef((e,t)=>{const{data:n,options:r,id:a=n.id,frameBorder:i="0",allow:o="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:s=!0,loading:u="lazy",...d}=e;if(!n.embedUrl)throw new Error("<ExternalVideo/> requires the 'embedUrl' property");let h=n.embedUrl;if(r){const f=new URL(n.embedUrl);for(const[y,E]of Object.entries(r))typeof E>"u"||f.searchParams.set(y,E.toString());h=f.toString()}return React.createElement("iframe",{...d,id:a??n.embedUrl,title:n.alt??n.id??"external video",frameBorder:i,allow:o,allowFullScreen:s,src:h,loading:u,ref:t})}),qe=",",ce={OPTION:":",END_OF_PREFIX:",",SEQUENCE_GAP:" ",RANGE:"-"},xe=(()=>{const e=new Map;return function(t,n){var r;if(t.length===0)return!1;if(!e.has(n)){const a=new Set;for(const i of Dt(n)){a.add(i.join(qe));for(let o=0;o<i.length;o++)a.add(i.slice(0,o+1).join(qe))}e.set(n,a)}return!!((r=e.get(n))!=null&&r.has(t.join(qe)))}})();function Dt(e){if(!e)return[];if(e.startsWith("v1_"))return mr(yr(e));throw new Error("Unsupported option value encoding")}const yr=e=>e.replace(/^v1_/,"");function mr(e){const t=/[ :,-]/g;let n=0,r;const a=[],i=[];let o=0,s=null;for(;r=t.exec(e);){const d=r[0],h=Number.parseInt(e.slice(n,r.index))||0;if(s!==null){for(;s<h;s++)i[o]=s,a.push([...i]);s=null}i[o]=h,d===ce.RANGE?s=h:d===ce.OPTION?o++:((d===ce.SEQUENCE_GAP||d===ce.END_OF_PREFIX&&e[r.index-1]!==ce.END_OF_PREFIX)&&a.push([...i]),d===ce.END_OF_PREFIX&&(i.pop(),o--)),n=t.lastIndex}const u=e.match(/\d+$/g);if(u){const d=parseInt(u[0]);if(s!=null)for(;s<=d;s++)i[o]=s,a.push([...i]);else a.push([d])}return a}function gr(e){return Object.assign({},...e.map(t=>({[t.name]:Object.assign({},...t!=null&&t.optionValues?t.optionValues.map((n,r)=>({[n.name]:r})):[])})))}function he(e){return Object.assign({},...e.map(t=>({[t.name]:t.value})))}function He(e){return JSON.stringify(he(e))}function kt(e){return Array.isArray(e)?JSON.stringify(Object.assign({},...e.map(t=>({[t.name]:t.value})))):JSON.stringify(e)}function pr(e,t){return Object.keys(e).map(r=>t[r]?t[r][e[r]]:null).filter(r=>r!==null)}function Er(e){return Object.assign({},...e.map(t=>({[kt(t.selectedOptions||[])]:t})))}const Ut=["options","selectedOrFirstAvailableVariant","adjacentVariants"],_r=["handle","encodedVariantExistence","encodedVariantAvailability"];function z(e){return console.error(`[h2:error:getProductOptions] product.${e} is missing. Make sure you query for this field from the Storefront API.`),!1}function Nt(e,t=!1){var a;let n=!0;const r=Object.keys(e);if((t?[...Ut,..._r]:Ut).forEach(i=>{r.includes(i)||(n=z(i))}),e.options){const i=e==null?void 0:e.options[0];if(t&&!(i!=null&&i.name)&&(n=z("options.name")),(a=e==null?void 0:e.options[0])!=null&&a.optionValues){let o=e.options[0].optionValues[0];t&&!(o!=null&&o.name)&&(n=z("options.optionValues.name")),o=e.options[0].optionValues.filter(s=>!!(s!=null&&s.firstSelectableVariant))[0],o!=null&&o.firstSelectableVariant&&(n=$e(o.firstSelectableVariant,"options.optionValues.firstSelectableVariant",n,t))}else n=z("options.optionValues")}return e.selectedOrFirstAvailableVariant&&(n=$e(e.selectedOrFirstAvailableVariant,"selectedOrFirstAvailableVariant",n,t)),e.adjacentVariants&&e.adjacentVariants[0]&&(n=$e(e.adjacentVariants[0],"adjacentVariants",n,t)),n?e:{}}function $e(e,t,n,r){var i;let a=n;if(r&&!((i=e.product)!=null&&i.handle)&&(a=z(`${t}.product.handle`)),e.selectedOptions){const o=e.selectedOptions[0];o!=null&&o.name||(a=z(`${t}.selectedOptions.name`)),o!=null&&o.value||(a=z(`${t}.selectedOptions.value`))}else a=z(`${t}.selectedOptions`);return a}function Tr(e){const t=Nt(e);if(!t.options)return[];const n={};t.options.map(a=>{var i;(i=a.optionValues)==null||i.map(o=>{if(o.firstSelectableVariant){const s=He(o.firstSelectableVariant.selectedOptions);n[s]=o.firstSelectableVariant}})}),t.adjacentVariants.map(a=>{const i=He(a.selectedOptions);n[i]=a});const r=t.selectedOrFirstAvailableVariant;if(r){const a=He(r.selectedOptions);n[a]=r}return Object.values(n)}function Sr(e){const t=Nt(e,!0);if(!t.options)return[];const{options:n,selectedOrFirstAvailableVariant:r,adjacentVariants:a,encodedVariantExistence:i,encodedVariantAvailability:o,handle:s}=t,u=r==null?void 0:r.selectedOptions.map(c=>c.name),d=n.filter(c=>u&&u.indexOf(c.name)>=0),h=gr(n),f=Er(r?[r,...a]:a),y=he(r?r.selectedOptions:[]);return d.map((c,S)=>({...c,optionValues:c.optionValues.map(T=>{var I;const A={...y};A[c.name]=T.name;const v=kt(A||[]),R=pr(A||[],h).slice(0,S+1),m=xe(R,i||""),g=xe(R,o||""),_=f[v]||T.firstSelectableVariant;let P={};_&&(P=he(_.selectedOptions||[]));const O=new URLSearchParams(P),b=((I=_==null?void 0:_.product)==null?void 0:I.handle)||s;return{...T,variant:_,handle:b,variantUriQuery:O.toString(),selected:y[c.name]===T.name,exists:m,available:g,isDifferentProduct:b!==s}})}))}const Cr=`#graphql
253
+ `,e.message)})}).catch(e=>{console.error(Ct,e)})}catch{return Promise.resolve()}}function Tt(){if($e(`getClientBrowserParameters`))return{uniqueToken:``,visitToken:``,url:``,path:``,search:``,referrer:``,title:``,userAgent:``,navigationType:``,navigationApi:``};let[e,t]=Ot(),n=I();return{uniqueToken:n.uniqueToken,visitToken:n.visitToken,url:location.href,path:location.pathname,search:location.search,referrer:document.referrer,title:document.title,userAgent:navigator.userAgent,navigationType:e,navigationApi:t}}function Et(){try{let e=performance?.getEntriesByType&&performance?.getEntriesByType(`navigation`);if(e&&e[0]){let e=window.performance.getEntriesByType(`navigation`)[0].type;return e&&e.toString()}}catch{}}function Dt(){try{if(PerformanceNavigation&&performance?.navigation?.type!==null&&performance?.navigation?.type!==void 0){let e=performance.navigation.type;switch(e){case PerformanceNavigation.TYPE_NAVIGATE:return`navigate`;case PerformanceNavigation.TYPE_RELOAD:return`reload`;case PerformanceNavigation.TYPE_BACK_FORWARD:return`back_forward`;default:return`unknown: ${e}`}}}catch{}}function Ot(){try{let e=`PerformanceNavigationTiming`,t=Et();return t||(t=Dt(),e=`performance.navigation`),t?[t,e]:[`unknown`,`unknown`]}catch{}return[`error`,`error`]}function kt(e){let{cartCreate:n,checkoutUrl:r}=B(),[i,a]=(0,t.useState)(!1),{quantity:o,variantId:s,sellingPlanId:c,onClick:l,attributes:u,children:d,...f}=e;(0,t.useEffect)(()=>{i&&r&&(window.location.href=r)},[i,r]);let p=(0,t.useCallback)(()=>{a(!0),n({lines:[{quantity:o??1,merchandiseId:s,attributes:u,sellingPlanId:c}]})},[n,o,s,u,c]);return React.createElement(Je,{disabled:i??f.disabled,...f,onClick:l,defaultOnClick:p},d)}function At(e){let[n,r]=(0,t.useState)(!1),{status:i,checkoutUrl:a}=B(),{children:o,...s}=e;return(0,t.useEffect)(()=>{n&&a&&i===`idle`&&(window.location.href=a)},[n,i,a]),React.createElement(Je,{...s,disabled:n||s.disabled,onClick:()=>r(!0)},o)}function jt(e){let{countryIsoCode:n,languageIsoCode:r}=F(),i=r.includes(`_`)?r.replace(`_`,`-`):`${r}-${n}`;if(!i)throw Error(`useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work`);let a=parseFloat(e.amount),o=!0;try{new Intl.NumberFormat(i,{style:`currency`,currency:e.currencyCode})}catch(e){e instanceof RangeError&&e.message.includes(`currency`)&&(o=!1)}let{defaultFormatter:s,nameFormatter:c,narrowSymbolFormatter:l,withoutTrailingZerosFormatter:u,withoutCurrencyFormatter:d,withoutTrailingZerosOrCurrencyFormatter:f}=(0,t.useMemo)(()=>{let t=o?{style:`currency`,currency:e.currencyCode}:{style:`decimal`,minimumFractionDigits:2,maximumFractionDigits:2};return{defaultFormatter:J(i,t),nameFormatter:J(i,{...t,currencyDisplay:`name`}),narrowSymbolFormatter:J(i,{...t,currencyDisplay:`narrowSymbol`}),withoutTrailingZerosFormatter:J(i,{...t,minimumFractionDigits:0,maximumFractionDigits:0}),withoutCurrencyFormatter:J(i,{minimumFractionDigits:2,maximumFractionDigits:2}),withoutTrailingZerosOrCurrencyFormatter:J(i,{minimumFractionDigits:0,maximumFractionDigits:0})}},[e.currencyCode,i,o]),p=e=>e.type===`currency`,m=(0,t.useMemo)(()=>({original:()=>e,currencyCode:()=>e.currencyCode,localizedString:()=>{let t=s().format(a);return o?t:`${t} ${e.currencyCode}`},parts:()=>{let t=s().formatToParts(a);return o||t.push({type:`literal`,value:` `},{type:`currency`,value:e.currencyCode}),t},withoutTrailingZeros:()=>{let t=a%1==0?u().format(a):s().format(a);return o?t:`${t} ${e.currencyCode}`},withoutTrailingZerosAndCurrency:()=>a%1==0?f().format(a):d().format(a),currencyName:()=>c().formatToParts(a).find(p)?.value??e.currencyCode,currencySymbol:()=>s().formatToParts(a).find(p)?.value??e.currencyCode,currencyNarrowSymbol:()=>l().formatToParts(a).find(p)?.value??``,amount:()=>s().formatToParts(a).filter(e=>[`decimal`,`fraction`,`group`,`integer`,`literal`].includes(e.type)).map(e=>e.value).join(``)}),[e,a,o,c,s,l,d,u,f]);return(0,t.useMemo)(()=>new Proxy(m,{get:(e,t)=>Reflect.get(e,t)?.call(null)}),[m])}var Mt=new Map;function J(e,t){let n=JSON.stringify([e,t]);return function(){let r=Mt.get(n);if(!r){try{r=new Intl.NumberFormat(e,t)}catch(n){if(n instanceof RangeError&&n.message.includes(`currency`)){let n={...t};delete n.currency,delete n.currencyDisplay,delete n.currencySign,r=new Intl.NumberFormat(e,n)}else throw n}Mt.set(n,r)}return r}}function Nt({data:e,as:t,withoutCurrency:n,withoutTrailingZeros:r,measurement:i,measurementSeparator:a=`/`,...o}){if(!Pt(e))throw Error(`<Money/> needs a valid 'data' prop that has 'amount' and 'currencyCode'`);let s=jt(e),c=t??`div`,l=s.localizedString;return(n||r)&&(l=n&&!r?s.amount:!n&&r?s.withoutTrailingZeros:s.withoutTrailingZerosAndCurrency),React.createElement(c,o,l,i&&i.referenceUnit&&React.createElement(React.Fragment,null,a,i.referenceUnit))}function Pt(e){return typeof e.amount==`string`&&!!e.amount&&typeof e.currencyCode==`string`&&!!e.currencyCode}function Ft(e){let{cost:t}=B(),{amountType:n=`total`,children:r,...i}=e,a;return n==`total`?a=t?.totalAmount:n==`subtotal`?a=t?.subtotalAmount:n==`tax`?a=t?.totalTaxAmount:n==`duty`&&(a=t?.totalDutyAmount),a==null?null:React.createElement(Nt,{...i,data:a},r)}var It=(0,t.createContext)(null);function Lt(){let e=(0,t.useContext)(It);if(e==null)throw Error(`Expected a cart line context but none was found`);return e}function Rt({children:e,line:t}){return React.createElement(It.Provider,{value:t},e)}function zt(e){let t=Lt(),{as:n,...r}=e,i=n||`span`;return React.createElement(i,r,t.quantity)}function Bt(e){let{status:n,linesRemove:r,linesUpdate:i}=B(),a=Lt(),{children:o,adjust:s,onClick:c,...l}=e,u=(0,t.useCallback)(()=>{if(s===`remove`){r([a?.id??``]);return}let e=s===`decrease`?(a?.quantity??0)-1:(a?.quantity??0)+1;if(e<=0){r([a?.id??``]);return}i([{id:a?.id??``,quantity:e,attributes:a?.attributes??[]}])},[s,a?.attributes,a?.id,a?.quantity,r,i]),d=l.disabled;return React.createElement(Je,{...l,onClick:c,defaultOnClick:u,disabled:d===void 0?n!==`idle`:d},o)}var Vt={DateTime:`string`,Decimal:`string`,HTML:`string`,URL:`string`,Color:`string`,UnsignedInt64:`string`},Ht={DateTime:`string`,Decimal:`string`,HTML:`string`,ISO8601DateTime:`string`,URL:`string`,UnsignedInt64:`string`},Ut=(0,t.forwardRef)((e,t)=>{let{data:n,options:r,id:i=n.id,frameBorder:a=`0`,allow:o=`accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture`,allowFullScreen:s=!0,loading:c=`lazy`,...l}=e;if(!n.embedUrl)throw Error(`<ExternalVideo/> requires the 'embedUrl' property`);let u=n.embedUrl;if(r){let e=new URL(n.embedUrl);for(let[t,n]of Object.entries(r))n!==void 0&&e.searchParams.set(t,n.toString());u=e.toString()}return React.createElement(`iframe`,{...l,id:i??n.embedUrl,title:n.alt??n.id??`external video`,frameBorder:a,allow:o,allowFullScreen:s,src:u,loading:c,ref:t})}),Wt=`,`,Y={OPTION:`:`,END_OF_PREFIX:`,`,SEQUENCE_GAP:` `,RANGE:`-`},Gt=(()=>{let e=new Map;return function(t,n){if(t.length===0)return!1;if(!e.has(n)){let t=new Set;for(let e of Kt(n)){t.add(e.join(Wt));for(let n=0;n<e.length;n++)t.add(e.slice(0,n+1).join(Wt))}e.set(n,t)}return!!e.get(n)?.has(t.join(Wt))}})();function Kt(e){if(!e)return[];if(e.startsWith(`v1_`))return Jt(qt(e));throw Error(`Unsupported option value encoding`)}var qt=e=>e.replace(/^v1_/,``);function Jt(e){let t=/[ :,-]/g,n=0,r,i=[],a=[],o=0,s=null;for(;r=t.exec(e);){let c=r[0],l=Number.parseInt(e.slice(n,r.index))||0;if(s!==null){for(;s<l;s++)a[o]=s,i.push([...a]);s=null}a[o]=l,c===Y.RANGE?s=l:c===Y.OPTION?o++:((c===Y.SEQUENCE_GAP||c===Y.END_OF_PREFIX&&e[r.index-1]!==Y.END_OF_PREFIX)&&i.push([...a]),c===Y.END_OF_PREFIX&&(a.pop(),o--)),n=t.lastIndex}let c=e.match(/\d+$/g);if(c){let e=parseInt(c[0]);if(s!=null)for(;s<=e;s++)a[o]=s,i.push([...a]);else i.push([e])}return i}function Yt(e){return Object.assign({},...e.map(e=>({[e.name]:Object.assign({},...e?.optionValues?e.optionValues.map((e,t)=>({[e.name]:t})):[])})))}function X(e){return Object.assign({},...e.map(e=>({[e.name]:e.value})))}function Xt(e){return JSON.stringify(X(e))}function Zt(e){return JSON.stringify(Array.isArray(e)?Object.assign({},...e.map(e=>({[e.name]:e.value}))):e)}function Qt(e,t){return Object.keys(e).map(n=>t[n]?t[n][e[n]]:null).filter(e=>e!==null)}function $t(e){return Object.assign({},...e.map(e=>({[Zt(e.selectedOptions||[])]:e})))}var en=[`options`,`selectedOrFirstAvailableVariant`,`adjacentVariants`],tn=[`handle`,`encodedVariantExistence`,`encodedVariantAvailability`];function Z(e){return console.error(`[h2:error:getProductOptions] product.${e} is missing. Make sure you query for this field from the Storefront API.`),!1}function nn(e,t=!1){let n=!0,r=Object.keys(e);if((t?[...en,...tn]:en).forEach(e=>{r.includes(e)||(n=Z(e))}),e.options){let r=e?.options[0];if(t&&!r?.name&&(n=Z(`options.name`)),e?.options[0]?.optionValues){let r=e.options[0].optionValues[0];t&&!r?.name&&(n=Z(`options.optionValues.name`)),r=e.options[0].optionValues.filter(e=>!!e?.firstSelectableVariant)[0],r?.firstSelectableVariant&&(n=rn(r.firstSelectableVariant,`options.optionValues.firstSelectableVariant`,n,t))}else n=Z(`options.optionValues`)}return e.selectedOrFirstAvailableVariant&&(n=rn(e.selectedOrFirstAvailableVariant,`selectedOrFirstAvailableVariant`,n,t)),e.adjacentVariants&&e.adjacentVariants[0]&&(n=rn(e.adjacentVariants[0],`adjacentVariants`,n,t)),n?e:{}}function rn(e,t,n,r){let i=n;if(r&&!e.product?.handle&&(i=Z(`${t}.product.handle`)),e.selectedOptions){let n=e.selectedOptions[0];n?.name||(i=Z(`${t}.selectedOptions.name`)),n?.value||(i=Z(`${t}.selectedOptions.value`))}else i=Z(`${t}.selectedOptions`);return i}function an(e){let t=nn(e);if(!t.options)return[];let n={};t.options.map(e=>{e.optionValues?.map(e=>{if(e.firstSelectableVariant){let t=Xt(e.firstSelectableVariant.selectedOptions);n[t]=e.firstSelectableVariant}})}),t.adjacentVariants.map(e=>{let t=Xt(e.selectedOptions);n[t]=e});let r=t.selectedOrFirstAvailableVariant;if(r){let e=Xt(r.selectedOptions);n[e]=r}return Object.values(n)}function on(e){let t=nn(e,!0);if(!t.options)return[];let{options:n,selectedOrFirstAvailableVariant:r,adjacentVariants:i,encodedVariantExistence:a,encodedVariantAvailability:o,handle:s}=t,c=r?.selectedOptions.map(e=>e.name),l=n.filter(e=>c&&c.indexOf(e.name)>=0),u=Yt(n),d=$t(r?[r,...i]:i),f=X(r?r.selectedOptions:[]);return l.map((e,t)=>({...e,optionValues:e.optionValues.map(n=>{let r={...f};r[e.name]=n.name;let i=Zt(r||[]),c=Qt(r||[],u).slice(0,t+1),l=Gt(c,a||``),p=Gt(c,o||``),m=d[i]||n.firstSelectableVariant,h={};m&&(h=X(m.selectedOptions||[]));let g=new URLSearchParams(h),_=m?.product?.handle||s;return{...n,variant:m,handle:_,variantUriQuery:g.toString(),selected:f[e.name]===n.name,exists:l,available:p,isDifferentProduct:_!==s}})}))}var sn=`#graphql
268
254
  fragment Image on Image {
269
255
  altText
270
256
  url
271
257
  width
272
258
  height
273
259
  }
274
- `,Mt=M.forwardRef(({alt:e,aspectRatio:t,crop:n="center",data:r,decoding:a="async",height:i="auto",loader:o=ye,loading:s="lazy",sizes:u,src:d,srcSetOptions:h={intervals:15,startingWidth:200,incrementSize:200,placeholderWidth:100},width:f="100%",...y},E)=>{const c=M.useMemo(()=>{const g=r!=null&&r.width&&(r!=null&&r.height)?r==null?void 0:r.width:void 0,_=r!=null&&r.width&&(r!=null&&r.height)?r==null?void 0:r.height:void 0;return{width:g,height:_,unitsMatch:!!Lt(g,_)}},[r]),S=M.useMemo(()=>{const _=me((f||"100%").toString()),P=`${_.number}${_.unit}`,O=i==null,b=O?null:me(i.toString()),I=b?`${b.number}${b.unit}`:"",H=O?"auto":I,V=d||(r==null?void 0:r.url),$=r!=null&&r.altText&&!e?r==null?void 0:r.altText:e||"",ee=t||(c.unitsMatch?[ge(c.width),ge(c.height)].join("/"):void 0);return{width:P,height:H,src:V,alt:$,aspectRatio:ee}},[f,i,d,r,e,t,c,y==null?void 0:y.key]),{intervals:T,startingWidth:A,incrementSize:v,placeholderWidth:w}=h,R=M.useMemo(()=>wr(f,T,A,v),[f,T,A,v]);return jt(S.width)?M.createElement(br,{aspectRatio:t,crop:n,decoding:a,height:i,imageWidths:R,loader:o,loading:s,normalizedProps:S,passthroughProps:y,ref:E,width:f,data:r}):M.createElement(Ar,{aspectRatio:t,crop:n,decoding:a,imageWidths:R,loader:o,loading:s,normalizedProps:S,passthroughProps:y,placeholderWidth:w,ref:E,sizes:u,data:r})}),br=M.forwardRef(({aspectRatio:e,crop:t,decoding:n,height:r,imageWidths:a,loader:i=ye,loading:o,normalizedProps:s,passthroughProps:u,width:d,data:h},f)=>{const y=M.useMemo(()=>{const E=ge(d),c=ge(r),S=e||(Lt(s.width,s.height)?[E,c].join("/"):s.aspectRatio?s.aspectRatio:void 0),T=a===void 0?void 0:xt(a,S,t,{width:(h==null?void 0:h.width)??void 0,height:(h==null?void 0:h.height)??void 0}),A=c||(S&&E?E*(Be(S)??1):void 0),v=qt(s.src,T,i),w=i({src:s.src,width:E,height:A,crop:s.height==="auto"?void 0:t});return{width:E,aspectRatio:S,height:A,srcSet:v,src:w}},[e,t,h,r,a,i,s,d]);return M.createElement("img",{ref:f,alt:s.alt,decoding:n,height:y.height,loading:o,src:y.src,srcSet:y.srcSet,width:y.width,style:{aspectRatio:y.aspectRatio,...u.style},...u})}),Ar=M.forwardRef(({crop:e,decoding:t,imageWidths:n,loader:r=ye,loading:a,normalizedProps:i,passthroughProps:o,placeholderWidth:s,sizes:u,data:d},h)=>{const f=M.useMemo(()=>{const y=n===void 0?void 0:xt(n,i.aspectRatio,e,{width:(d==null?void 0:d.width)??void 0,height:(d==null?void 0:d.height)??void 0}),E=i.aspectRatio&&s?s*(Be(i.aspectRatio)??1):void 0,c=qt(i.src,y,r),S=r({src:i.src,width:s,height:E,crop:e});return{placeholderHeight:E,srcSet:c,src:S}},[e,d,n,r,i,s]);return M.createElement("img",{ref:h,alt:i.alt,decoding:t,height:f.placeholderHeight,loading:a,sizes:u,src:f.src,srcSet:f.srcSet,width:s,...o,style:{width:i.width,aspectRatio:i.aspectRatio,...o.style}})}),Ft="https://placeholder.shopify.com";function ye({src:e,width:t,height:n,crop:r}){if(!e)return"";const a=new URL(e,Ft);return t&&a.searchParams.append("width",Math.round(t).toString()),n&&a.searchParams.append("height",Math.round(n).toString()),r&&a.searchParams.append("crop",r),a.href.replace(Ft,"")}function Lt(e="100%",t="auto"){return me(e.toString()).unit===me(t.toString()).unit}function me(e){const t=e.replace(/[0-9.]/g,""),n=parseFloat(e.replace(t,""));return{unit:t===""?n===void 0?"auto":"px":t,number:n}}function ge(e){if(e===void 0)return;const{unit:t,number:n}=me(e.toString());switch(t){case"em":return n*16;case"rem":return n*16;case"px":return n;case"":return n;default:return}}function jt(e){return typeof e=="number"||/\d(px|em|rem)$/.test(e)}function qt(e,t,n=ye){return e?(t==null?void 0:t.length)===0||!t?e:t.map((r,a)=>`${n({src:e,width:r.width,height:r.height,crop:r.crop})} ${t.length===3?`${a+1}x`:`${r.width??0}w`}`).join(", "):""}function wr(e="100%",t,n,r){const a=Array.from({length:t},(o,s)=>s*r+n),i=Array.from({length:3},(o,s)=>(s+1)*(ge(e)??0));return jt(e)?i:a}function Be(e){if(!e)return;const[t,n]=e.split("/");return 1/(Number(t)/Number(n))}function xt(e,t,n="center",r){if(e)return e.map(a=>({width:a,height:t?a*(Be(t)??1):void 0,crop:n})).filter(({width:a,height:i})=>!(r!=null&&r.width&&a>r.width||r!=null&&r.height&&i&&i>r.height))}const Ht={};function Ir(e,t){const n=Ht[e];if(n)return n;const r=new Promise((a,i)=>{const o=document.createElement("script");t!=null&&t.module?o.type="module":o.type="text/javascript",o.src=e,o.onload=()=>{a(!0)},o.onerror=()=>{i(!1)},(t==null?void 0:t.in)==="head"?document.head.appendChild(o):document.body.appendChild(o);const s=t==null?void 0:t.attributes;s&&Object.keys(s).forEach(u=>{o.setAttribute(u,s[u])})});return Ht[e]=r,r}function Ye(e,t){const[n,r]=l.useState("loading");return l.useEffect(()=>{Ir(e,t).then(()=>r("done")).catch(()=>r("error"))},[e]),n}const $t=l.forwardRef((e,t)=>{var h;const{data:n,previewImageOptions:r,id:a=n.id,playsInline:i=!0,controls:o=!0,sourceProps:s={},...u}=e,d=ye({src:((h=n.previewImage)==null?void 0:h.url)??"",...r});if(!n.sources)throw new Error("<Video/> requires a 'data.sources' array");return React.createElement("video",{...u,id:a,playsInline:i,controls:o,poster:d,ref:t},n.sources.map(f=>{if(!(f!=null&&f.url&&(f!=null&&f.mimeType)))throw new Error("<Video/> needs 'source.url' and 'source.mimeType'");return React.createElement("source",{...s,key:f.url,src:f.url,type:f.mimeType})}))});function Bt(e){var d,h,f;const[t,n]=l.useState(void 0),r=l.useCallback(y=>{n(y)},[]),{data:a,children:i,className:o,...s}=e,u=Ye("https://unpkg.com/@google/model-viewer@v1.12.1/dist/model-viewer.min.js",{module:!0});return l.useEffect(()=>{const y={error:s.onError,load:s.onLoad,preload:s.onPreload,"model-visibility":s.onModelVisibility,progress:s.onProgress,"ar-status":s.onArStatus,"ar-tracking":s.onArTracking,"quick-look-button-tapped":s.onQuickLookButtonTapped,"camera-change":s.onCameraChange,"environment-change":s.onEnvironmentChange,play:s.onPlay,pause:s.onPause,"scene-graph-ready":s.onSceneGraphReady};if(t)return Object.entries(y).forEach(([E,c])=>{c&&t.addEventListener(E,c)}),()=>{t!=null&&Object.entries(y).forEach(([E,c])=>{c&&t.removeEventListener(E,c)})}},[t,s.onArStatus,s.onArTracking,s.onCameraChange,s.onEnvironmentChange,s.onError,s.onLoad,s.onModelVisibility,s.onPause,s.onPlay,s.onPreload,s.onProgress,s.onQuickLookButtonTapped,s.onSceneGraphReady]),u!=="done"?null:(h=(d=a.sources)==null?void 0:d[0])!=null&&h.url?React.createElement("model-viewer",{ref:r,...s,class:o,id:s.id??a.id,src:a.sources[0].url,alt:a.alt??null,"camera-controls":s.cameraControls??!0,poster:(s.poster||((f=a.previewImage)==null?void 0:f.url))??null,autoplay:s.autoplay??!0,loading:s.loading,reveal:s.reveal,ar:s.ar,"ar-modes":s.arModes,"ar-scale":s.arScale,"ar-placement":s.arPlacement,"ios-src":s.iosSrc,"touch-action":s.touchAction,"disable-zoom":s.disableZoom,"orbit-sensitivity":s.orbitSensitivity,"auto-rotate":s.autoRotate,"auto-rotate-delay":s.autoRotateDelay,"rotation-per-second":s.rotationPerSecond,"interaction-policy":s.interactionPolicy,"interaction-prompt":s.interactionPrompt,"interaction-prompt-style":s.interactionPromptStyle,"interaction-prompt-threshold":s.interactionPromptThreshold,"camera-orbit":s.cameraOrbit,"camera-target":s.cameraTarget,"field-of-view":s.fieldOfView,"max-camera-orbit":s.maxCameraOrbit,"min-camera-orbit":s.minCameraOrbit,"max-field-of-view":s.maxFieldOfView,"min-field-of-view":s.minFieldOfView,bounds:s.bounds,"interpolation-decay":s.interpolationDecay??100,"skybox-image":s.skyboxImage,"environment-image":s.environmentImage,exposure:s.exposure,"shadow-intensity":s.shadowIntensity??0,"shadow-softness":s.shadowSoftness??0,"animation-name":s.animationName,"animation-crossfade-duration":s.animationCrossfadeDuration,"variant-name":s.variantName,orientation:s.orientation,scale:s.scale},i):(console.error("<ModelViewer/> requires 'data.sources' prop to be an array, with an object that has a property 'url' on it. Rendering 'null'"),null)}function vr({data:e,mediaOptions:t,...n}){switch(e.__typename){case"MediaImage":return e.image?React.createElement(Mt,{...n,...t==null?void 0:t.image,data:e.image}):(console.warn("<MediaFile/>: 'data.image' does not exist for __typename of 'MediaImage'; rendering 'null' by default."),null);case"Video":return React.createElement($t,{...n,...t==null?void 0:t.video,data:e});case"ExternalVideo":return React.createElement(Vt,{...n,...t==null?void 0:t.externalVideo,data:e});case"Model3d":return React.createElement(Bt,{...n,...t==null?void 0:t.modelViewer,data:e});default:return console.error("<MediaFile /> requires the '__typename' property to exist on the 'data' prop in order to render the matching sub-component for this type of media. Rendering 'null' by default"),null}}function Pr(e){if(!e.type)return console.error("parseMetafield(): The 'type' field is required in order to parse the Metafield. Returning 'parsedValue' of 'null'"),{...e,parsedValue:null};switch(e.type){case"boolean":return{...e,parsedValue:e.value==="true"};case"article_reference":case"collection_reference":case"file_reference":case"page_reference":case"product_reference":case"variant_reference":return{...e,parsedValue:e.reference};case"color":case"multi_line_text_field":case"single_line_text_field":case"url":return{...e,parsedValue:e.value};case"money":{let t=null;try{const n=We(e.value??"");if(n&&typeof n=="object"&&"currency_code"in n){const r=n;t={amount:r.amount,currencyCode:r.currency_code}}else n&&typeof n=="object"&&"currencyCode"in n,t=n}catch{console.error("parseMetafield(): attempted to JSON.parse the 'metafield.value' property, but failed. Returning 'null' for 'parsedValue'"),t=null}return{...e,parsedValue:t}}case"dimension":case"json":case"rating":case"volume":case"weight":case"rich_text_field":case"list.color":case"list.dimension":case"list.number_integer":case"list.number_decimal":case"list.rating":case"list.single_line_text_field":case"list.url":case"list.volume":case"list.weight":{let t=null;try{t=We(e.value??"")}catch{console.error("parseMetafield(): attempted to JSON.parse the 'metafield.value' property, but failed. Returning 'null' for 'parsedValue'"),t=null}return{...e,parsedValue:t}}case"date":case"date_time":return{...e,parsedValue:new Date(e.value??"")};case"list.date":case"list.date_time":{const t=We((e==null?void 0:e.value)??"");return{...e,parsedValue:t.map(n=>new Date(n))}}case"number_decimal":case"number_integer":return{...e,parsedValue:Number(e.value)};case"list.article_reference":case"list.collection_reference":case"list.file_reference":case"list.page_reference":case"list.product_reference":case"list.variant_reference":return{...e,parsedValue:Z(e.references??void 0)};default:{const t=`parseMetafield(): the 'metafield.type' you passed in is not supported. Your type: "${e.type}". If you believe this is an error, please open an issue on GitHub.`;return console.error(`${t} Returning 'parsedValue' of 'null'`),{...e,parsedValue:null}}}}function We(e){return String(e).includes("__proto__")?JSON.parse(e,(t,n)=>{if(t!=="__proto__")return n}):JSON.parse(e)}function Or(e){var h,f,y,E,c,S;const{priceType:t="regular",variantId:n,valueType:r="min",data:a,...i}=e;if(a==null)throw new Error("<ProductPrice/> requires a product as the 'data' prop");let o,s;const u=n?Z((a==null?void 0:a.variants)??{}).find(T=>(T==null?void 0:T.id)===n)??null:null,d=r==="max"?"maxVariantPrice":"minVariantPrice";if(t==="compareAt"){n&&u?o=u.compareAtPrice:o=(h=a==null?void 0:a.compareAtPriceRange)==null?void 0:h[d];let T;n&&u?T=parseFloat(((f=u.price)==null?void 0:f.amount)??"0"):T=parseFloat(((E=(y=a==null?void 0:a.priceRange)==null?void 0:y[d])==null?void 0:E.amount)??"0");const A=parseFloat((o==null?void 0:o.amount)??"0");if(T>=A)return null}else n&&u?(o=u.price,r==="unit"&&(o=u.unitPrice,s=u.unitPriceMeasurement)):r==="max"?o=(c=a.priceRange)==null?void 0:c.maxVariantPrice:o=(S=a.priceRange)==null?void 0:S.minVariantPrice;return o?s?React.createElement(Pe,{...i,data:o,measurement:s}):React.createElement(Pe,{...i,data:o}):null}const Rr={root:Vr,heading:Dr,paragraph:kr,text:Ur,link:Nr,list:Mr,"list-item":Fr};function Vr({node:e}){return React.createElement("div",null,e.children)}function Dr({node:e}){return l.createElement(`h${e.level??"1"}`,null,e.children)}function kr({node:e}){return React.createElement("p",null,e.children)}function Ur({node:e}){return e.bold&&e.italic?React.createElement("em",null,React.createElement("strong",null,e.value)):e.bold?React.createElement("strong",null,e.value):e.italic?React.createElement("em",null,e.value):e.value}function Nr({node:e}){return React.createElement("a",{href:e.url,title:e.title,target:e.target},e.children)}function Mr({node:e}){const t=e.listType==="unordered"?"ul":"ol";return React.createElement(t,null,e.children)}function Fr({node:e}){return React.createElement("li",null,e.children)}function Lr({as:e,data:t,plain:n,components:r,...a}){try{const i=e??"div",o=l.useMemo(()=>JSON.parse(t),[t]);return React.createElement(i,{...a},n?pe(o):Yt(r,o))}catch(i){throw new Error("[h2:error:RichText] Parsing error. Make sure to pass a JSON string of rich text metafield",{cause:i})}}function Yt(e={},t,n=0){let r;"children"in t&&(r=t.children.map((i,o)=>Yt(e,i,o)));const a=e[t.type==="list-item"?"listItem":t.type]??Rr[t.type];switch(t.type){case"root":return l.createElement(a,{key:n,node:{type:"root",children:r}});case"heading":return l.createElement(a,{key:n,node:{type:"heading",level:t.level,children:r}});case"paragraph":return l.createElement(a,{key:n,node:{type:"paragraph",children:r}});case"text":{const i=(t.value??"").split(`
275
- `).flatMap((o,s)=>{const u=`${n}-${o}-${s}`,d=l.createElement(a,{key:u,node:{type:"text",italic:t.italic,bold:t.bold,value:o}});return s===0?d:[l.createElement("br",{key:`${u}-br`}),d]});return i.length>1?l.createElement(l.Fragment,{key:n},i):i[0]}case"link":return l.createElement(a,{key:n,node:{type:"link",url:t.url,title:t.title,target:t.target,children:r}});case"list":return l.createElement(a,{key:n,node:{type:"list",listType:t.listType,children:r}});case"list-item":return l.createElement(a,{key:n,node:{type:"list-item",children:r}})}}function pe(e,t=[]){switch(e.type){case"root":e.children.forEach(n=>pe(n,t));break;case"heading":case"paragraph":e.children.forEach(n=>pe(n,t)),t.push(" ");break;case"text":t.push(e.value||"");break;case"link":e.children.forEach(n=>pe(n,t));break;case"list":e.children.forEach(n=>{n.children&&n.children.forEach(r=>pe(r,t)),t.push(" ")});break;default:throw new Error(`Unknown node encountered ${e.type}`)}return t.join("").trim()}const jr="https://cdn.shopify.com/shopifycloud/shop-js/v1.0/client.js";function qr(e){return e==="headless"||e==="hydrogen"}function xr({channel:e,variantIds:t,className:n,variantIdsAndQuantities:r,width:a,storeDomain:i}){const o=le(),s=i||(o==null?void 0:o.storeDomain),u=Ye(jr);let d=[],h;if(!s||s===ot.storeDomain)throw new Error(Hr);if(t&&r)throw new Error(Br);if(!t&&!r)throw new Error(Wt);if(e)if(qr(e))h=e;else throw new Error(Yr);if(t)d=t.reduce((y,E)=>{const c=j(E).id;return c&&y.push(c),y},[]);else if(r)d=r.reduce((y,E)=>{const c=j(E==null?void 0:E.id).id;return c&&y.push(`${c}:${(E==null?void 0:E.quantity)??1}`),y},[]);else throw new Error(Wt);if(d.length===0)throw new Error($r);const f=a?{"--shop-pay-button-width":a}:void 0;return React.createElement("div",{className:n,style:f},u==="done"&&React.createElement("shop-pay-button",{...h?{channel:h}:{},"store-url":s,variants:d.join(",")}))}const Hr='You must pass a "storeDomain" prop to the "ShopPayButton" component, or wrap it in a "ShopifyProvider" component.',$r='You must pass in "variantIds" in the form of ["gid://shopify/ProductVariant/1"]',Wt='You must pass in either "variantIds" or "variantIdsAndQuantities" to ShopPayButton',Br="You must provide either a variantIds or variantIdsAndQuantities prop, but not both in the ShopPayButton component",Yr='Invalid channel attribution value. Must be either "headless" or "hydrogen"';function Wr(e){return l.useEffect(()=>{const t=new URLSearchParams(he(e||[])),n=new URLSearchParams(window.location.search),r=new URLSearchParams({...Object.fromEntries(n),...Object.fromEntries(t)});r.size>0&&window.history.replaceState({},"",`${window.location.pathname}?${r.toString()}`)},[JSON.stringify(e)]),null}function Gr(e,t,n={}){let r=e+"="+encodeURIComponent(t);return n.expires&&(r+="; Expires="+new Date(n.expires).toUTCString()),n.maxage!=null&&n.maxage>=0&&(r+="; Max-Age="+(n.maxage|0)),n.domain&&(r+="; Domain="+n.domain),n.path&&(r+="; Path="+n.path),n.samesite&&(r+="; SameSite="+n.samesite),(n.secure||n.samesite==="None")&&(r+="; Secure"),n.httponly&&(r+="; HttpOnly"),r}const Kr=3600*24*360*1,Qr=1800;function Jr(e){const{hasUserConsent:t,domain:n="",checkoutDomain:r="",storefrontAccessToken:a,fetchTrackingValues:i,ignoreDeprecatedCookies:o=!1}=e||{},s=Xr({storefrontAccessToken:a,fetchTrackingValues:i,checkoutDomain:r});return l.useEffect(()=>{if(o||!s)return;let u=n||window.location.host;if(r){const h=r.split(".").reverse(),f=u.split(".").reverse(),y=[];h.forEach((E,c)=>{E===f[c]&&y.push(E)}),u=y.reverse().join(".")}/^localhost/.test(u)&&(u="");const d=u?/^\./.test(u)?u:`.${u}`:"";if(t){const h=ne();if((h.uniqueToken||h.visitToken||"").startsWith("00000000-"))return;Oe(be,h.uniqueToken||ve(),Kr,d),Oe(Ae,h.visitToken||ve(),Qr,d)}else Oe(be,"",0,d),Oe(Ae,"",0,d)},[s,t,n,r,o]),s}function Oe(e,t,n,r){document.cookie=Gr(e,t,{maxage:n,domain:r,samesite:"Lax",path:"/"})}async function Gt(e,t=""){const{uniqueToken:n,visitToken:r}=ne(),a=await fetch(`${t.replace(/\/+$/,"")}/api/unstable/graphql.json`,{method:"POST",headers:{"Content-Type":"application/json",...e&&{"X-Shopify-Storefront-Access-Token":e},...r||n?{[ke]:r,[Ue]:n}:void 0},body:JSON.stringify({query:"query ensureCookies { consentManagement { cookies(visitorConsent:{}) { cookieDomain } } }"})});if(!a.ok)throw new Error(`Failed to fetch consent from browser: ${a.status} ${a.statusText}`);await a.json(),ne()}function Xr({checkoutDomain:e,storefrontAccessToken:t,fetchTrackingValues:n=!1}){const[r,a]=l.useState(!n),i=l.useRef(!1);return l.useEffect(()=>{if(!n){a(!0);return}i.current||(i.current=!0,Gt(t).catch(o=>e?Gt(t,e):Promise.reject(o)).catch(o=>{console.warn("[h2:warn:useShopifyCookies] Failed to fetch tracking values from browser: "+(o instanceof Error?o.message:String(o)))}).finally(()=>{a(!0)}))},[e,n,t]),r}p.AddToCartButton=Mn,p.AnalyticsEventName=re,p.AnalyticsPageType=Ie,p.BuyNowButton=ir,p.CartCheckoutButton=or,p.CartCost=cr,p.CartLineProvider=ur,p.CartLineQuantity=lr,p.CartLineQuantityAdjustButton=dr,p.CartProvider=On,p.ExternalVideo=Vt,p.IMAGE_FRAGMENT=Cr,p.Image=Mt,p.MediaFile=vr,p.ModelViewer=Bt,p.Money=Pe,p.ProductPrice=Or,p.ProductProvider=kn,p.RichText=Lr,p.SHOPIFY_S=Ae,p.SHOPIFY_STOREFRONT_ID_HEADER=ct,p.SHOPIFY_STOREFRONT_S_HEADER=lt,p.SHOPIFY_STOREFRONT_Y_HEADER=ut,p.SHOPIFY_UNIQUE_TOKEN_HEADER=Ue,p.SHOPIFY_VISIT_TOKEN_HEADER=ke,p.SHOPIFY_Y=be,p.ShopPayButton=xr,p.ShopifyProvider=Cn,p.ShopifySalesChannel=_t,p.Video=$t,p.createStorefrontClient=_n,p.customerAccountApiCustomScalars=hr,p.decodeEncodedVariant=Dt,p.flattenConnection=Z,p.getAdjacentAndFirstAvailableVariants=Tr,p.getClientBrowserParameters=tr,p.getProductOptions=Sr,p.getShopifyCookies=jn,p.getTrackingValues=ne,p.isOptionValueCombinationInEncodedVariant=xe,p.mapSelectedProductOptionToObject=he,p.parseGid=j,p.parseMetafield=Pr,p.sendShopifyAnalytics=Zn,p.storefrontApiCustomScalars=fr,p.useCart=oe,p.useCartLine=je,p.useLoadScript=Ye,p.useMoney=Pt,p.useProduct=mt,p.useSelectedOptionInUrlParam=Wr,p.useShop=le,p.useShopifyCookies=Jr,Object.defineProperty(p,Symbol.toStringTag,{value:"Module"})}));
276
- //# sourceMappingURL=hydrogen-react.prod.js.map
260
+ `,cn=t.forwardRef(({alt:e,aspectRatio:n,crop:r=`center`,data:i,decoding:a=`async`,height:o=`auto`,loader:s=Q,loading:c=`lazy`,sizes:l,src:u,srcSetOptions:d={intervals:15,startingWidth:200,incrementSize:200,placeholderWidth:100},width:f=`100%`,...p},m)=>{let h=t.useMemo(()=>{let e=i?.width&&i?.height?i?.width:void 0,t=i?.width&&i?.height?i?.height:void 0;return{width:e,height:t,unitsMatch:!!fn(e,t)}},[i]),g=t.useMemo(()=>{let t=$((f||`100%`).toString()),r=`${t.number}${t.unit}`,a=o==null,s=a?null:$(o.toString()),c=s?`${s.number}${s.unit}`:``;return{width:r,height:a?`auto`:c,src:u||i?.url,alt:i?.altText&&!e?i?.altText:e||``,aspectRatio:n||(h.unitsMatch?[pn(h.width),pn(h.height)].join(`/`):void 0)}},[f,o,u,i,e,n,h,p?.key]),{intervals:_,startingWidth:v,incrementSize:y,placeholderWidth:b}=d,x=t.useMemo(()=>gn(f,_,v,y),[f,_,v,y]);return mn(g.width)?t.createElement(ln,{aspectRatio:n,crop:r,decoding:a,height:o,imageWidths:x,loader:s,loading:c,normalizedProps:g,passthroughProps:p,ref:m,width:f,data:i}):t.createElement(un,{aspectRatio:n,crop:r,decoding:a,imageWidths:x,loader:s,loading:c,normalizedProps:g,passthroughProps:p,placeholderWidth:b,ref:m,sizes:l,data:i})}),ln=t.forwardRef(({aspectRatio:e,crop:n,decoding:r,height:i,imageWidths:a,loader:o=Q,loading:s,normalizedProps:c,passthroughProps:l,width:u,data:d},f)=>{let p=t.useMemo(()=>{let t=pn(u),r=pn(i),s=e||(fn(c.width,c.height)?[t,r].join(`/`):c.aspectRatio?c.aspectRatio:void 0),l=a===void 0?void 0:vn(a,s,n,{width:d?.width??void 0,height:d?.height??void 0}),f=r||(s&&t?t*(_n(s)??1):void 0);return{width:t,aspectRatio:s,height:f,srcSet:hn(c.src,l,o),src:o({src:c.src,width:t,height:f,crop:c.height===`auto`?void 0:n})}},[e,n,d,i,a,o,c,u]);return t.createElement(`img`,{ref:f,alt:c.alt,decoding:r,height:p.height,loading:s,src:p.src,srcSet:p.srcSet,width:p.width,style:{aspectRatio:p.aspectRatio,...l.style},...l})}),un=t.forwardRef(({crop:e,decoding:n,imageWidths:r,loader:i=Q,loading:a,normalizedProps:o,passthroughProps:s,placeholderWidth:c,sizes:l,data:u},d)=>{let f=t.useMemo(()=>{let t=r===void 0?void 0:vn(r,o.aspectRatio,e,{width:u?.width??void 0,height:u?.height??void 0}),n=o.aspectRatio&&c?c*(_n(o.aspectRatio)??1):void 0;return{placeholderHeight:n,srcSet:hn(o.src,t,i),src:i({src:o.src,width:c,height:n,crop:e})}},[e,u,r,i,o,c]);return t.createElement(`img`,{ref:d,alt:o.alt,decoding:n,height:f.placeholderHeight,loading:a,sizes:l,src:f.src,srcSet:f.srcSet,width:c,...s,style:{width:o.width,aspectRatio:o.aspectRatio,...s.style}})}),dn=`https://placeholder.shopify.com`;function Q({src:e,width:t,height:n,crop:r}){if(!e)return``;let i=new URL(e,dn);return t&&i.searchParams.append(`width`,Math.round(t).toString()),n&&i.searchParams.append(`height`,Math.round(n).toString()),r&&i.searchParams.append(`crop`,r),i.href.replace(dn,``)}function fn(e=`100%`,t=`auto`){return $(e.toString()).unit===$(t.toString()).unit}function $(e){let t=e.replace(/[0-9.]/g,``),n=parseFloat(e.replace(t,``));return{unit:t===``?n===void 0?`auto`:`px`:t,number:n}}function pn(e){if(e===void 0)return;let{unit:t,number:n}=$(e.toString());switch(t){case`em`:return n*16;case`rem`:return n*16;case`px`:return n;case``:return n;default:return}}function mn(e){return typeof e==`number`||/\d(px|em|rem)$/.test(e)}function hn(e,t,n=Q){return e?t?.length===0||!t?e:t.map((r,i)=>`${n({src:e,width:r.width,height:r.height,crop:r.crop})} ${t.length===3?`${i+1}x`:`${r.width??0}w`}`).join(`, `):``}function gn(e=`100%`,t,n,r){let i=Array.from({length:t},(e,t)=>t*r+n),a=Array.from({length:3},(t,n)=>(n+1)*(pn(e)??0));return mn(e)?a:i}function _n(e){if(!e)return;let[t,n]=e.split(`/`);return 1/(Number(t)/Number(n))}function vn(e,t,n=`center`,r){if(e)return e.map(e=>({width:e,height:t?e*(_n(t)??1):void 0,crop:n})).filter(({width:e,height:t})=>!(r?.width&&e>r.width||r?.height&&t&&t>r.height))}var yn={};function bn(e,t){let n=yn[e];if(n)return n;let r=new Promise((n,r)=>{let i=document.createElement(`script`);t?.module?i.type=`module`:i.type=`text/javascript`,i.src=e,i.onload=()=>{n(!0)},i.onerror=()=>{r(!1)},t?.in===`head`?document.head.appendChild(i):document.body.appendChild(i);let a=t?.attributes;a&&Object.keys(a).forEach(e=>{i.setAttribute(e,a[e])})});return yn[e]=r,r}function xn(e,n){let[r,i]=(0,t.useState)(`loading`);return(0,t.useEffect)(()=>{bn(e,n).then(()=>i(`done`)).catch(()=>i(`error`))},[e]),r}var Sn=(0,t.forwardRef)((e,t)=>{let{data:n,previewImageOptions:r,id:i=n.id,playsInline:a=!0,controls:o=!0,sourceProps:s={},...c}=e,l=Q({src:n.previewImage?.url??``,...r});if(!n.sources)throw Error(`<Video/> requires a 'data.sources' array`);return React.createElement(`video`,{...c,id:i,playsInline:a,controls:o,poster:l,ref:t},n.sources.map(e=>{if(!(e?.url&&e?.mimeType))throw Error(`<Video/> needs 'source.url' and 'source.mimeType'`);return React.createElement(`source`,{...s,key:e.url,src:e.url,type:e.mimeType})}))});function Cn(e){let[n,r]=(0,t.useState)(void 0),i=(0,t.useCallback)(e=>{r(e)},[]),{data:a,children:o,className:s,...c}=e,l=xn(`https://unpkg.com/@google/model-viewer@v1.12.1/dist/model-viewer.min.js`,{module:!0});return(0,t.useEffect)(()=>{let e={error:c.onError,load:c.onLoad,preload:c.onPreload,"model-visibility":c.onModelVisibility,progress:c.onProgress,"ar-status":c.onArStatus,"ar-tracking":c.onArTracking,"quick-look-button-tapped":c.onQuickLookButtonTapped,"camera-change":c.onCameraChange,"environment-change":c.onEnvironmentChange,play:c.onPlay,pause:c.onPause,"scene-graph-ready":c.onSceneGraphReady};if(n)return Object.entries(e).forEach(([e,t])=>{t&&n.addEventListener(e,t)}),()=>{n!=null&&Object.entries(e).forEach(([e,t])=>{t&&n.removeEventListener(e,t)})}},[n,c.onArStatus,c.onArTracking,c.onCameraChange,c.onEnvironmentChange,c.onError,c.onLoad,c.onModelVisibility,c.onPause,c.onPlay,c.onPreload,c.onProgress,c.onQuickLookButtonTapped,c.onSceneGraphReady]),l===`done`?a.sources?.[0]?.url?React.createElement(`model-viewer`,{ref:i,...c,class:s,id:c.id??a.id,src:a.sources[0].url,alt:a.alt??null,"camera-controls":c.cameraControls??!0,poster:(c.poster||a.previewImage?.url)??null,autoplay:c.autoplay??!0,loading:c.loading,reveal:c.reveal,ar:c.ar,"ar-modes":c.arModes,"ar-scale":c.arScale,"ar-placement":c.arPlacement,"ios-src":c.iosSrc,"touch-action":c.touchAction,"disable-zoom":c.disableZoom,"orbit-sensitivity":c.orbitSensitivity,"auto-rotate":c.autoRotate,"auto-rotate-delay":c.autoRotateDelay,"rotation-per-second":c.rotationPerSecond,"interaction-policy":c.interactionPolicy,"interaction-prompt":c.interactionPrompt,"interaction-prompt-style":c.interactionPromptStyle,"interaction-prompt-threshold":c.interactionPromptThreshold,"camera-orbit":c.cameraOrbit,"camera-target":c.cameraTarget,"field-of-view":c.fieldOfView,"max-camera-orbit":c.maxCameraOrbit,"min-camera-orbit":c.minCameraOrbit,"max-field-of-view":c.maxFieldOfView,"min-field-of-view":c.minFieldOfView,bounds:c.bounds,"interpolation-decay":c.interpolationDecay??100,"skybox-image":c.skyboxImage,"environment-image":c.environmentImage,exposure:c.exposure,"shadow-intensity":c.shadowIntensity??0,"shadow-softness":c.shadowSoftness??0,"animation-name":c.animationName,"animation-crossfade-duration":c.animationCrossfadeDuration,"variant-name":c.variantName,orientation:c.orientation,scale:c.scale},o):(console.error(`<ModelViewer/> requires 'data.sources' prop to be an array, with an object that has a property 'url' on it. Rendering 'null'`),null):null}function wn({data:e,mediaOptions:t,...n}){switch(e.__typename){case`MediaImage`:return e.image?React.createElement(cn,{...n,...t?.image,data:e.image}):(console.warn(`<MediaFile/>: 'data.image' does not exist for __typename of 'MediaImage'; rendering 'null' by default.`),null);case`Video`:return React.createElement(Sn,{...n,...t?.video,data:e});case`ExternalVideo`:return React.createElement(Ut,{...n,...t?.externalVideo,data:e});case`Model3d`:return React.createElement(Cn,{...n,...t?.modelViewer,data:e});default:return console.error(`<MediaFile /> requires the '__typename' property to exist on the 'data' prop in order to render the matching sub-component for this type of media. Rendering 'null' by default`),null}}function Tn(e){if(!e.type)return console.error(`parseMetafield(): The 'type' field is required in order to parse the Metafield. Returning 'parsedValue' of 'null'`),{...e,parsedValue:null};switch(e.type){case`boolean`:return{...e,parsedValue:e.value===`true`};case`article_reference`:case`collection_reference`:case`file_reference`:case`page_reference`:case`product_reference`:case`variant_reference`:return{...e,parsedValue:e.reference};case`color`:case`multi_line_text_field`:case`single_line_text_field`:case`url`:return{...e,parsedValue:e.value};case`money`:{let t=null;try{let n=En(e.value??``);if(n&&typeof n==`object`&&`currency_code`in n){let e=n;t={amount:e.amount,currencyCode:e.currency_code}}else t=(n&&typeof n==`object`&&`currencyCode`in n,n)}catch{console.error(`parseMetafield(): attempted to JSON.parse the 'metafield.value' property, but failed. Returning 'null' for 'parsedValue'`),t=null}return{...e,parsedValue:t}}case`dimension`:case`json`:case`rating`:case`volume`:case`weight`:case`rich_text_field`:case`list.color`:case`list.dimension`:case`list.number_integer`:case`list.number_decimal`:case`list.rating`:case`list.single_line_text_field`:case`list.url`:case`list.volume`:case`list.weight`:{let t=null;try{t=En(e.value??``)}catch{console.error(`parseMetafield(): attempted to JSON.parse the 'metafield.value' property, but failed. Returning 'null' for 'parsedValue'`),t=null}return{...e,parsedValue:t}}case`date`:case`date_time`:return{...e,parsedValue:new Date(e.value??``)};case`list.date`:case`list.date_time`:{let t=En(e?.value??``);return{...e,parsedValue:t.map(e=>new Date(e))}}case`number_decimal`:case`number_integer`:return{...e,parsedValue:Number(e.value)};case`list.article_reference`:case`list.collection_reference`:case`list.file_reference`:case`list.page_reference`:case`list.product_reference`:case`list.variant_reference`:return{...e,parsedValue:T(e.references??void 0)};default:{let t=`parseMetafield(): the 'metafield.type' you passed in is not supported. Your type: "${e.type}". If you believe this is an error, please open an issue on GitHub.`;return console.error(`${t} Returning 'parsedValue' of 'null'`),{...e,parsedValue:null}}}}function En(e){return String(e).includes(`__proto__`)?JSON.parse(e,(e,t)=>{if(e!==`__proto__`)return t}):JSON.parse(e)}function Dn(e){let{priceType:t=`regular`,variantId:n,valueType:r=`min`,data:i,...a}=e;if(i==null)throw Error(`<ProductPrice/> requires a product as the 'data' prop`);let o,s,c=n?T(i?.variants??{}).find(e=>e?.id===n)??null:null,l=r===`max`?`maxVariantPrice`:`minVariantPrice`;if(t===`compareAt`){o=n&&c?c.compareAtPrice:i?.compareAtPriceRange?.[l];let e;e=parseFloat(n&&c?c.price?.amount??`0`:i?.priceRange?.[l]?.amount??`0`);let t=parseFloat(o?.amount??`0`);if(e>=t)return null}else n&&c?(o=c.price,r===`unit`&&(o=c.unitPrice,s=c.unitPriceMeasurement)):o=r===`max`?i.priceRange?.maxVariantPrice:i.priceRange?.minVariantPrice;return o?s?React.createElement(Nt,{...a,data:o,measurement:s}):React.createElement(Nt,{...a,data:o}):null}var On={root:kn,heading:An,paragraph:jn,text:Mn,link:Nn,list:Pn,"list-item":Fn};function kn({node:e}){return React.createElement(`div`,null,e.children)}function An({node:e}){return(0,t.createElement)(`h${e.level??`1`}`,null,e.children)}function jn({node:e}){return React.createElement(`p`,null,e.children)}function Mn({node:e}){return e.bold&&e.italic?React.createElement(`em`,null,React.createElement(`strong`,null,e.value)):e.bold?React.createElement(`strong`,null,e.value):e.italic?React.createElement(`em`,null,e.value):e.value}function Nn({node:e}){return React.createElement(`a`,{href:e.url,title:e.title,target:e.target},e.children)}function Pn({node:e}){let t=e.listType===`unordered`?`ul`:`ol`;return React.createElement(t,null,e.children)}function Fn({node:e}){return React.createElement(`li`,null,e.children)}function In({as:e,data:n,plain:r,components:i,...a}){try{let o=e??`div`,s=(0,t.useMemo)(()=>JSON.parse(n),[n]);return React.createElement(o,a,r?Rn(s):Ln(i,s))}catch(e){throw Error(`[h2:error:RichText] Parsing error. Make sure to pass a JSON string of rich text metafield`,{cause:e})}}function Ln(e={},n,r=0){let i;`children`in n&&(i=n.children.map((t,n)=>Ln(e,t,n)));let a=e[n.type===`list-item`?`listItem`:n.type]??On[n.type];switch(n.type){case`root`:return(0,t.createElement)(a,{key:r,node:{type:`root`,children:i}});case`heading`:return(0,t.createElement)(a,{key:r,node:{type:`heading`,level:n.level,children:i}});case`paragraph`:return(0,t.createElement)(a,{key:r,node:{type:`paragraph`,children:i}});case`text`:{let e=(n.value??``).split(`
261
+ `).flatMap((e,i)=>{let o=`${r}-${e}-${i}`,s=(0,t.createElement)(a,{key:o,node:{type:`text`,italic:n.italic,bold:n.bold,value:e}});return i===0?s:[(0,t.createElement)(`br`,{key:`${o}-br`}),s]});return e.length>1?(0,t.createElement)(t.Fragment,{key:r},e):e[0]}case`link`:return(0,t.createElement)(a,{key:r,node:{type:`link`,url:n.url,title:n.title,target:n.target,children:i}});case`list`:return(0,t.createElement)(a,{key:r,node:{type:`list`,listType:n.listType,children:i}});case`list-item`:return(0,t.createElement)(a,{key:r,node:{type:`list-item`,children:i}})}}function Rn(e,t=[]){switch(e.type){case`root`:e.children.forEach(e=>Rn(e,t));break;case`heading`:case`paragraph`:e.children.forEach(e=>Rn(e,t)),t.push(` `);break;case`text`:t.push(e.value||``);break;case`link`:e.children.forEach(e=>Rn(e,t));break;case`list`:e.children.forEach(e=>{e.children&&e.children.forEach(e=>Rn(e,t)),t.push(` `)});break;default:throw Error(`Unknown node encountered ${e.type}`)}return t.join(``).trim()}var zn=`https://cdn.shopify.com/shopifycloud/shop-js/v1.0/client.js`;function Bn(e){return e===`headless`||e===`hydrogen`}function Vn({channel:e,variantIds:t,className:n,variantIdsAndQuantities:r,width:i,storeDomain:a}){let o=F(),s=a||o?.storeDomain,c=xn(zn),l=[],u;if(!s||s===fe.storeDomain)throw Error(Hn);if(t&&r)throw Error(Gn);if(!t&&!r)throw Error(Wn);if(e)if(Bn(e))u=e;else throw Error(Kn);if(t)l=t.reduce((e,t)=>{let n=U(t).id;return n&&e.push(n),e},[]);else if(r)l=r.reduce((e,t)=>{let n=U(t?.id).id;return n&&e.push(`${n}:${t?.quantity??1}`),e},[]);else throw Error(Wn);if(l.length===0)throw Error(Un);let d=i?{"--shop-pay-button-width":i}:void 0;return React.createElement(`div`,{className:n,style:d},c===`done`&&React.createElement(`shop-pay-button`,{...u?{channel:u}:{},"store-url":s,variants:l.join(`,`)}))}var Hn=`You must pass a "storeDomain" prop to the "ShopPayButton" component, or wrap it in a "ShopifyProvider" component.`,Un=`You must pass in "variantIds" in the form of ["gid://shopify/ProductVariant/1"]`,Wn=`You must pass in either "variantIds" or "variantIdsAndQuantities" to ShopPayButton`,Gn=`You must provide either a variantIds or variantIdsAndQuantities prop, but not both in the ShopPayButton component`,Kn=`Invalid channel attribution value. Must be either "headless" or "hydrogen"`;function qn(e){return(0,t.useEffect)(()=>{let t=new URLSearchParams(X(e||[])),n=new URLSearchParams(window.location.search),r=new URLSearchParams({...Object.fromEntries(n),...Object.fromEntries(t)});r.size>0&&window.history.replaceState({},``,`${window.location.pathname}?${r.toString()}`)},[JSON.stringify(e)]),null}function Jn(e,t,n={}){let r=e+`=`+encodeURIComponent(t);return n.expires&&(r+=`; Expires=`+new Date(n.expires).toUTCString()),n.maxage!=null&&n.maxage>=0&&(r+=`; Max-Age=`+(n.maxage|0)),n.domain&&(r+=`; Domain=`+n.domain),n.path&&(r+=`; Path=`+n.path),n.samesite&&(r+=`; SameSite=`+n.samesite),(n.secure||n.samesite===`None`)&&(r+=`; Secure`),n.httponly&&(r+=`; HttpOnly`),r}var Yn=3600*24*360*1,Xn=1800;function Zn(e){let{hasUserConsent:n,domain:r=``,checkoutDomain:i=``,storefrontAccessToken:a,fetchTrackingValues:o,ignoreDeprecatedCookies:s=!1}=e||{},c=er({storefrontAccessToken:a,fetchTrackingValues:o,checkoutDomain:i});return(0,t.useEffect)(()=>{if(s||!c)return;let e=r||window.location.host;if(i){let t=i.split(`.`).reverse(),n=e.split(`.`).reverse(),r=[];t.forEach((e,t)=>{e===n[t]&&r.push(e)}),e=r.reverse().join(`.`)}/^localhost/.test(e)&&(e=``);let t=e?/^\./.test(e)?e:`.${e}`:``;if(n){let e=I();if((e.uniqueToken||e.visitToken||``).startsWith(`00000000-`))return;Qn(be,e.uniqueToken||tt(),Yn,t),Qn(xe,e.visitToken||tt(),Xn,t)}else Qn(be,``,0,t),Qn(xe,``,0,t)},[c,n,r,i,s]),c}function Qn(e,t,n,r){document.cookie=Jn(e,t,{maxage:n,domain:r,samesite:`Lax`,path:`/`})}async function $n(e,t=``){let{uniqueToken:n,visitToken:r}=I(),i=await fetch(`${t.replace(/\/+$/,``)}/api/unstable/graphql.json`,{method:`POST`,headers:{"Content-Type":`application/json`,...e&&{"X-Shopify-Storefront-Access-Token":e},...r||n?{[Se]:r,[Ce]:n}:void 0},body:JSON.stringify({query:`query ensureCookies { consentManagement { cookies(visitorConsent:{}) { cookieDomain } } }`})});if(!i.ok)throw Error(`Failed to fetch consent from browser: ${i.status} ${i.statusText}`);await i.json(),I()}function er({checkoutDomain:e,storefrontAccessToken:n,fetchTrackingValues:r=!1}){let[i,a]=(0,t.useState)(!r),o=(0,t.useRef)(!1);return(0,t.useEffect)(()=>{if(!r){a(!0);return}o.current||(o.current=!0,$n(n).catch(t=>e?$n(n,e):Promise.reject(t)).catch(e=>{console.warn(`[h2:warn:useShopifyCookies] Failed to fetch tracking values from browser: `+(e instanceof Error?e.message:String(e)))}).finally(()=>{a(!0)}))},[e,r,n]),i}e.AddToCartButton=Ye,e.AnalyticsEventName=V,e.AnalyticsPageType=Xe,e.BuyNowButton=kt,e.CartCheckoutButton=At,e.CartCost=Ft,e.CartLineProvider=Rt,e.CartLineQuantity=zt,e.CartLineQuantityAdjustButton=Bt,e.CartProvider=Fe,e.ExternalVideo=Ut,e.IMAGE_FRAGMENT=sn,e.Image=cn,e.MediaFile=wn,e.ModelViewer=Cn,e.Money=Nt,e.ProductPrice=Dn,e.ProductProvider=Ve,e.RichText=In,e.SHOPIFY_S=xe,e.SHOPIFY_STOREFRONT_ID_HEADER=_e,e.SHOPIFY_STOREFRONT_S_HEADER=ye,e.SHOPIFY_STOREFRONT_Y_HEADER=ve,e.SHOPIFY_UNIQUE_TOKEN_HEADER=Ce,e.SHOPIFY_VISIT_TOKEN_HEADER=Se,e.SHOPIFY_Y=be,e.ShopPayButton=Vn,e.ShopifyProvider=he,e.ShopifySalesChannel=Ze,e.Video=Sn,e.createStorefrontClient=se,e.customerAccountApiCustomScalars=Ht,e.decodeEncodedVariant=Kt,e.flattenConnection=T,e.getAdjacentAndFirstAvailableVariants=an,e.getClientBrowserParameters=Tt,e.getProductOptions=on,e.getShopifyCookies=rt,e.getTrackingValues=I,e.isOptionValueCombinationInEncodedVariant=Gt,e.mapSelectedProductOptionToObject=X,e.parseGid=U,e.parseMetafield=Tn,e.sendShopifyAnalytics=xt,e.storefrontApiCustomScalars=Vt,e.useCart=B,e.useCartLine=Lt,e.useLoadScript=xn,e.useMoney=jt,e.useProduct=He,e.useSelectedOptionInUrlParam=qn,e.useShop=F,e.useShopifyCookies=Zn});
262
+ //# sourceMappingURL=hydrogen-react.prod.js.map