@shopify/hydrogen-react 2025.1.2 → 2025.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (480) hide show
  1. package/dist/browser-dev/AddToCartButton.mjs.map +1 -1
  2. package/dist/browser-dev/BaseButton.mjs.map +1 -1
  3. package/dist/browser-dev/BuyNowButton.mjs.map +1 -1
  4. package/dist/browser-dev/CartCheckoutButton.mjs.map +1 -1
  5. package/dist/browser-dev/CartCost.mjs.map +1 -1
  6. package/dist/browser-dev/CartLineProvider.mjs.map +1 -1
  7. package/dist/browser-dev/CartLineQuantity.mjs.map +1 -1
  8. package/dist/browser-dev/CartLineQuantityAdjustButton.mjs.map +1 -1
  9. package/dist/browser-dev/CartProvider.mjs +4 -7
  10. package/dist/browser-dev/CartProvider.mjs.map +1 -1
  11. package/dist/browser-dev/ExternalVideo.mjs.map +1 -1
  12. package/dist/browser-dev/Image.mjs +2 -4
  13. package/dist/browser-dev/Image.mjs.map +1 -1
  14. package/dist/browser-dev/MediaFile.mjs.map +1 -1
  15. package/dist/browser-dev/ModelViewer.mjs.map +1 -1
  16. package/dist/browser-dev/Money.mjs.map +1 -1
  17. package/dist/browser-dev/ProductPrice.mjs.map +1 -1
  18. package/dist/browser-dev/ProductProvider.mjs +15 -12
  19. package/dist/browser-dev/ProductProvider.mjs.map +1 -1
  20. package/dist/browser-dev/RichText.components.mjs +2 -4
  21. package/dist/browser-dev/RichText.components.mjs.map +1 -1
  22. package/dist/browser-dev/RichText.mjs.map +1 -1
  23. package/dist/browser-dev/ShopPayButton.mjs.map +1 -1
  24. package/dist/browser-dev/ShopifyProvider.mjs +19 -2
  25. package/dist/browser-dev/ShopifyProvider.mjs.map +1 -1
  26. package/dist/browser-dev/Video.mjs.map +1 -1
  27. package/dist/browser-dev/_virtual/with-selector.mjs +3 -2
  28. package/dist/browser-dev/_virtual/with-selector.mjs.map +1 -1
  29. package/dist/browser-dev/_virtual/with-selector2.mjs +5 -0
  30. package/dist/browser-dev/_virtual/with-selector2.mjs.map +1 -0
  31. package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
  32. package/dist/browser-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
  33. package/dist/browser-dev/analytics-utils.mjs.map +1 -1
  34. package/dist/browser-dev/analytics.mjs +6 -9
  35. package/dist/browser-dev/analytics.mjs.map +1 -1
  36. package/dist/browser-dev/cart-hooks.mjs +25 -7
  37. package/dist/browser-dev/cart-hooks.mjs.map +1 -1
  38. package/dist/browser-dev/cookies-utils.mjs +5 -5
  39. package/dist/browser-dev/cookies-utils.mjs.map +1 -1
  40. package/dist/browser-dev/flatten-connection.mjs.map +1 -1
  41. package/dist/browser-dev/getProductOptions.mjs +2 -4
  42. package/dist/browser-dev/getProductOptions.mjs.map +1 -1
  43. package/dist/browser-dev/index.mjs +4 -0
  44. package/dist/browser-dev/index.mjs.map +1 -1
  45. package/dist/browser-dev/load-script.mjs.map +1 -1
  46. package/dist/browser-dev/node_modules/@xstate/fsm/es/index.mjs +10 -18
  47. package/dist/browser-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  48. package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs +5 -9
  49. package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  50. package/dist/browser-dev/node_modules/@xstate/react/es/useConstant.mjs.map +1 -1
  51. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs +1 -2
  52. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  53. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs +5 -10
  54. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  55. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs +1 -2
  56. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  57. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs +1 -2
  58. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  59. package/dist/browser-dev/node_modules/use-sync-external-store/shim/index.mjs +1 -2
  60. package/dist/browser-dev/node_modules/use-sync-external-store/shim/index.mjs.map +1 -1
  61. package/dist/browser-dev/node_modules/use-sync-external-store/shim/with-selector.mjs +12 -7
  62. package/dist/browser-dev/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -1
  63. package/dist/browser-dev/optionValueDecoder.mjs +1 -2
  64. package/dist/browser-dev/optionValueDecoder.mjs.map +1 -1
  65. package/dist/browser-dev/packages/hydrogen-react/package.json.mjs +1 -1
  66. package/dist/browser-dev/parse-metafield.mjs +2 -2
  67. package/dist/browser-dev/parse-metafield.mjs.map +1 -1
  68. package/dist/browser-dev/storefront-client.mjs +1 -2
  69. package/dist/browser-dev/storefront-client.mjs.map +1 -1
  70. package/dist/browser-dev/tracking-utils.mjs +88 -0
  71. package/dist/browser-dev/tracking-utils.mjs.map +1 -0
  72. package/dist/browser-dev/useCartAPIStateMachine.mjs +6 -12
  73. package/dist/browser-dev/useCartAPIStateMachine.mjs.map +1 -1
  74. package/dist/browser-dev/useCartActions.mjs.map +1 -1
  75. package/dist/browser-dev/useMoney.mjs.map +1 -1
  76. package/dist/browser-dev/useSelectedOptionInUrlParam.mjs.map +1 -1
  77. package/dist/browser-dev/useShopifyCookies.mjs +97 -11
  78. package/dist/browser-dev/useShopifyCookies.mjs.map +1 -1
  79. package/dist/browser-prod/AddToCartButton.mjs.map +1 -1
  80. package/dist/browser-prod/BaseButton.mjs.map +1 -1
  81. package/dist/browser-prod/BuyNowButton.mjs.map +1 -1
  82. package/dist/browser-prod/CartCheckoutButton.mjs.map +1 -1
  83. package/dist/browser-prod/CartCost.mjs.map +1 -1
  84. package/dist/browser-prod/CartLineProvider.mjs.map +1 -1
  85. package/dist/browser-prod/CartLineQuantity.mjs.map +1 -1
  86. package/dist/browser-prod/CartLineQuantityAdjustButton.mjs.map +1 -1
  87. package/dist/browser-prod/CartProvider.mjs +4 -7
  88. package/dist/browser-prod/CartProvider.mjs.map +1 -1
  89. package/dist/browser-prod/ExternalVideo.mjs.map +1 -1
  90. package/dist/browser-prod/Image.mjs +2 -4
  91. package/dist/browser-prod/Image.mjs.map +1 -1
  92. package/dist/browser-prod/MediaFile.mjs.map +1 -1
  93. package/dist/browser-prod/ModelViewer.mjs.map +1 -1
  94. package/dist/browser-prod/Money.mjs.map +1 -1
  95. package/dist/browser-prod/ProductPrice.mjs.map +1 -1
  96. package/dist/browser-prod/ProductProvider.mjs +15 -12
  97. package/dist/browser-prod/ProductProvider.mjs.map +1 -1
  98. package/dist/browser-prod/RichText.components.mjs +2 -4
  99. package/dist/browser-prod/RichText.components.mjs.map +1 -1
  100. package/dist/browser-prod/RichText.mjs.map +1 -1
  101. package/dist/browser-prod/ShopPayButton.mjs.map +1 -1
  102. package/dist/browser-prod/ShopifyProvider.mjs +19 -2
  103. package/dist/browser-prod/ShopifyProvider.mjs.map +1 -1
  104. package/dist/browser-prod/Video.mjs.map +1 -1
  105. package/dist/browser-prod/_virtual/with-selector.mjs +3 -2
  106. package/dist/browser-prod/_virtual/with-selector.mjs.map +1 -1
  107. package/dist/browser-prod/_virtual/with-selector2.mjs +5 -0
  108. package/dist/browser-prod/_virtual/with-selector2.mjs.map +1 -0
  109. package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
  110. package/dist/browser-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
  111. package/dist/browser-prod/analytics-utils.mjs.map +1 -1
  112. package/dist/browser-prod/analytics.mjs +7 -11
  113. package/dist/browser-prod/analytics.mjs.map +1 -1
  114. package/dist/browser-prod/cart-hooks.mjs +25 -7
  115. package/dist/browser-prod/cart-hooks.mjs.map +1 -1
  116. package/dist/browser-prod/cookies-utils.mjs +5 -5
  117. package/dist/browser-prod/cookies-utils.mjs.map +1 -1
  118. package/dist/browser-prod/flatten-connection.mjs.map +1 -1
  119. package/dist/browser-prod/getProductOptions.mjs +2 -4
  120. package/dist/browser-prod/getProductOptions.mjs.map +1 -1
  121. package/dist/browser-prod/index.mjs +4 -0
  122. package/dist/browser-prod/index.mjs.map +1 -1
  123. package/dist/browser-prod/load-script.mjs.map +1 -1
  124. package/dist/browser-prod/node_modules/@xstate/fsm/es/index.mjs +10 -18
  125. package/dist/browser-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  126. package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs +5 -9
  127. package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  128. package/dist/browser-prod/node_modules/@xstate/react/es/useConstant.mjs.map +1 -1
  129. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs +1 -2
  130. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  131. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs +5 -10
  132. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  133. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs +1 -2
  134. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  135. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs +1 -2
  136. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  137. package/dist/browser-prod/node_modules/use-sync-external-store/shim/index.mjs +1 -2
  138. package/dist/browser-prod/node_modules/use-sync-external-store/shim/index.mjs.map +1 -1
  139. package/dist/browser-prod/node_modules/use-sync-external-store/shim/with-selector.mjs +12 -7
  140. package/dist/browser-prod/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -1
  141. package/dist/browser-prod/optionValueDecoder.mjs +1 -2
  142. package/dist/browser-prod/optionValueDecoder.mjs.map +1 -1
  143. package/dist/browser-prod/packages/hydrogen-react/package.json.mjs +1 -1
  144. package/dist/browser-prod/parse-metafield.mjs +2 -2
  145. package/dist/browser-prod/parse-metafield.mjs.map +1 -1
  146. package/dist/browser-prod/storefront-client.mjs +1 -2
  147. package/dist/browser-prod/storefront-client.mjs.map +1 -1
  148. package/dist/browser-prod/tracking-utils.mjs +88 -0
  149. package/dist/browser-prod/tracking-utils.mjs.map +1 -0
  150. package/dist/browser-prod/useCartAPIStateMachine.mjs +6 -12
  151. package/dist/browser-prod/useCartAPIStateMachine.mjs.map +1 -1
  152. package/dist/browser-prod/useCartActions.mjs.map +1 -1
  153. package/dist/browser-prod/useMoney.mjs.map +1 -1
  154. package/dist/browser-prod/useSelectedOptionInUrlParam.mjs.map +1 -1
  155. package/dist/browser-prod/useShopifyCookies.mjs +97 -11
  156. package/dist/browser-prod/useShopifyCookies.mjs.map +1 -1
  157. package/dist/node-dev/AddToCartButton.js.map +1 -1
  158. package/dist/node-dev/AddToCartButton.mjs.map +1 -1
  159. package/dist/node-dev/BaseButton.js.map +1 -1
  160. package/dist/node-dev/BaseButton.mjs.map +1 -1
  161. package/dist/node-dev/BuyNowButton.js.map +1 -1
  162. package/dist/node-dev/BuyNowButton.mjs.map +1 -1
  163. package/dist/node-dev/CartCheckoutButton.js.map +1 -1
  164. package/dist/node-dev/CartCheckoutButton.mjs.map +1 -1
  165. package/dist/node-dev/CartCost.js.map +1 -1
  166. package/dist/node-dev/CartCost.mjs.map +1 -1
  167. package/dist/node-dev/CartLineProvider.js.map +1 -1
  168. package/dist/node-dev/CartLineProvider.mjs.map +1 -1
  169. package/dist/node-dev/CartLineQuantity.js.map +1 -1
  170. package/dist/node-dev/CartLineQuantity.mjs.map +1 -1
  171. package/dist/node-dev/CartLineQuantityAdjustButton.js.map +1 -1
  172. package/dist/node-dev/CartLineQuantityAdjustButton.mjs.map +1 -1
  173. package/dist/node-dev/CartProvider.js +3 -6
  174. package/dist/node-dev/CartProvider.js.map +1 -1
  175. package/dist/node-dev/CartProvider.mjs +4 -7
  176. package/dist/node-dev/CartProvider.mjs.map +1 -1
  177. package/dist/node-dev/ExternalVideo.js.map +1 -1
  178. package/dist/node-dev/ExternalVideo.mjs.map +1 -1
  179. package/dist/node-dev/Image.js +2 -4
  180. package/dist/node-dev/Image.js.map +1 -1
  181. package/dist/node-dev/Image.mjs +2 -4
  182. package/dist/node-dev/Image.mjs.map +1 -1
  183. package/dist/node-dev/MediaFile.js.map +1 -1
  184. package/dist/node-dev/MediaFile.mjs.map +1 -1
  185. package/dist/node-dev/ModelViewer.js.map +1 -1
  186. package/dist/node-dev/ModelViewer.mjs.map +1 -1
  187. package/dist/node-dev/Money.js.map +1 -1
  188. package/dist/node-dev/Money.mjs.map +1 -1
  189. package/dist/node-dev/ProductPrice.js.map +1 -1
  190. package/dist/node-dev/ProductPrice.mjs.map +1 -1
  191. package/dist/node-dev/ProductProvider.js +14 -11
  192. package/dist/node-dev/ProductProvider.js.map +1 -1
  193. package/dist/node-dev/ProductProvider.mjs +15 -12
  194. package/dist/node-dev/ProductProvider.mjs.map +1 -1
  195. package/dist/node-dev/RichText.components.js +2 -4
  196. package/dist/node-dev/RichText.components.js.map +1 -1
  197. package/dist/node-dev/RichText.components.mjs +2 -4
  198. package/dist/node-dev/RichText.components.mjs.map +1 -1
  199. package/dist/node-dev/RichText.js.map +1 -1
  200. package/dist/node-dev/RichText.mjs.map +1 -1
  201. package/dist/node-dev/ShopPayButton.js.map +1 -1
  202. package/dist/node-dev/ShopPayButton.mjs.map +1 -1
  203. package/dist/node-dev/ShopifyProvider.js +18 -1
  204. package/dist/node-dev/ShopifyProvider.js.map +1 -1
  205. package/dist/node-dev/ShopifyProvider.mjs +19 -2
  206. package/dist/node-dev/ShopifyProvider.mjs.map +1 -1
  207. package/dist/node-dev/Video.js.map +1 -1
  208. package/dist/node-dev/Video.mjs.map +1 -1
  209. package/dist/node-dev/_virtual/with-selector.js +3 -2
  210. package/dist/node-dev/_virtual/with-selector.js.map +1 -1
  211. package/dist/node-dev/_virtual/with-selector.mjs +3 -2
  212. package/dist/node-dev/_virtual/with-selector.mjs.map +1 -1
  213. package/dist/node-dev/_virtual/with-selector2.js +5 -0
  214. package/dist/node-dev/_virtual/with-selector2.js.map +1 -0
  215. package/dist/node-dev/_virtual/with-selector2.mjs +5 -0
  216. package/dist/node-dev/_virtual/with-selector2.mjs.map +1 -0
  217. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js.map +1 -1
  218. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
  219. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.js.map +1 -1
  220. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
  221. package/dist/node-dev/analytics-utils.js.map +1 -1
  222. package/dist/node-dev/analytics-utils.mjs.map +1 -1
  223. package/dist/node-dev/analytics.js +6 -9
  224. package/dist/node-dev/analytics.js.map +1 -1
  225. package/dist/node-dev/analytics.mjs +6 -9
  226. package/dist/node-dev/analytics.mjs.map +1 -1
  227. package/dist/node-dev/cart-hooks.js +24 -6
  228. package/dist/node-dev/cart-hooks.js.map +1 -1
  229. package/dist/node-dev/cart-hooks.mjs +25 -7
  230. package/dist/node-dev/cart-hooks.mjs.map +1 -1
  231. package/dist/node-dev/cookies-utils.js +4 -4
  232. package/dist/node-dev/cookies-utils.js.map +1 -1
  233. package/dist/node-dev/cookies-utils.mjs +5 -5
  234. package/dist/node-dev/cookies-utils.mjs.map +1 -1
  235. package/dist/node-dev/flatten-connection.js.map +1 -1
  236. package/dist/node-dev/flatten-connection.mjs.map +1 -1
  237. package/dist/node-dev/getProductOptions.js +2 -4
  238. package/dist/node-dev/getProductOptions.js.map +1 -1
  239. package/dist/node-dev/getProductOptions.mjs +2 -4
  240. package/dist/node-dev/getProductOptions.mjs.map +1 -1
  241. package/dist/node-dev/index.js +4 -0
  242. package/dist/node-dev/index.js.map +1 -1
  243. package/dist/node-dev/index.mjs +4 -0
  244. package/dist/node-dev/index.mjs.map +1 -1
  245. package/dist/node-dev/load-script.js.map +1 -1
  246. package/dist/node-dev/load-script.mjs.map +1 -1
  247. package/dist/node-dev/node_modules/@xstate/fsm/es/index.js +10 -18
  248. package/dist/node-dev/node_modules/@xstate/fsm/es/index.js.map +1 -1
  249. package/dist/node-dev/node_modules/@xstate/fsm/es/index.mjs +10 -18
  250. package/dist/node-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  251. package/dist/node-dev/node_modules/@xstate/react/es/fsm.js +5 -9
  252. package/dist/node-dev/node_modules/@xstate/react/es/fsm.js.map +1 -1
  253. package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs +5 -9
  254. package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  255. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  256. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.mjs.map +1 -1
  257. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +1 -2
  258. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  259. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs +1 -2
  260. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  261. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +5 -10
  262. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
  263. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs +5 -10
  264. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  265. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +1 -2
  266. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  267. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs +1 -2
  268. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  269. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +1 -2
  270. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  271. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs +1 -2
  272. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  273. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.js +1 -2
  274. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.js.map +1 -1
  275. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.mjs +1 -2
  276. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.mjs.map +1 -1
  277. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.js +12 -7
  278. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -1
  279. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.mjs +12 -7
  280. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -1
  281. package/dist/node-dev/optionValueDecoder.js +1 -2
  282. package/dist/node-dev/optionValueDecoder.js.map +1 -1
  283. package/dist/node-dev/optionValueDecoder.mjs +1 -2
  284. package/dist/node-dev/optionValueDecoder.mjs.map +1 -1
  285. package/dist/node-dev/packages/hydrogen-react/package.json.js +1 -1
  286. package/dist/node-dev/packages/hydrogen-react/package.json.mjs +1 -1
  287. package/dist/node-dev/parse-metafield.js +2 -2
  288. package/dist/node-dev/parse-metafield.js.map +1 -1
  289. package/dist/node-dev/parse-metafield.mjs +2 -2
  290. package/dist/node-dev/parse-metafield.mjs.map +1 -1
  291. package/dist/node-dev/storefront-client.js +1 -2
  292. package/dist/node-dev/storefront-client.js.map +1 -1
  293. package/dist/node-dev/storefront-client.mjs +1 -2
  294. package/dist/node-dev/storefront-client.mjs.map +1 -1
  295. package/dist/node-dev/tracking-utils.js +88 -0
  296. package/dist/node-dev/tracking-utils.js.map +1 -0
  297. package/dist/node-dev/tracking-utils.mjs +88 -0
  298. package/dist/node-dev/tracking-utils.mjs.map +1 -0
  299. package/dist/node-dev/useCartAPIStateMachine.js +6 -12
  300. package/dist/node-dev/useCartAPIStateMachine.js.map +1 -1
  301. package/dist/node-dev/useCartAPIStateMachine.mjs +6 -12
  302. package/dist/node-dev/useCartAPIStateMachine.mjs.map +1 -1
  303. package/dist/node-dev/useCartActions.js.map +1 -1
  304. package/dist/node-dev/useCartActions.mjs.map +1 -1
  305. package/dist/node-dev/useMoney.js.map +1 -1
  306. package/dist/node-dev/useMoney.mjs.map +1 -1
  307. package/dist/node-dev/useSelectedOptionInUrlParam.js.map +1 -1
  308. package/dist/node-dev/useSelectedOptionInUrlParam.mjs.map +1 -1
  309. package/dist/node-dev/useShopifyCookies.js +95 -9
  310. package/dist/node-dev/useShopifyCookies.js.map +1 -1
  311. package/dist/node-dev/useShopifyCookies.mjs +97 -11
  312. package/dist/node-dev/useShopifyCookies.mjs.map +1 -1
  313. package/dist/node-prod/AddToCartButton.js.map +1 -1
  314. package/dist/node-prod/AddToCartButton.mjs.map +1 -1
  315. package/dist/node-prod/BaseButton.js.map +1 -1
  316. package/dist/node-prod/BaseButton.mjs.map +1 -1
  317. package/dist/node-prod/BuyNowButton.js.map +1 -1
  318. package/dist/node-prod/BuyNowButton.mjs.map +1 -1
  319. package/dist/node-prod/CartCheckoutButton.js.map +1 -1
  320. package/dist/node-prod/CartCheckoutButton.mjs.map +1 -1
  321. package/dist/node-prod/CartCost.js.map +1 -1
  322. package/dist/node-prod/CartCost.mjs.map +1 -1
  323. package/dist/node-prod/CartLineProvider.js.map +1 -1
  324. package/dist/node-prod/CartLineProvider.mjs.map +1 -1
  325. package/dist/node-prod/CartLineQuantity.js.map +1 -1
  326. package/dist/node-prod/CartLineQuantity.mjs.map +1 -1
  327. package/dist/node-prod/CartLineQuantityAdjustButton.js.map +1 -1
  328. package/dist/node-prod/CartLineQuantityAdjustButton.mjs.map +1 -1
  329. package/dist/node-prod/CartProvider.js +3 -6
  330. package/dist/node-prod/CartProvider.js.map +1 -1
  331. package/dist/node-prod/CartProvider.mjs +4 -7
  332. package/dist/node-prod/CartProvider.mjs.map +1 -1
  333. package/dist/node-prod/ExternalVideo.js.map +1 -1
  334. package/dist/node-prod/ExternalVideo.mjs.map +1 -1
  335. package/dist/node-prod/Image.js +2 -4
  336. package/dist/node-prod/Image.js.map +1 -1
  337. package/dist/node-prod/Image.mjs +2 -4
  338. package/dist/node-prod/Image.mjs.map +1 -1
  339. package/dist/node-prod/MediaFile.js.map +1 -1
  340. package/dist/node-prod/MediaFile.mjs.map +1 -1
  341. package/dist/node-prod/ModelViewer.js.map +1 -1
  342. package/dist/node-prod/ModelViewer.mjs.map +1 -1
  343. package/dist/node-prod/Money.js.map +1 -1
  344. package/dist/node-prod/Money.mjs.map +1 -1
  345. package/dist/node-prod/ProductPrice.js.map +1 -1
  346. package/dist/node-prod/ProductPrice.mjs.map +1 -1
  347. package/dist/node-prod/ProductProvider.js +14 -11
  348. package/dist/node-prod/ProductProvider.js.map +1 -1
  349. package/dist/node-prod/ProductProvider.mjs +15 -12
  350. package/dist/node-prod/ProductProvider.mjs.map +1 -1
  351. package/dist/node-prod/RichText.components.js +2 -4
  352. package/dist/node-prod/RichText.components.js.map +1 -1
  353. package/dist/node-prod/RichText.components.mjs +2 -4
  354. package/dist/node-prod/RichText.components.mjs.map +1 -1
  355. package/dist/node-prod/RichText.js.map +1 -1
  356. package/dist/node-prod/RichText.mjs.map +1 -1
  357. package/dist/node-prod/ShopPayButton.js.map +1 -1
  358. package/dist/node-prod/ShopPayButton.mjs.map +1 -1
  359. package/dist/node-prod/ShopifyProvider.js +18 -1
  360. package/dist/node-prod/ShopifyProvider.js.map +1 -1
  361. package/dist/node-prod/ShopifyProvider.mjs +19 -2
  362. package/dist/node-prod/ShopifyProvider.mjs.map +1 -1
  363. package/dist/node-prod/Video.js.map +1 -1
  364. package/dist/node-prod/Video.mjs.map +1 -1
  365. package/dist/node-prod/_virtual/with-selector.js +3 -2
  366. package/dist/node-prod/_virtual/with-selector.js.map +1 -1
  367. package/dist/node-prod/_virtual/with-selector.mjs +3 -2
  368. package/dist/node-prod/_virtual/with-selector.mjs.map +1 -1
  369. package/dist/node-prod/_virtual/with-selector2.js +5 -0
  370. package/dist/node-prod/_virtual/with-selector2.js.map +1 -0
  371. package/dist/node-prod/_virtual/with-selector2.mjs +5 -0
  372. package/dist/node-prod/_virtual/with-selector2.mjs.map +1 -0
  373. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js.map +1 -1
  374. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
  375. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.js.map +1 -1
  376. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
  377. package/dist/node-prod/analytics-utils.js.map +1 -1
  378. package/dist/node-prod/analytics-utils.mjs.map +1 -1
  379. package/dist/node-prod/analytics.js +7 -11
  380. package/dist/node-prod/analytics.js.map +1 -1
  381. package/dist/node-prod/analytics.mjs +7 -11
  382. package/dist/node-prod/analytics.mjs.map +1 -1
  383. package/dist/node-prod/cart-hooks.js +24 -6
  384. package/dist/node-prod/cart-hooks.js.map +1 -1
  385. package/dist/node-prod/cart-hooks.mjs +25 -7
  386. package/dist/node-prod/cart-hooks.mjs.map +1 -1
  387. package/dist/node-prod/cookies-utils.js +4 -4
  388. package/dist/node-prod/cookies-utils.js.map +1 -1
  389. package/dist/node-prod/cookies-utils.mjs +5 -5
  390. package/dist/node-prod/cookies-utils.mjs.map +1 -1
  391. package/dist/node-prod/flatten-connection.js.map +1 -1
  392. package/dist/node-prod/flatten-connection.mjs.map +1 -1
  393. package/dist/node-prod/getProductOptions.js +2 -4
  394. package/dist/node-prod/getProductOptions.js.map +1 -1
  395. package/dist/node-prod/getProductOptions.mjs +2 -4
  396. package/dist/node-prod/getProductOptions.mjs.map +1 -1
  397. package/dist/node-prod/index.js +4 -0
  398. package/dist/node-prod/index.js.map +1 -1
  399. package/dist/node-prod/index.mjs +4 -0
  400. package/dist/node-prod/index.mjs.map +1 -1
  401. package/dist/node-prod/load-script.js.map +1 -1
  402. package/dist/node-prod/load-script.mjs.map +1 -1
  403. package/dist/node-prod/node_modules/@xstate/fsm/es/index.js +10 -18
  404. package/dist/node-prod/node_modules/@xstate/fsm/es/index.js.map +1 -1
  405. package/dist/node-prod/node_modules/@xstate/fsm/es/index.mjs +10 -18
  406. package/dist/node-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  407. package/dist/node-prod/node_modules/@xstate/react/es/fsm.js +5 -9
  408. package/dist/node-prod/node_modules/@xstate/react/es/fsm.js.map +1 -1
  409. package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs +5 -9
  410. package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  411. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  412. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.mjs.map +1 -1
  413. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +1 -2
  414. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  415. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs +1 -2
  416. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  417. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +5 -10
  418. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
  419. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs +5 -10
  420. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  421. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +1 -2
  422. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  423. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs +1 -2
  424. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  425. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +1 -2
  426. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  427. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs +1 -2
  428. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  429. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.js +1 -2
  430. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.js.map +1 -1
  431. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.mjs +1 -2
  432. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.mjs.map +1 -1
  433. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.js +12 -7
  434. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -1
  435. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.mjs +12 -7
  436. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -1
  437. package/dist/node-prod/optionValueDecoder.js +1 -2
  438. package/dist/node-prod/optionValueDecoder.js.map +1 -1
  439. package/dist/node-prod/optionValueDecoder.mjs +1 -2
  440. package/dist/node-prod/optionValueDecoder.mjs.map +1 -1
  441. package/dist/node-prod/packages/hydrogen-react/package.json.js +1 -1
  442. package/dist/node-prod/packages/hydrogen-react/package.json.mjs +1 -1
  443. package/dist/node-prod/parse-metafield.js +2 -2
  444. package/dist/node-prod/parse-metafield.js.map +1 -1
  445. package/dist/node-prod/parse-metafield.mjs +2 -2
  446. package/dist/node-prod/parse-metafield.mjs.map +1 -1
  447. package/dist/node-prod/storefront-client.js +1 -2
  448. package/dist/node-prod/storefront-client.js.map +1 -1
  449. package/dist/node-prod/storefront-client.mjs +1 -2
  450. package/dist/node-prod/storefront-client.mjs.map +1 -1
  451. package/dist/node-prod/tracking-utils.js +88 -0
  452. package/dist/node-prod/tracking-utils.js.map +1 -0
  453. package/dist/node-prod/tracking-utils.mjs +88 -0
  454. package/dist/node-prod/tracking-utils.mjs.map +1 -0
  455. package/dist/node-prod/useCartAPIStateMachine.js +6 -12
  456. package/dist/node-prod/useCartAPIStateMachine.js.map +1 -1
  457. package/dist/node-prod/useCartAPIStateMachine.mjs +6 -12
  458. package/dist/node-prod/useCartAPIStateMachine.mjs.map +1 -1
  459. package/dist/node-prod/useCartActions.js.map +1 -1
  460. package/dist/node-prod/useCartActions.mjs.map +1 -1
  461. package/dist/node-prod/useMoney.js.map +1 -1
  462. package/dist/node-prod/useMoney.mjs.map +1 -1
  463. package/dist/node-prod/useSelectedOptionInUrlParam.js.map +1 -1
  464. package/dist/node-prod/useSelectedOptionInUrlParam.mjs.map +1 -1
  465. package/dist/node-prod/useShopifyCookies.js +95 -9
  466. package/dist/node-prod/useShopifyCookies.js.map +1 -1
  467. package/dist/node-prod/useShopifyCookies.mjs +97 -11
  468. package/dist/node-prod/useShopifyCookies.mjs.map +1 -1
  469. package/dist/types/Image.d.ts +1 -1
  470. package/dist/types/ShopifyProvider.d.ts +5 -0
  471. package/dist/types/cookies-utils.d.ts +4 -0
  472. package/dist/types/index.d.cts +1 -0
  473. package/dist/types/index.d.ts +1 -0
  474. package/dist/types/tracking-utils.d.ts +22 -0
  475. package/dist/types/useShopifyCookies.d.ts +28 -2
  476. package/dist/umd/hydrogen-react.dev.js +543 -367
  477. package/dist/umd/hydrogen-react.dev.js.map +1 -1
  478. package/dist/umd/hydrogen-react.prod.js +18 -18
  479. package/dist/umd/hydrogen-react.prod.js.map +1 -1
  480. package/package.json +35 -22
@@ -1,4 +1,4 @@
1
- (function(E,c){typeof exports=="object"&&typeof module<"u"?c(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],c):(E=typeof globalThis<"u"?globalThis:E||self,c(E.hydrogenreact={},E.React))})(this,function(E,c){"use strict";function tr(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const k=tr(c);/*! *****************************************************************************
1
+ (function(S,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],l):(S=typeof globalThis<"u"?globalThis:S||self,l(S.hydrogenreact={},S.React))})(this,function(S,l){"use strict";function cn(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 U=cn(l);/*! *****************************************************************************
2
2
  Copyright (c) Microsoft Corporation.
3
3
 
4
4
  Permission to use, copy, modify, and/or distribute this software for any
@@ -11,7 +11,7 @@
11
11
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
12
12
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
13
13
  PERFORMANCE OF THIS SOFTWARE.
14
- ***************************************************************************** */function Ge(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n,a,i=r.call(e),s=[];try{for(;(t===void 0||t-- >0)&&!(n=i.next()).done;)s.push(n.value)}catch(o){a={error:o}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return s}var te;(function(e){e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped"})(te||(te={}));var Ze={type:"xstate.init"};function Re(e){return e===void 0?[]:[].concat(e)}function ne(e){return{type:"xstate.assign",assignment:e}}function Ke(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 Qe(e){return typeof e=="string"?{type:e}:e}function Je(e,t){return{value:e,context:t,actions:[],changed:!1,matches:Ce(e)}}function Xe(e,t,r){var n=t,a=!1;return[e.filter(function(i){if(i.type==="xstate.assign"){a=!0;var s=Object.assign({},n);return typeof i.assignment=="function"?s=i.assignment(n,r):Object.keys(i.assignment).forEach(function(o){s[o]=typeof i.assignment[o]=="function"?i.assignment[o](n,r):i.assignment[o]}),n=s,!1}return!0}),n,a]}function ze(e,t){t===void 0&&(t={});var r=Ge(Xe(Re(e.states[e.initial].entry).map(function(s){return Ke(s,t.actions)}),e.context,Ze),2),n=r[0],a=r[1],i={config:e,_options:t,initialState:{value:e.initial,actions:n,context:a,matches:Ce(e.initial)},transition:function(s,o){var u,l,g=typeof s=="string"?{value:s,context:e.context}:s,h=g.value,y=g.context,d=Qe(o),f=e.states[h];if(f.on){var S=Re(f.on[d.type]);try{for(var T=function(U){var ue=typeof Symbol=="function"&&Symbol.iterator,_e=ue&&U[ue],Se=0;if(_e)return _e.call(U);if(U&&typeof U.length=="number")return{next:function(){return U&&Se>=U.length&&(U=void 0),{value:U&&U[Se++],done:!U}}};throw new TypeError(ue?"Object is not iterable.":"Symbol.iterator is not defined.")}(S),w=T.next();!w.done;w=T.next()){var v=w.value;if(v===void 0)return Je(h,y);var b=typeof v=="string"?{target:v}:v,R=b.target,m=b.actions,p=m===void 0?[]:m,_=b.cond,P=_===void 0?function(){return!0}:_,O=R===void 0,A=R??h,I=e.states[A];if(P(y,d)){var q=Ge(Xe((O?Re(p):[].concat(f.exit,p,I.entry).filter(function(U){return U})).map(function(U){return Ke(U,i._options.actions)}),y,d),3),D=q[0],H=q[1],ee=q[2],Ee=R??h;return{value:Ee,context:H,actions:D,changed:R!==h||D.length>0||ee,matches:Ce(Ee)}}}}catch(U){u={error:U}}finally{try{w&&!w.done&&(l=T.return)&&l.call(T)}finally{if(u)throw u.error}}}return Je(h,y)}};return i}var et=function(e,t){return e.actions.forEach(function(r){var n=r.exec;return n&&n(e.context,t)})};function rr(e){var t=e.initialState,r=te.NotStarted,n=new Set,a={_machine:e,send:function(i){r===te.Running&&(t=e.transition(t,i),et(t,Qe(i)),n.forEach(function(s){return s(t)}))},subscribe:function(i){return n.add(i),i(t),{unsubscribe:function(){return n.delete(i)}}},start:function(i){if(i){var s=typeof i=="object"?i:{context:e.config.context,value:i};t={value:s.value,actions:[],context:s.context,matches:Ce(s.value)}}else t=e.initialState;return r=te.Running,et(t,Ze),a},stop:function(){return r=te.Stopped,n.clear(),a},get state(){return t},get status(){return r}};return a}var nr=c.useLayoutEffect,tt={exports:{}},rt={},nt={exports:{}},at={};/**
14
+ ***************************************************************************** */function Je(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var r,a,i=n.call(e),s=[];try{for(;(t===void 0||t-- >0)&&!(r=i.next()).done;)s.push(r.value)}catch(o){a={error:o}}finally{try{r&&!r.done&&(n=i.return)&&n.call(i)}finally{if(a)throw a.error}}return s}var z;(function(e){e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped"})(z||(z={}));var Xe={type:"xstate.init"};function Pe(e){return e===void 0?[]:[].concat(e)}function ne(e){return{type:"xstate.assign",assignment:e}}function ze(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 Se(e){return function(t){return e===t}}function et(e){return typeof e=="string"?{type:e}:e}function tt(e,t){return{value:e,context:t,actions:[],changed:!1,matches:Se(e)}}function nt(e,t,n){var r=t,a=!1;return[e.filter(function(i){if(i.type==="xstate.assign"){a=!0;var s=Object.assign({},r);return typeof i.assignment=="function"?s=i.assignment(r,n):Object.keys(i.assignment).forEach(function(o){s[o]=typeof i.assignment[o]=="function"?i.assignment[o](r,n):i.assignment[o]}),r=s,!1}return!0}),r,a]}function rt(e,t){t===void 0&&(t={});var n=Je(nt(Pe(e.states[e.initial].entry).map(function(s){return ze(s,t.actions)}),e.context,Xe),2),r=n[0],a=n[1],i={config:e,_options:t,initialState:{value:e.initial,actions:r,context:a,matches:Se(e.initial)},transition:function(s,o){var c,u,g=typeof s=="string"?{value:s,context:e.context}:s,d=g.value,h=g.context,f=et(o),y=e.states[d];if(y.on){var E=Pe(y.on[f.type]);try{for(var T=function(V){var se=typeof Symbol=="function"&&Symbol.iterator,pe=se&&V[se],Ee=0;if(pe)return pe.call(V);if(V&&typeof V.length=="number")return{next:function(){return V&&Ee>=V.length&&(V=void 0),{value:V&&V[Ee++],done:!V}}};throw new TypeError(se?"Object is not iterable.":"Symbol.iterator is not defined.")}(E),b=T.next();!b.done;b=T.next()){var I=b.value;if(I===void 0)return tt(d,h);var A=typeof I=="string"?{target:I}:I,v=A.target,p=A.actions,m=p===void 0?[]:p,_=A.cond,P=_===void 0?function(){return!0}:_,R=v===void 0,w=v??d,O=e.states[w];if(P(h,f)){var H=Je(nt((R?Pe(m):[].concat(y.exit,m,O.entry).filter(function(V){return V})).map(function(V){return ze(V,i._options.actions)}),h,f),3),k=H[0],$=H[1],X=H[2],me=v??d;return{value:me,context:$,actions:k,changed:v!==d||k.length>0||X,matches:Se(me)}}}}catch(V){c={error:V}}finally{try{b&&!b.done&&(u=T.return)&&u.call(T)}finally{if(c)throw c.error}}}return tt(d,h)}};return i}var at=function(e,t){return e.actions.forEach(function(n){var r=n.exec;return r&&r(e.context,t)})};function un(e){var t=e.initialState,n=z.NotStarted,r=new Set,a={_machine:e,send:function(i){n===z.Running&&(t=e.transition(t,i),at(t,et(i)),r.forEach(function(s){return s(t)}))},subscribe:function(i){return r.add(i),i(t),{unsubscribe:function(){return r.delete(i)}}},start:function(i){if(i){var s=typeof i=="object"?i:{context:e.config.context,value:i};t={value:s.value,actions:[],context:s.context,matches:Se(s.value)}}else t=e.initialState;return n=z.Running,at(t,Xe),a},stop:function(){return n=z.Stopped,r.clear(),a},get state(){return t},get status(){return n}};return a}var ln=l.useLayoutEffect,Oe={exports:{}},Re={},ke={exports:{}},De={};/**
15
15
  * @license React
16
16
  * use-sync-external-store-shim.production.min.js
17
17
  *
@@ -19,7 +19,7 @@
19
19
  *
20
20
  * This source code is licensed under the MIT license found in the
21
21
  * LICENSE file in the root directory of this source tree.
22
- */var ae=c;function ar(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var ir=typeof Object.is=="function"?Object.is:ar,or=ae.useState,sr=ae.useEffect,cr=ae.useLayoutEffect,ur=ae.useDebugValue;function lr(e,t){var r=t(),n=or({inst:{value:r,getSnapshot:t}}),a=n[0].inst,i=n[1];return cr(function(){a.value=r,a.getSnapshot=t,De(a)&&i({inst:a})},[e,r,t]),sr(function(){return De(a)&&i({inst:a}),e(function(){De(a)&&i({inst:a})})},[e]),ur(r),r}function De(e){var t=e.getSnapshot;e=e.value;try{var r=t();return!ir(e,r)}catch{return!0}}function dr(e,t){return t()}var fr=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?dr:lr;at.useSyncExternalStore=ae.useSyncExternalStore!==void 0?ae.useSyncExternalStore:fr,nt.exports=at;var hr=nt.exports;/**
22
+ */var it;function dn(){if(it)return De;it=1;var e=l;function t(d,h){return d===h&&(d!==0||1/d===1/h)||d!==d&&h!==h}var n=typeof Object.is=="function"?Object.is:t,r=e.useState,a=e.useEffect,i=e.useLayoutEffect,s=e.useDebugValue;function o(d,h){var f=h(),y=r({inst:{value:f,getSnapshot:h}}),E=y[0].inst,T=y[1];return i(function(){E.value=f,E.getSnapshot=h,c(E)&&T({inst:E})},[d,f,h]),a(function(){return c(E)&&T({inst:E}),d(function(){c(E)&&T({inst:E})})},[d]),s(f),f}function c(d){var h=d.getSnapshot;d=d.value;try{var f=h();return!n(d,f)}catch{return!0}}function u(d,h){return h()}var g=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?u:o;return De.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:g,De}var ot;function fn(){return ot||(ot=1,ke.exports=dn()),ke.exports}/**
23
23
  * @license React
24
24
  * use-sync-external-store-shim/with-selector.production.min.js
25
25
  *
@@ -27,7 +27,7 @@
27
27
  *
28
28
  * This source code is licensed under the MIT license found in the
29
29
  * LICENSE file in the root directory of this source tree.
30
- */var Ae=c,gr=hr;function yr(e,t){return e===t&&(e!==0||1/e===1/t)||e!==e&&t!==t}var mr=typeof Object.is=="function"?Object.is:yr,pr=gr.useSyncExternalStore,Er=Ae.useRef,_r=Ae.useEffect,Sr=Ae.useMemo,Tr=Ae.useDebugValue;rt.useSyncExternalStoreWithSelector=function(e,t,r,n,a){var i=Er(null);if(i.current===null){var s={hasValue:!1,value:null};i.current=s}else s=i.current;i=Sr(function(){function u(d){if(!l){if(l=!0,g=d,d=n(d),a!==void 0&&s.hasValue){var f=s.value;if(a(f,d))return h=f}return h=d}if(f=h,mr(g,d))return f;var S=n(d);return a!==void 0&&a(f,S)?f:(g=d,h=S)}var l=!1,g,h,y=r===void 0?null:r;return[function(){return u(t())},y===null?void 0:function(){return u(y())}]},[t,r,n,a]);var o=pr(e,i[0],i[1]);return _r(function(){s.hasValue=!0,s.value=o},[o]),Tr(o),o},tt.exports=rt;var Cr=tt.exports;function Ar(e){var t=k.useRef();return t.current||(t.current={v:e()}),t.current.v}var wr=function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),a,i=[],s;try{for(;(t===void 0||t-- >0)&&!(a=n.next()).done;)i.push(a.value)}catch(o){s={error:o}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return i};function br(e){return e}var Ir=function(e){var t;return e.subscribe(function(r){t=r}).unsubscribe(),t};function vr(e,t){var r=c.useRef(),n=wr(Ar(function(){var o=[],u=rr(ze(e.config,t||e._options)),l=u.send;return u.send=function(g){if(u.status===te.NotStarted){o.push(g);return}l(g),r.current=u.state},[u,o]}),2),a=n[0],i=n[1];nr(function(){t&&(a._machine._options=t)});var s=Or(a);return c.useEffect(function(){return a.start(r.current),i.forEach(a.send),r.current=a.state,function(){a.stop()}},[]),s}var Pr=function(e,t){return t.changed===!1};function Or(e){var t=c.useCallback(function(){return Ir(e)},[e]),r=c.useCallback(function(a){var i=e.subscribe(a).unsubscribe;return i},[e]),n=Cr.useSyncExternalStoreWithSelector(r,t,t,br,Pr);return[n,e.send,e]}function Q(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}):[]}const Rr=e=>`
30
+ */var st;function hn(){if(st)return Re;st=1;var e=l,t=fn();function n(u,g){return u===g&&(u!==0||1/u===1/g)||u!==u&&g!==g}var r=typeof Object.is=="function"?Object.is:n,a=t.useSyncExternalStore,i=e.useRef,s=e.useEffect,o=e.useMemo,c=e.useDebugValue;return Re.useSyncExternalStoreWithSelector=function(u,g,d,h,f){var y=i(null);if(y.current===null){var E={hasValue:!1,value:null};y.current=E}else E=y.current;y=o(function(){function b(m){if(!I){if(I=!0,A=m,m=h(m),f!==void 0&&E.hasValue){var _=E.value;if(f(_,m))return v=_}return v=m}if(_=v,r(A,m))return _;var P=h(m);return f!==void 0&&f(_,P)?_:(A=m,v=P)}var I=!1,A,v,p=d===void 0?null:d;return[function(){return b(g())},p===null?void 0:function(){return b(p())}]},[g,d,h,f]);var T=a(u,y[0],y[1]);return s(function(){E.hasValue=!0,E.value=T},[T]),c(T),T},Re}var ct;function gn(){return ct||(ct=1,Oe.exports=hn()),Oe.exports}var yn=gn();function mn(e){var t=U.useRef();return t.current||(t.current={v:e()}),t.current.v}var pn=function(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),a,i=[],s;try{for(;(t===void 0||t-- >0)&&!(a=r.next()).done;)i.push(a.value)}catch(o){s={error:o}}finally{try{a&&!a.done&&(n=r.return)&&n.call(r)}finally{if(s)throw s.error}}return i};function En(e){return e}var _n=function(e){var t;return e.subscribe(function(n){t=n}).unsubscribe(),t};function Sn(e,t){var n=l.useRef(),r=pn(mn(function(){var o=[],c=un(rt(e.config,t||e._options)),u=c.send;return c.send=function(g){if(c.status===z.NotStarted){o.push(g);return}u(g),n.current=c.state},[c,o]}),2),a=r[0],i=r[1];ln(function(){t&&(a._machine._options=t)});var s=Cn(a);return l.useEffect(function(){return a.start(n.current),i.forEach(a.send),n.current=a.state,function(){a.stop()}},[]),s}var Tn=function(e,t){return t.changed===!1};function Cn(e){var t=l.useCallback(function(){return _n(e)},[e]),n=l.useCallback(function(a){var i=e.subscribe(a).unsubscribe;return i},[e]),r=yn.useSyncExternalStoreWithSelector(n,t,t,En,Tn);return[r,e.send,e]}function Q(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}):[]}const wn=e=>`
31
31
  mutation CartLineAdd(
32
32
  $cartId: ID!
33
33
  $lines: [CartLineInput!]!
@@ -43,7 +43,7 @@
43
43
  }
44
44
 
45
45
  ${e}
46
- `,Dr=e=>`
46
+ `,An=e=>`
47
47
  mutation CartCreate(
48
48
  $input: CartInput!
49
49
  $numCartLines: Int = 250
@@ -58,7 +58,7 @@
58
58
  }
59
59
 
60
60
  ${e}
61
- `,Vr=e=>`
61
+ `,bn=e=>`
62
62
  mutation CartLineRemove(
63
63
  $cartId: ID!
64
64
  $lines: [ID!]!
@@ -74,7 +74,7 @@
74
74
  }
75
75
 
76
76
  ${e}
77
- `,Ur=e=>`
77
+ `,In=e=>`
78
78
  mutation CartLineUpdate(
79
79
  $cartId: ID!
80
80
  $lines: [CartLineUpdateInput!]!
@@ -90,7 +90,7 @@
90
90
  }
91
91
 
92
92
  ${e}
93
- `,kr=e=>`
93
+ `,vn=e=>`
94
94
  mutation CartNoteUpdate(
95
95
  $cartId: ID!
96
96
  $note: String!
@@ -106,7 +106,7 @@
106
106
  }
107
107
 
108
108
  ${e}
109
- `,Nr=e=>`
109
+ `,Pn=e=>`
110
110
  mutation CartBuyerIdentityUpdate(
111
111
  $cartId: ID!
112
112
  $buyerIdentity: CartBuyerIdentityInput!
@@ -122,7 +122,7 @@
122
122
  }
123
123
 
124
124
  ${e}
125
- `,Mr=e=>`
125
+ `,On=e=>`
126
126
  mutation CartAttributesUpdate(
127
127
  $attributes: [AttributeInput!]!
128
128
  $cartId: ID!
@@ -138,7 +138,7 @@
138
138
  }
139
139
 
140
140
  ${e}
141
- `,Lr=e=>`
141
+ `,Rn=e=>`
142
142
  mutation CartDiscountCodesUpdate(
143
143
  $cartId: ID!
144
144
  $discountCodes: [String!]
@@ -154,7 +154,7 @@
154
154
  }
155
155
 
156
156
  ${e}
157
- `,xr=e=>`
157
+ `,kn=e=>`
158
158
  query CartQuery(
159
159
  $id: ID!
160
160
  $numCartLines: Int = 250
@@ -167,7 +167,7 @@
167
167
  }
168
168
 
169
169
  ${e}
170
- `,Fr=`
170
+ `,Dn=`
171
171
  fragment CartFragment on Cart {
172
172
  id
173
173
  checkoutUrl
@@ -268,16 +268,16 @@
268
268
  width
269
269
  height
270
270
  }
271
- `,ie="2025-01",jr="mock.shop",Ve=e=>e.includes(jr);function $r({storeDomain:e,privateStorefrontToken:t,publicStorefrontToken:r,storefrontApiVersion:n=ie,contentType:a}){if(!e)throw new Error(Ue+"`storeDomain` is required when creating a new Storefront client in production.");n!==ie&&qr(`The Storefront API version that you're using is different than the version this build of Hydrogen React is targeting.
272
- You may run into unexpected errors if these versions don't match. Received version: "${n}"; expected version "${ie}"`);const i=s=>{const o=(s==null?void 0:s.storeDomain)??e;return o.includes("://")?o:`https://${o}`};return{getShopifyDomain:i,getStorefrontApiUrl(s){const o=i(s),u=o+(o.endsWith("/")?"api":"/api");return Ve(o)?u:`${u}/${(s==null?void 0:s.storefrontApiVersion)??n}/graphql.json`},getPrivateTokenHeaders(s){if(!t&&!(s!=null&&s.privateStorefrontToken)&&!Ve(e))throw new Error(Ue+"You did not pass in a `privateStorefrontToken` while using `createStorefrontClient()` or `getPrivateTokenHeaders()`");return{"content-type":((s==null?void 0:s.contentType)??a)==="graphql"?"application/graphql":"application/json","X-SDK-Variant":"hydrogen-react","X-SDK-Variant-Source":"react","X-SDK-Version":n,"Shopify-Storefront-Private-Token":(s==null?void 0:s.privateStorefrontToken)??t??"",...s!=null&&s.buyerIp?{"Shopify-Storefront-Buyer-IP":s.buyerIp}:{}}},getPublicTokenHeaders(s){if(!r&&!(s!=null&&s.publicStorefrontToken)&&!Ve(e))throw new Error(Ue+"You did not pass in a `publicStorefrontToken` while using `createStorefrontClient()` or `getPublicTokenHeaders()`");const o=(s==null?void 0:s.contentType)??a??"json";return it(o,n,(s==null?void 0:s.publicStorefrontToken)??r??"")}}}function it(e,t,r){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":r}}const ot=new Set,Ue="[h2:error:createStorefrontClient] ",qr=(e,t="warn")=>{ot.has(e)||(console[t](`[h2:${t}:createStorefrontClient] `+e),ot.add(e))},st={storeDomain:"test",storefrontToken:"abc123",storefrontApiVersion:ie,countryIsoCode:"US",languageIsoCode:"EN",getStorefrontApiUrl(){return""},getPublicTokenHeaders(){return{}},getShopifyDomain(){return""}},ct=c.createContext(st);function Hr({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 r=c.useMemo(()=>{function n(a){const i=(a==null?void 0:a.storeDomain)??t.storeDomain;return i.includes("://")?i:`https://${i}`}return{...t,getPublicTokenHeaders(a){return it(a.contentType,t.storefrontApiVersion,a.storefrontToken??t.storefrontToken)},getShopifyDomain:n,getStorefrontApiUrl(a){const i=n({storeDomain:(a==null?void 0:a.storeDomain)??t.storeDomain});return`${i}${i.endsWith("/")?"":"/"}api/${(a==null?void 0:a.storefrontApiVersion)??t.storefrontApiVersion}/graphql.json`}}},[t]);return React.createElement(ct.Provider,{value:r},e)}function le(){const e=c.useContext(ct);if(!e)throw new Error("'useShop()' must be a descendent of <ShopifyProvider/>");return e}const ke="shopifyCartId",ut="Shopify-Storefront-Id",lt="Shopify-Storefront-Y",dt="Shopify-Storefront-S",J="_shopify_y",X="_shopify_s";var Br=new Set(["domain","path","max-age","expires","samesite","secure","httponly"]);function Yr(e){let t={},r,n,a=0,i=e.split(/;\s*/g),s,o;for(;a<i.length;a++)if(n=i[a],r=n.indexOf("="),~r){if(s=n.substring(0,r++).trim(),o=n.substring(r).trim(),o[0]==='"'&&(o=o.substring(1,o.length-1)),~o.indexOf("%"))try{o=decodeURIComponent(o)}catch{}Br.has(n=s.toLowerCase())?n==="expires"?t.expires=new Date(o):n==="max-age"?t.maxage=+o:t[n]=o:t[s]=o}else(s=n.trim().toLowerCase())&&(s==="httponly"||s==="secure")&&(t[s]=!0);return t}function Wr(e,t,r={}){let n=e+"="+encodeURIComponent(t);return r.expires&&(n+="; Expires="+new Date(r.expires).toUTCString()),r.maxage!=null&&r.maxage>=0&&(n+="; Max-Age="+(r.maxage|0)),r.domain&&(n+="; Domain="+r.domain),r.path&&(n+="; Path="+r.path),r.samesite&&(n+="; SameSite="+r.samesite),(r.secure||r.samesite==="None")&&(n+="; Secure"),r.httponly&&(n+="; HttpOnly"),n}const ft="xxxx-4xxx-xxxx-xxxxxxxxxxxx";function we(){let e="";try{const t=window.crypto,r=new Uint16Array(31);t.getRandomValues(r);let n=0;e=ft.replace(/[x]/g,a=>{const i=r[n]%16,s=a==="x"?i:i&3|8;return n++,s.toString(16)}).toUpperCase()}catch{e=ft.replace(/[x]/g,r=>{const n=Math.random()*16|0;return(r==="x"?n:n&3|8).toString(16)}).toUpperCase()}return`${Gr()}-${e}`}function Gr(){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 be(e){const t=Yr(e);return{[J]:t[J]||"",[X]:t[X]||""}}function Zr(){const{storefrontId:e,getPublicTokenHeaders:t,getStorefrontApiUrl:r}=le();return c.useCallback(({query:n,variables:a})=>{const i=t({contentType:"json"});e&&(i[ut]=e);const s=be(document.cookie);return i[lt]=s[J],i[dt]=s[X],fetch(r(),{method:"POST",headers:i,body:JSON.stringify({query:n.toString(),variables:a})}).then(o=>o.json()).catch(o=>({data:void 0,errors:o==null?void 0:o.toString()}))},[t,e,r])}function Kr({numCartLines:e,cartFragment:t,countryCode:r="US",languageCode:n="EN"}){const a=Zr(),i=c.useCallback(f=>a({query:xr(t),variables:{id:f,numCartLines:e,country:r,language:n}}),[a,t,e,r,n]),s=c.useCallback(f=>a({query:Dr(t),variables:{input:f,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),o=c.useCallback((f,S)=>a({query:Rr(t),variables:{cartId:f,lines:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),u=c.useCallback((f,S)=>a({query:Ur(t),variables:{cartId:f,lines:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),l=c.useCallback((f,S)=>a({query:Vr(t),variables:{cartId:f,lines:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),g=c.useCallback((f,S)=>a({query:kr(t),variables:{cartId:f,note:S,numCartLines:e,country:r,language:n}}),[a,t,e,r,n]),h=c.useCallback((f,S)=>a({query:Nr(t),variables:{cartId:f,buyerIdentity:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),y=c.useCallback((f,S)=>a({query:Mr(t),variables:{cartId:f,attributes:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),d=c.useCallback((f,S)=>a({query:Lr(t),variables:{cartId:f,discountCodes:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]);return c.useMemo(()=>({cartFetch:i,cartCreate:s,cartLineAdd:o,cartLineUpdate:u,cartLineRemove:l,noteUpdate:g,buyerIdentityUpdate:h,cartAttributesUpdate:y,discountCodesUpdate:d,cartFragment:t}),[i,s,o,u,l,g,h,y,d,t])}function Y(e,t){return{entry:[...(t==null?void 0:t.entryActions)||[],ne({lastValidCart:r=>r==null?void 0:r.cart}),"onCartActionEntry","onCartActionOptimisticUI",e],on:{RESOLVE:{target:(t==null?void 0:t.resolveTarget)||"idle",actions:[ne({prevCart:r=>r==null?void 0:r.lastValidCart,cart:(r,n)=>{var a;return(a=n==null?void 0:n.payload)==null?void 0:a.cart},rawCartResult:(r,n)=>{var a;return(a=n==null?void 0:n.payload)==null?void 0:a.rawCartResult},errors:r=>{}})]},ERROR:{target:(t==null?void 0:t.errorTarget)||"error",actions:[ne({prevCart:r=>r==null?void 0:r.lastValidCart,cart:r=>r==null?void 0:r.lastValidCart,errors:(r,n)=>{var a;return(a=n==null?void 0:n.payload)==null?void 0:a.errors}})]},CART_COMPLETED:{target:"cartCompleted",actions:ne({prevCart:r=>{},cart:r=>{},lastValidCart:r=>{},rawCartResult:r=>{},errors:r=>{}})}},exit:["onCartActionComplete",...(t==null?void 0:t.exitActions)||[]]}}const de={CART_FETCH:{target:"cartFetching"},CART_CREATE:{target:"cartCreating"},CART_SET:{target:"idle",actions:[ne({rawCartResult:(e,t)=>t.payload.cart,cart:(e,t)=>Ne(t.payload.cart)})]}},ht={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 Qr(e){return ze({id:"Cart",initial:e?"idle":"uninitialized",context:{cart:e&&Ne(e)},states:{uninitialized:{on:de},cartCompleted:{on:de},initializationError:{on:de},idle:{on:{...de,...ht}},error:{on:{...de,...ht}},cartFetching:Y("cartFetchAction",{errorTarget:"initializationError"}),cartCreating:Y("cartCreateAction",{errorTarget:"initializationError"}),cartLineRemoving:Y("cartLineRemoveAction"),cartLineUpdating:Y("cartLineUpdateAction"),cartLineAdding:Y("cartLineAddAction"),noteUpdating:Y("noteUpdateAction"),buyerIdentityUpdating:Y("buyerIdentityUpdateAction"),cartAttributesUpdating:Y("cartAttributesUpdateAction"),discountCodesUpdating:Y("discountCodesUpdateAction")}})}function Jr({numCartLines:e,onCartActionEntry:t,onCartActionOptimisticUI:r,onCartActionComplete:n,data:a,cartFragment:i,countryCode:s,languageCode:o}){const{cartFetch:u,cartCreate:l,cartLineAdd:g,cartLineUpdate:h,cartLineRemove:y,noteUpdate:d,buyerIdentityUpdate:f,cartAttributesUpdate:S,discountCodesUpdate:T}=Kr({numCartLines:e,cartFragment:i,countryCode:s,languageCode:o}),w=c.useMemo(()=>Qr(a),[a]),[v,b,R]=vr(w,{actions:{cartFetchAction:async(m,p)=>{var A;if(p.type!=="CART_FETCH")return;const{data:_,errors:P}=await u((A=p==null?void 0:p.payload)==null?void 0:A.cartId),O=W(p,_==null?void 0:_.cart,P);b(O)},cartCreateAction:async(m,p)=>{var A;if(p.type!=="CART_CREATE")return;const{data:_,errors:P}=await l(p==null?void 0:p.payload),O=W(p,(A=_==null?void 0:_.cartCreate)==null?void 0:A.cart,P);b(O)},cartLineAddAction:async(m,p)=>{var A,I;if(p.type!=="CARTLINE_ADD"||!((A=m==null?void 0:m.cart)!=null&&A.id))return;const{data:_,errors:P}=await g(m.cart.id,p.payload.lines),O=W(p,(I=_==null?void 0:_.cartLinesAdd)==null?void 0:I.cart,P);b(O)},cartLineUpdateAction:async(m,p)=>{var A,I;if(p.type!=="CARTLINE_UPDATE"||!((A=m==null?void 0:m.cart)!=null&&A.id))return;const{data:_,errors:P}=await h(m.cart.id,p.payload.lines),O=W(p,(I=_==null?void 0:_.cartLinesUpdate)==null?void 0:I.cart,P);b(O)},cartLineRemoveAction:async(m,p)=>{var A,I;if(p.type!=="CARTLINE_REMOVE"||!((A=m==null?void 0:m.cart)!=null&&A.id))return;const{data:_,errors:P}=await y(m.cart.id,p.payload.lines),O=W(p,(I=_==null?void 0:_.cartLinesRemove)==null?void 0:I.cart,P);b(O)},noteUpdateAction:async(m,p)=>{var A,I;if(p.type!=="NOTE_UPDATE"||!((A=m==null?void 0:m.cart)!=null&&A.id))return;const{data:_,errors:P}=await d(m.cart.id,p.payload.note),O=W(p,(I=_==null?void 0:_.cartNoteUpdate)==null?void 0:I.cart,P);b(O)},buyerIdentityUpdateAction:async(m,p)=>{var A,I;if(p.type!=="BUYER_IDENTITY_UPDATE"||!((A=m==null?void 0:m.cart)!=null&&A.id))return;const{data:_,errors:P}=await f(m.cart.id,p.payload.buyerIdentity),O=W(p,(I=_==null?void 0:_.cartBuyerIdentityUpdate)==null?void 0:I.cart,P);b(O)},cartAttributesUpdateAction:async(m,p)=>{var A,I;if(p.type!=="CART_ATTRIBUTES_UPDATE"||!((A=m==null?void 0:m.cart)!=null&&A.id))return;const{data:_,errors:P}=await S(m.cart.id,p.payload.attributes),O=W(p,(I=_==null?void 0:_.cartAttributesUpdate)==null?void 0:I.cart,P);b(O)},discountCodesUpdateAction:async(m,p)=>{var A,I;if(p.type!=="DISCOUNT_CODES_UPDATE"||!((A=m==null?void 0:m.cart)!=null&&A.id))return;const{data:_,errors:P}=await T(m.cart.id,p.payload.discountCodes),O=W(p,(I=_==null?void 0:_.cartDiscountCodesUpdate)==null?void 0:I.cart,P);b(O)},...t&&{onCartActionEntry:(m,p)=>{Xr(p)&&t(m,p)}},...r&&{onCartActionOptimisticUI:ne((m,p)=>r(m,p))},...n&&{onCartActionComplete:(m,p)=>{zr(p)&&n(m,p)}}}});return c.useMemo(()=>[v,b,R],[v,b,R])}function Ne(e){return{...e,lines:Q(e==null?void 0:e.lines),note:e.note??void 0}}function W(e,t,r){return r?{type:"ERROR",payload:{errors:r,cartActionEvent:e}}:t?{type:"RESOLVE",payload:{cart:Ne(t),rawCartResult:t,cartActionEvent:e}}:{type:"CART_COMPLETED",payload:{cartActionEvent:e}}}function Xr(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 zr(e){return e.type==="RESOLVE"||e.type==="ERROR"||e.type==="CART_COMPLETED"}const gt=c.createContext(null);function oe(){const e=c.useContext(gt);if(!e)throw new Error("Expected a Cart Context, but no Cart Context was found");return e}function en({children:e,numCartLines:t,onCreate:r,onLineAdd:n,onLineRemove:a,onLineUpdate:i,onNoteUpdate:s,onBuyerIdentityUpdate:o,onAttributesUpdate:u,onDiscountCodesUpdate:l,onCreateComplete:g,onLineAddComplete:h,onLineRemoveComplete:y,onLineUpdateComplete:d,onNoteUpdateComplete:f,onBuyerIdentityUpdateComplete:S,onAttributesUpdateComplete:T,onDiscountCodesUpdateComplete:w,data:v,cartFragment:b=Fr,customerAccessToken:R,countryCode:m,languageCode:p}){var Zt,Kt,Qt,Jt,Xt,zt,er;const _=le();if(!_)throw new Error("<CartProvider> needs to be a descendant of <ShopifyProvider>");m=(m??_.countryIsoCode??"US").toUpperCase(),p=(p??_.languageIsoCode??"EN").toUpperCase(),m&&(m=m.toUpperCase());const[P,O]=c.useState(m),[A,I]=c.useState(R),q=c.useRef(!1);(P!==m||A!==R)&&(O(m),I(R),q.current=!1);const[D,H]=Jr({numCartLines:t,data:v,cartFragment:b,countryCode:m,languageCode:p,onCartActionEntry(C,N){try{switch(N.type){case"CART_CREATE":return r==null?void 0:r();case"CARTLINE_ADD":return n==null?void 0:n();case"CARTLINE_REMOVE":return a==null?void 0:a();case"CARTLINE_UPDATE":return i==null?void 0:i();case"NOTE_UPDATE":return s==null?void 0:s();case"BUYER_IDENTITY_UPDATE":return o==null?void 0:o();case"CART_ATTRIBUTES_UPDATE":return u==null?void 0:u();case"DISCOUNT_CODES_UPDATE":return l==null?void 0:l()}}catch(L){console.error("Cart entry action failed",L)}},onCartActionOptimisticUI(C,N){var L,K,M,Te;if(!C.cart)return{...C};switch(N.type){case"CARTLINE_REMOVE":return{...C,cart:{...C.cart,lines:(K=(L=C==null?void 0:C.cart)==null?void 0:L.lines)==null?void 0:K.filter(x=>(x==null?void 0:x.id)&&!N.payload.lines.includes(x==null?void 0:x.id))}};case"CARTLINE_UPDATE":return{...C,cart:{...C.cart,lines:(Te=(M=C==null?void 0:C.cart)==null?void 0:M.lines)==null?void 0:Te.map(x=>{const We=N.payload.lines.find(({id:Ta})=>Ta===(x==null?void 0:x.id));return We&&We.quantity?{...x,quantity:We.quantity}:x})}}}return{...C}},onCartActionComplete(C,N){const L=N.payload.cartActionEvent;try{switch(N.type){case"RESOLVE":switch(L.type){case"CART_CREATE":return g==null?void 0:g();case"CARTLINE_ADD":return h==null?void 0:h();case"CARTLINE_REMOVE":return y==null?void 0:y();case"CARTLINE_UPDATE":return d==null?void 0:d();case"NOTE_UPDATE":return f==null?void 0:f();case"BUYER_IDENTITY_UPDATE":return nn(C,L)&&(q.current=!0),S==null?void 0:S();case"CART_ATTRIBUTES_UPDATE":return T==null?void 0:T();case"DISCOUNT_CODES_UPDATE":return w==null?void 0:w()}}}catch(K){console.error("onCartActionComplete failed",K)}}}),ee=c.useRef(!1),[Ee,U]=c.useState(!1),ue=D.matches("cartCompleted"),_e=(D.value==="idle"||D.value==="error"||D.value==="cartCompleted")&&m!==((Qt=(Kt=(Zt=D==null?void 0:D.context)==null?void 0:Zt.cart)==null?void 0:Kt.buyerIdentity)==null?void 0:Qt.countryCode)&&!D.context.errors,Se=c.useRef(!1);c.useEffect(()=>{if(!ee.current&&!Se.current){if(!v&&Me("localStorage")){Se.current=!0;try{const C=window.localStorage.getItem(ke);C&&H({type:"CART_FETCH",payload:{cartId:C}})}catch(C){console.warn("error fetching cartId"),console.warn(C)}}ee.current=!0,U(!0)}},[v,ee,H]),c.useEffect(()=>{!_e||q.current||H({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:{countryCode:m,customerAccessToken:R}}})},[m,R,_e,q,H]);const B=c.useCallback(C=>{if(!ee.current)return console.warn("Cart isn't ready yet");H(C)},[H]);c.useEffect(()=>{var C,N,L;if((N=(C=D==null?void 0:D.context)==null?void 0:C.cart)!=null&&N.id&&Me("localStorage"))try{window.localStorage.setItem(ke,(L=D.context.cart)==null?void 0:L.id)}catch(K){console.warn("Failed to save cartId to localStorage",K)}},[(Xt=(Jt=D==null?void 0:D.context)==null?void 0:Jt.cart)==null?void 0:Xt.id]),c.useEffect(()=>{if(ue&&Me("localStorage"))try{window.localStorage.removeItem(ke)}catch(C){console.warn("Failed to delete cartId from localStorage",C)}},[ue]);const Ye=c.useCallback(C=>{var N,L;m&&!((N=C.buyerIdentity)!=null&&N.countryCode)&&(C.buyerIdentity==null&&(C.buyerIdentity={}),C.buyerIdentity.countryCode=m),R&&!((L=C.buyerIdentity)!=null&&L.customerAccessToken)&&(C.buyerIdentity==null&&(C.buyerIdentity={}),C.buyerIdentity.customerAccessToken=R),B({type:"CART_CREATE",payload:C})},[m,R,B]),V=rn(D),Sa=c.useMemo(()=>{var C,N,L,K;return{...((C=V==null?void 0:V.context)==null?void 0:C.cart)??{lines:[],attributes:[]},status:tn(V.value),error:(N=V==null?void 0:V.context)==null?void 0:N.errors,totalQuantity:((K=(L=V==null?void 0:V.context)==null?void 0:L.cart)==null?void 0:K.totalQuantity)??0,cartCreate:Ye,cartReady:Ee,linesAdd(M){var Te,x;(x=(Te=V==null?void 0:V.context)==null?void 0:Te.cart)!=null&&x.id?B({type:"CARTLINE_ADD",payload:{lines:M}}):Ye({lines:M})},linesRemove(M){B({type:"CARTLINE_REMOVE",payload:{lines:M}})},linesUpdate(M){B({type:"CARTLINE_UPDATE",payload:{lines:M}})},noteUpdate(M){B({type:"NOTE_UPDATE",payload:{note:M}})},buyerIdentityUpdate(M){B({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:M}})},cartAttributesUpdate(M){B({type:"CART_ATTRIBUTES_UPDATE",payload:{attributes:M}})},discountCodesUpdate(M){B({type:"DISCOUNT_CODES_UPDATE",payload:{discountCodes:M}})},cartFragment:b}},[Ye,Ee,(zt=V==null?void 0:V.context)==null?void 0:zt.cart,(er=V==null?void 0:V.context)==null?void 0:er.errors,V.value,b,B]);return React.createElement(gt.Provider,{value:Sa},e)}function tn(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 rn(e){const[t,r]=c.useTransition(),[n,a]=c.useState(e),i=c.useRef(!1);t&&(i.current=!0);const s=c.useRef(!1);return!t&&i.current&&(s.current=!0),c.useEffect(()=>{r(()=>{s.current||a(e)})},[e]),s.current?e:n}function Me(e){let t;try{t=window[e];const r="__storage_test__";return t.setItem(r,r),t.removeItem(r),!0}catch(r){return!!(r instanceof DOMException&&(r.code===22||r.code===1014||r.name==="QuotaExceededError"||r.name==="NS_ERROR_DOM_QUOTA_REACHED")&&t&&t.length!==0)}}function nn(e,t){var r,n;return!!(t.payload.buyerIdentity.countryCode&&((n=(r=e.cart)==null?void 0:r.buyerIdentity)==null?void 0:n.countryCode)!==t.payload.buyerIdentity.countryCode)}const yt=c.createContext(null);function an({children:e,data:t,initialVariantId:r}){const n=c.useMemo(()=>Q(t.variants??{}),[t.variants]);if(!sn(n))throw new Error("<ProductProvider/> requires 'product.variants.nodes' or 'product.variants.edges'");const a=c.useMemo(()=>on(n),[n]),[i,s]=c.useState(()=>Et(r,n)),[o,u]=c.useState(()=>_t(i));c.useEffect(()=>{const T=Et(r,n);s(T),u(_t(T))},[r,n]);const l=c.useCallback((T,w)=>{u(v=>{const b={...v,[T]:w};return s(pt(n,b)),b})},[u,n]),g=c.useCallback((T,w)=>{const v=pt(n,{...o,[T]:w});return(v==null?void 0:v.availableForSale)??!0},[o,n]),h=c.useMemo(()=>Q(t.sellingPlanGroups??{}).map(T=>({...T,sellingPlans:Q((T==null?void 0:T.sellingPlans)??{})})),[t.sellingPlanGroups]),[y,d]=c.useState(void 0),f=c.useMemo(()=>{var T,w;if(!(!i||!y)){if(!((T=i.sellingPlanAllocations)!=null&&T.nodes)&&!((w=i.sellingPlanAllocations)!=null&&w.edges))throw new Error("<ProductProvider/>: You must include 'sellingPlanAllocations.nodes' or 'sellingPlanAllocations.edges' in your variants in order to calculate selectedSellingPlanAllocation");return Q(i.sellingPlanAllocations).find(v=>{var b;return((b=v==null?void 0:v.sellingPlan)==null?void 0:b.id)===y.id})}},[i,y]),S=c.useMemo(()=>({product:t,variants:n,variantsConnection:t.variants,options:a,selectedVariant:i,setSelectedVariant:s,selectedOptions:o,setSelectedOption:l,setSelectedOptions:u,isOptionInStock:g,selectedSellingPlan:y,setSelectedSellingPlan:d,selectedSellingPlanAllocation:f,sellingPlanGroups:h,sellingPlanGroupsConnection:t.sellingPlanGroups}),[t,g,a,o,y,f,i,h,l,n]);return React.createElement(yt.Provider,{value:S},e)}function mt(){const e=c.useContext(yt);if(!e)throw new Error("'useProduct' must be a child of <ProductProvider />");return e}function pt(e,t){var r,n;if(!(!e.length||((n=(r=e==null?void 0:e[0])==null?void 0:r.selectedOptions)==null?void 0:n.length)!==Object.keys(t).length))return e==null?void 0:e.find(a=>Object.entries(t).every(([i,s])=>{var o;return(o=a==null?void 0:a.selectedOptions)==null?void 0:o.some(u=>(u==null?void 0:u.name)===i&&(u==null?void 0:u.value)===s)}))}function on(e){const t=e.reduce((r,n)=>{var a;if(!n.selectedOptions)throw new Error("'getOptions' requires 'variant.selectedOptions'");return(a=n==null?void 0:n.selectedOptions)==null||a.forEach(i=>{r[(i==null?void 0:i.name)??""]=r[(i==null?void 0:i.name)??""]||new Set,r[(i==null?void 0:i.name)??""].add((i==null?void 0:i.value)??"")}),r},{});return Object.keys(t).map(r=>({name:r,values:Array.from(t[r])}))}function Et(e,t){if(e){const r=t.find(n=>(n==null?void 0:n.id)===e);return r||console.warn("<ProductProvider/> received a 'initialVariantId' prop, but could not actually find a variant with that ID"),r}if(e===null)return null;if(e===void 0)return t.find(r=>r==null?void 0:r.availableForSale)||t[0]}function _t(e){return e!=null&&e.selectedOptions?e.selectedOptions.reduce((t,r)=>(t[(r==null?void 0:r.name)??""]=(r==null?void 0:r.value)??"",t),{}):{}}function sn(e){return!(!e||!Array.isArray(e))}function Ie(e){const{as:t,onClick:r,defaultOnClick:n,children:a,buttonRef:i,...s}=e,o=c.useCallback(l=>{if(r){const g=r(l);if(typeof g=="boolean"&&g===!1||l!=null&&l.defaultPrevented)return}n==null||n(l)},[n,r]),u=t||"button";return React.createElement(u,{ref:i,onClick:o,...s},a)}function cn(e){const[t,r]=c.useState(!1),{variantId:n,quantity:a=1,attributes:i,sellingPlanId:s,onClick:o,children:u,accessibleAddingToCartLabel:l,...g}=e,{status:h,linesAdd:y}=oe(),{selectedVariant:d}=mt(),f=n??(d==null?void 0:d.id)??"",S=n===null||f===""||d===null||t||g.disabled;c.useEffect(()=>{t&&h==="idle"&&r(!1)},[h,t]);const T=c.useCallback(()=>{r(!0),y([{quantity:a,merchandiseId:f||"",attributes:i,sellingPlanId:s}])},[y,a,f,i,s]);return k.createElement(k.Fragment,null,k.createElement(Ie,{...g,disabled:S,onClick:o,defaultOnClick:T},u),l?k.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?l: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"},ve={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"},St={hydrogen:"hydrogen",headless:"headless"},Tt={hydrogen:"6167201",headless:"12875497473"};function $(e,t){return{schema_id:e,payload:t,metadata:{event_created_at_ms:Date.now()}}}function F(e){const t={id:"",resource:null,resourceId:null,search:"",searchParams:new URLSearchParams,hash:""};if(typeof e!="string")return t;try{const{search:r,searchParams:n,pathname:a,hash:i}=new URL(e),s=a.split("/"),o=s[s.length-1],u=s[s.length-2];return!o||!u?t:{id:`${o}${r}${i}`||"",resource:u??null,resourceId:o||null,search:r,searchParams:n,hash:i}}catch{return t}}function j(e,t){return typeof e!="object"?{}:(Object.entries(e).forEach(([r,n])=>{n&&(t[r]=n)}),t)}function un(e){return typeof document>"u"?(console.error(`${e} should only be used within the useEffect callback or event handlers`),!0):!1}const ln="trekkie_storefront_page_view/1.4",dn="myshopify.dev";function Ct(e){const t=e,{id:r,resource:n}=F(t.resourceId),a=n?n.toLowerCase():void 0;return[$(ln,j({pageType:t.pageType,customerId:parseInt(F(t.customerId).id||"0"),resourceType:a,resourceId:parseInt(r)},fn(t)))]}function fn(e){return{appClientId:e.shopifySalesChannel?Tt[e.shopifySalesChannel]:Tt.headless,isMerchantRequest:hn(e.url),hydrogenSubchannelId:e.storefrontId||e.hydrogenSubchannelId||"0",isPersistentCookie:e.hasUserConsent,uniqToken:e.uniqueToken,visitToken:e.visitToken,microSessionId:we(),microSessionCount:1,url:e.url,path:e.path,search:e.search,referrer:e.referrer,title:e.title,shopId:parseInt(F(e.shopId).id),currency:e.currency,contentLanguage:e.acceptedLanguage||"en"}}function hn(e){if(typeof e!="string")return!1;const t=new URL(e).hostname;return t.indexOf(dn)!==-1||t==="localhost"}const gn="2025.1.2",G="custom_storefront_customer_tracking/1.2",At="page_rendered",wt="collection_page_rendered",bt="product_page_rendered",yn="product_added_to_cart",It="search_submitted";function fe(e){return{canonical_url:e.canonicalUrl||e.url,customer_id:parseInt(F(e.customerId).id||"0")}}function mn(e){const t=e,r=fe(t),n=t.pageType,a=[];switch(a.push($(G,j({event_name:At,...r},Z(t)))),n){case ve.collection:a.push($(G,j({event_name:wt,...r,collection_name:t.collectionHandle,collection_id:parseInt(F(t.collectionId).id)},Z(t))));break;case ve.product:a.push($(G,j({event_name:bt,...r,products:Le(t.products),total_value:t.totalValue},Z(t))));break;case ve.search:a.push($(G,j({event_name:It,...r,search_string:t.searchString},Z(t))));break}return a}function pn(e){const t=e,r=fe(t);return[$(G,j({event_name:At,...r},Z(t)))]}function En(e){const t=e,r=fe(t);return[$(G,j({event_name:wt,...r,collection_name:t.collectionHandle,collection_id:parseInt(F(t.collectionId).id)},Z(t)))]}function _n(e){const t=e,r=fe(t);return[$(G,j({event_name:bt,...r,products:Le(t.products),total_value:t.totalValue},Z(t)))]}function Sn(e){const t=e,r=fe(t);return[$(G,j({event_name:It,...r,search_string:t.searchString},Z(t)))]}function Tn(e){const t=e,r=F(t.cartId);return[$(G,j({event_name:yn,customerId:t.customerId,cart_token:r!=null&&r.id?`${r.id}`:null,total_value:t.totalValue,products:Le(t.products),customer_id:parseInt(F(t.customerId).id||"0")},Z(t)))]}function Z(e){return{source:e.shopifySalesChannel||St.headless,asset_version_id:e.assetVersionId||gn,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:we(),event_source_url:e.url,referrer:e.referrer,user_agent:e.userAgent,navigation_type:e.navigationType,navigation_api:e.navigationApi,shop_id:parseInt(F(e.shopId).id),currency:e.currency,ccpa_enforced:e.ccpaEnforced||!1,gdpr_enforced:e.gdprEnforced||!1,gdpr_enforced_as_string:e.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 r=j({variant_gid:t.variantGid,category:t.category,sku:t.sku,product_id:parseInt(F(t.productGid).id),variant_id:parseInt(F(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(r)}):[]}function Cn(e,t){const{eventName:r,payload:n}=e;if(!n.hasUserConsent)return Promise.resolve();let a=[];const i=n;return r===re.PAGE_VIEW?a=a.concat(Ct(i),mn(i)):r===re.ADD_TO_CART?a=a.concat(Tn(n)):r===re.PAGE_VIEW_2?a=a.concat(Ct(i),pn(i)):r===re.COLLECTION_VIEW?a=a.concat(En(i)):r===re.PRODUCT_VIEW?a=a.concat(_n(i)):r===re.SEARCH_VIEW&&(a=a.concat(Sn(i))),a.length?wn(a,t):Promise.resolve()}function An(){return typeof window>"u"||!window.navigator?!1:/Chrome-Lighthouse/.test(window.navigator.userAgent)}const vt="sendShopifyAnalytics request is unsuccessful";function wn(e,t){if(An())return Promise.resolve();const r={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(r)}).then(n=>{if(!n.ok)throw new Error("Response failed");return n.text()}).then(n=>{n&&JSON.parse(n).result.forEach(i=>{i.status!==200&&console.error(vt,`
271
+ `,re="2025-01",Vn="mock.shop",Ve=e=>e.includes(Vn);function Un({storeDomain:e,privateStorefrontToken:t,publicStorefrontToken:n,storefrontApiVersion:r=re,contentType:a}){if(!e)throw new Error(Ue+"`storeDomain` is required when creating a new Storefront client in production.");r!==re&&Nn(`The Storefront API version that you're using is different than the version this build of Hydrogen React is targeting.
272
+ You may run into unexpected errors if these versions don't match. Received version: "${r}"; expected version "${re}"`);const i=s=>{const o=(s==null?void 0:s.storeDomain)??e;return o.includes("://")?o:`https://${o}`};return{getShopifyDomain:i,getStorefrontApiUrl(s){const o=i(s),c=o+(o.endsWith("/")?"api":"/api");return Ve(o)?c:`${c}/${(s==null?void 0:s.storefrontApiVersion)??r}/graphql.json`},getPrivateTokenHeaders(s){if(!t&&!(s!=null&&s.privateStorefrontToken)&&!Ve(e))throw new Error(Ue+"You did not pass in a `privateStorefrontToken` while using `createStorefrontClient()` or `getPrivateTokenHeaders()`");return{"content-type":((s==null?void 0:s.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":(s==null?void 0:s.privateStorefrontToken)??t??"",...s!=null&&s.buyerIp?{"Shopify-Storefront-Buyer-IP":s.buyerIp}:{}}},getPublicTokenHeaders(s){if(!n&&!(s!=null&&s.publicStorefrontToken)&&!Ve(e))throw new Error(Ue+"You did not pass in a `publicStorefrontToken` while using `createStorefrontClient()` or `getPublicTokenHeaders()`");const o=(s==null?void 0:s.contentType)??a??"json";return ut(o,r,(s==null?void 0:s.publicStorefrontToken)??n??"")}}}function ut(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 lt=new Set,Ue="[h2:error:createStorefrontClient] ",Nn=(e,t="warn")=>{lt.has(e)||(console[t](`[h2:${t}:createStorefrontClient] `+e),lt.add(e))},dt={storeDomain:"test",storefrontToken:"abc123",storefrontApiVersion:re,countryIsoCode:"US",languageIsoCode:"EN",getStorefrontApiUrl(){return""},getPublicTokenHeaders(){return{}},getShopifyDomain(){return""}},ft=l.createContext(dt);function Mn(){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 Fn({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!==re&&console.warn(`<ShopifyProvider/>: This version of Hydrogen React is built for Shopify's Storefront API version ${re}, 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??Mn();function a(i){const s=(i==null?void 0:i.storeDomain)??t.storeDomain;return s.includes("://")?s:`https://${s}`}return{...t,sameDomainForStorefrontApi:r,getPublicTokenHeaders(i){return ut(i.contentType,t.storefrontApiVersion,i.storefrontToken??t.storefrontToken)},getShopifyDomain:a,getStorefrontApiUrl(i){const s=r&&typeof window<"u"?window.location.origin:a({storeDomain:(i==null?void 0:i.storeDomain)??t.storeDomain});return`${s}${s.endsWith("/")?"":"/"}api/${(i==null?void 0:i.storefrontApiVersion)??t.storefrontApiVersion}/graphql.json`}}},[t]);return React.createElement(ft.Provider,{value:n},e)}function ce(){const e=l.useContext(ft);if(!e)throw new Error("'useShop()' must be a descendent of <ShopifyProvider/>");return e}const Ne="shopifyCartId",ht="Shopify-Storefront-Id",gt="Shopify-Storefront-Y",yt="Shopify-Storefront-S",Te="_shopify_y",Ce="_shopify_s",Me="X-Shopify-VisitToken",Fe="X-Shopify-UniqueToken",Le={current:null};function ee(e){var n,r,a;let t;if(typeof window<"u"&&typeof window.performance<"u")try{const i=/^https?:\/\/([^/]+)(\/api\/(?:unstable|2\d{3}-\d{2})\/graphql\.json(?=$|\?))?/,s=performance.getEntriesByType("resource");let o;for(let c=s.length-1;c>=0;c--){const u=s[c];if(u.initiatorType!=="fetch")continue;const g=window.location.host,d=u.name.match(i);if(!d)continue;const[,h,f]=d;if(h===g||f&&(h==null?void 0:h.endsWith(`.${g}`))){const E=mt(u);if(E){o=E;break}}}if(o&&(t=o),t?Le.current=t:Le.current&&(t=Le.current),!t){const c=performance.getEntriesByType("navigation")[0];t=mt(c,!1)}}catch{}if(!t){const i=typeof e=="string"?e:typeof document<"u"?document.cookie:"";t={uniqueToken:((n=i.match(/\b_shopify_y=([^;]+)/))==null?void 0:n[1])||"",visitToken:((r=i.match(/\b_shopify_s=([^;]+)/))==null?void 0:r[1])||"",consent:((a=i.match(/\b_tracking_consent=([^;]+)/))==null?void 0:a[1])||""}}return t}function mt(e,t=!0){let n="",r="",a="";const i=e.serverTiming;if(i&&i.length>=3)for(let s=i.length-1;s>=0;s--){const{name:o,description:c}=i[s];if(!(!o||!c)&&(o==="_y"?n=c:o==="_s"?r=c:o==="_cmp"&&(a=c),n&&r&&a))break}return n&&r&&(!t||a)?{uniqueToken:n,visitToken:r,consent:a}:void 0}function Ln(){const{storefrontId:e,getPublicTokenHeaders:t,getStorefrontApiUrl:n,sameDomainForStorefrontApi:r}=ce();return l.useCallback(({query:a,variables:i})=>{const s=t({contentType:"json"});if(e&&(s[ht]=e),!r){const{uniqueToken:o,visitToken:c}=ee();o&&(s[gt]=o,s[Fe]=o),c&&(s[yt]=c,s[Me]=c)}return fetch(n(),{method:"POST",headers:s,body:JSON.stringify({query:a.toString(),variables:i})}).then(o=>o.json()).catch(o=>({data:void 0,errors:o==null?void 0:o.toString()}))},[t,e,n,r])}function xn({numCartLines:e,cartFragment:t,countryCode:n="US",languageCode:r="EN"}){const a=Ln(),i=l.useCallback(y=>a({query:kn(t),variables:{id:y,numCartLines:e,country:n,language:r}}),[a,t,e,n,r]),s=l.useCallback(y=>a({query:An(t),variables:{input:y,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),o=l.useCallback((y,E)=>a({query:wn(t),variables:{cartId:y,lines:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),c=l.useCallback((y,E)=>a({query:In(t),variables:{cartId:y,lines:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),u=l.useCallback((y,E)=>a({query:bn(t),variables:{cartId:y,lines:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),g=l.useCallback((y,E)=>a({query:vn(t),variables:{cartId:y,note:E,numCartLines:e,country:n,language:r}}),[a,t,e,n,r]),d=l.useCallback((y,E)=>a({query:Pn(t),variables:{cartId:y,buyerIdentity:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),h=l.useCallback((y,E)=>a({query:On(t),variables:{cartId:y,attributes:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]),f=l.useCallback((y,E)=>a({query:Rn(t),variables:{cartId:y,discountCodes:E,numCartLines:e,country:n,language:r}}),[t,n,a,e,r]);return l.useMemo(()=>({cartFetch:i,cartCreate:s,cartLineAdd:o,cartLineUpdate:c,cartLineRemove:u,noteUpdate:g,buyerIdentityUpdate:d,cartAttributesUpdate:h,discountCodesUpdate:f,cartFragment:t}),[i,s,o,c,u,g,d,h,f,t])}function Y(e,t){return{entry:[...(t==null?void 0:t.entryActions)||[],ne({lastValidCart:n=>n==null?void 0:n.cart}),"onCartActionEntry","onCartActionOptimisticUI",e],on:{RESOLVE:{target:(t==null?void 0:t.resolveTarget)||"idle",actions:[ne({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:[ne({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:ne({prevCart:n=>{},cart:n=>{},lastValidCart:n=>{},rawCartResult:n=>{},errors:n=>{}})}},exit:["onCartActionComplete",...(t==null?void 0:t.exitActions)||[]]}}const ue={CART_FETCH:{target:"cartFetching"},CART_CREATE:{target:"cartCreating"},CART_SET:{target:"idle",actions:[ne({rawCartResult:(e,t)=>t.payload.cart,cart:(e,t)=>xe(t.payload.cart)})]}},pt={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 qn(e){return rt({id:"Cart",initial:e?"idle":"uninitialized",context:{cart:e&&xe(e)},states:{uninitialized:{on:ue},cartCompleted:{on:ue},initializationError:{on:ue},idle:{on:{...ue,...pt}},error:{on:{...ue,...pt}},cartFetching:Y("cartFetchAction",{errorTarget:"initializationError"}),cartCreating:Y("cartCreateAction",{errorTarget:"initializationError"}),cartLineRemoving:Y("cartLineRemoveAction"),cartLineUpdating:Y("cartLineUpdateAction"),cartLineAdding:Y("cartLineAddAction"),noteUpdating:Y("noteUpdateAction"),buyerIdentityUpdating:Y("buyerIdentityUpdateAction"),cartAttributesUpdating:Y("cartAttributesUpdateAction"),discountCodesUpdating:Y("discountCodesUpdateAction")}})}function jn({numCartLines:e,onCartActionEntry:t,onCartActionOptimisticUI:n,onCartActionComplete:r,data:a,cartFragment:i,countryCode:s,languageCode:o}){const{cartFetch:c,cartCreate:u,cartLineAdd:g,cartLineUpdate:d,cartLineRemove:h,noteUpdate:f,buyerIdentityUpdate:y,cartAttributesUpdate:E,discountCodesUpdate:T}=xn({numCartLines:e,cartFragment:i,countryCode:s,languageCode:o}),b=l.useMemo(()=>qn(a),[a]),[I,A,v]=Sn(b,{actions:{cartFetchAction:async(p,m)=>{var w;if(m.type!=="CART_FETCH")return;const{data:_,errors:P}=await c((w=m==null?void 0:m.payload)==null?void 0:w.cartId),R=W(m,_==null?void 0:_.cart,P);A(R)},cartCreateAction:async(p,m)=>{var w;if(m.type!=="CART_CREATE")return;const{data:_,errors:P}=await u(m==null?void 0:m.payload),R=W(m,(w=_==null?void 0:_.cartCreate)==null?void 0:w.cart,P);A(R)},cartLineAddAction:async(p,m)=>{var w,O;if(m.type!=="CARTLINE_ADD"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await g(p.cart.id,m.payload.lines),R=W(m,(O=_==null?void 0:_.cartLinesAdd)==null?void 0:O.cart,P);A(R)},cartLineUpdateAction:async(p,m)=>{var w,O;if(m.type!=="CARTLINE_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await d(p.cart.id,m.payload.lines),R=W(m,(O=_==null?void 0:_.cartLinesUpdate)==null?void 0:O.cart,P);A(R)},cartLineRemoveAction:async(p,m)=>{var w,O;if(m.type!=="CARTLINE_REMOVE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await h(p.cart.id,m.payload.lines),R=W(m,(O=_==null?void 0:_.cartLinesRemove)==null?void 0:O.cart,P);A(R)},noteUpdateAction:async(p,m)=>{var w,O;if(m.type!=="NOTE_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await f(p.cart.id,m.payload.note),R=W(m,(O=_==null?void 0:_.cartNoteUpdate)==null?void 0:O.cart,P);A(R)},buyerIdentityUpdateAction:async(p,m)=>{var w,O;if(m.type!=="BUYER_IDENTITY_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await y(p.cart.id,m.payload.buyerIdentity),R=W(m,(O=_==null?void 0:_.cartBuyerIdentityUpdate)==null?void 0:O.cart,P);A(R)},cartAttributesUpdateAction:async(p,m)=>{var w,O;if(m.type!=="CART_ATTRIBUTES_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await E(p.cart.id,m.payload.attributes),R=W(m,(O=_==null?void 0:_.cartAttributesUpdate)==null?void 0:O.cart,P);A(R)},discountCodesUpdateAction:async(p,m)=>{var w,O;if(m.type!=="DISCOUNT_CODES_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:_,errors:P}=await T(p.cart.id,m.payload.discountCodes),R=W(m,(O=_==null?void 0:_.cartDiscountCodesUpdate)==null?void 0:O.cart,P);A(R)},...t&&{onCartActionEntry:(p,m)=>{Hn(m)&&t(p,m)}},...n&&{onCartActionOptimisticUI:ne((p,m)=>n(p,m))},...r&&{onCartActionComplete:(p,m)=>{$n(m)&&r(p,m)}}}});return l.useMemo(()=>[I,A,v],[I,A,v])}function xe(e){return{...e,lines:Q(e==null?void 0:e.lines),note:e.note??void 0}}function W(e,t,n){return n?{type:"ERROR",payload:{errors:n,cartActionEvent:e}}:t?{type:"RESOLVE",payload:{cart:xe(t),rawCartResult:t,cartActionEvent:e}}:{type:"CART_COMPLETED",payload:{cartActionEvent:e}}}function Hn(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 $n(e){return e.type==="RESOLVE"||e.type==="ERROR"||e.type==="CART_COMPLETED"}const Et=l.createContext(null);function ae(){const e=l.useContext(Et);if(!e)throw new Error("Expected a Cart Context, but no Cart Context was found");return e}function Bn({children:e,numCartLines:t,onCreate:n,onLineAdd:r,onLineRemove:a,onLineUpdate:i,onNoteUpdate:s,onBuyerIdentityUpdate:o,onAttributesUpdate:c,onDiscountCodesUpdate:u,onCreateComplete:g,onLineAddComplete:d,onLineRemoveComplete:h,onLineUpdateComplete:f,onNoteUpdateComplete:y,onBuyerIdentityUpdateComplete:E,onAttributesUpdateComplete:T,onDiscountCodesUpdateComplete:b,data:I,cartFragment:A=Dn,customerAccessToken:v,countryCode:p,languageCode:m}){var en,tn,nn,rn,an,on,sn;const _=ce();if(!_)throw new Error("<CartProvider> needs to be a descendant of <ShopifyProvider>");p=(p??_.countryIsoCode??"US").toUpperCase(),m=(m??_.languageIsoCode??"EN").toUpperCase(),p&&(p=p.toUpperCase());const[P,R]=l.useState(p),[w,O]=l.useState(v),H=l.useRef(!1);(P!==p||w!==v)&&(R(p),O(v),H.current=!1);const[k,$]=jn({numCartLines:t,data:I,cartFragment:A,countryCode:p,languageCode:m,onCartActionEntry(C,N){try{switch(N.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 s==null?void 0:s();case"BUYER_IDENTITY_UPDATE":return o==null?void 0:o();case"CART_ATTRIBUTES_UPDATE":return c==null?void 0:c();case"DISCOUNT_CODES_UPDATE":return u==null?void 0:u()}}catch(F){console.error("Cart entry action failed",F)}},onCartActionOptimisticUI(C,N){var F,K,M,_e;if(!C.cart)return{...C};switch(N.type){case"CARTLINE_REMOVE":return{...C,cart:{...C.cart,lines:(K=(F=C==null?void 0:C.cart)==null?void 0:F.lines)==null?void 0:K.filter(L=>(L==null?void 0:L.id)&&!N.payload.lines.includes(L==null?void 0:L.id))}};case"CARTLINE_UPDATE":return{...C,cart:{...C.cart,lines:(_e=(M=C==null?void 0:C.cart)==null?void 0:M.lines)==null?void 0:_e.map(L=>{const Qe=N.payload.lines.find(({id:ga})=>ga===(L==null?void 0:L.id));return Qe&&Qe.quantity?{...L,quantity:Qe.quantity}:L})}}}return{...C}},onCartActionComplete(C,N){const F=N.payload.cartActionEvent;try{switch(N.type){case"RESOLVE":switch(F.type){case"CART_CREATE":return g==null?void 0:g();case"CARTLINE_ADD":return d==null?void 0:d();case"CARTLINE_REMOVE":return h==null?void 0:h();case"CARTLINE_UPDATE":return f==null?void 0:f();case"NOTE_UPDATE":return y==null?void 0:y();case"BUYER_IDENTITY_UPDATE":return Gn(C,F)&&(H.current=!0),E==null?void 0:E();case"CART_ATTRIBUTES_UPDATE":return T==null?void 0:T();case"DISCOUNT_CODES_UPDATE":return b==null?void 0:b()}}}catch(K){console.error("onCartActionComplete failed",K)}}}),X=l.useRef(!1),[me,V]=l.useState(!1),se=k.matches("cartCompleted"),pe=(k.value==="idle"||k.value==="error"||k.value==="cartCompleted")&&p!==((nn=(tn=(en=k==null?void 0:k.context)==null?void 0:en.cart)==null?void 0:tn.buyerIdentity)==null?void 0:nn.countryCode)&&!k.context.errors,Ee=l.useRef(!1);l.useEffect(()=>{if(!X.current&&!Ee.current){if(!I&&qe("localStorage")){Ee.current=!0;try{const C=window.localStorage.getItem(Ne);C&&$({type:"CART_FETCH",payload:{cartId:C}})}catch(C){console.warn("error fetching cartId"),console.warn(C)}}X.current=!0,V(!0)}},[I,X,$]),l.useEffect(()=>{!pe||H.current||$({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:{countryCode:p,customerAccessToken:v}}})},[p,v,pe,H,$]);const B=l.useCallback(C=>{if(!X.current)return console.warn("Cart isn't ready yet");$(C)},[$]);l.useEffect(()=>{var C,N,F;if((N=(C=k==null?void 0:k.context)==null?void 0:C.cart)!=null&&N.id&&qe("localStorage"))try{window.localStorage.setItem(Ne,(F=k.context.cart)==null?void 0:F.id)}catch(K){console.warn("Failed to save cartId to localStorage",K)}},[(an=(rn=k==null?void 0:k.context)==null?void 0:rn.cart)==null?void 0:an.id]),l.useEffect(()=>{if(se&&qe("localStorage"))try{window.localStorage.removeItem(Ne)}catch(C){console.warn("Failed to delete cartId from localStorage",C)}},[se]);const Ke=l.useCallback(C=>{var N,F;p&&!((N=C.buyerIdentity)!=null&&N.countryCode)&&(C.buyerIdentity==null&&(C.buyerIdentity={}),C.buyerIdentity.countryCode=p),v&&!((F=C.buyerIdentity)!=null&&F.customerAccessToken)&&(C.buyerIdentity==null&&(C.buyerIdentity={}),C.buyerIdentity.customerAccessToken=v),B({type:"CART_CREATE",payload:C})},[p,v,B]),D=Wn(k),ha=l.useMemo(()=>{var C,N,F,K;return{...((C=D==null?void 0:D.context)==null?void 0:C.cart)??{lines:[],attributes:[]},status:Yn(D.value),error:(N=D==null?void 0:D.context)==null?void 0:N.errors,totalQuantity:((K=(F=D==null?void 0:D.context)==null?void 0:F.cart)==null?void 0:K.totalQuantity)??0,cartCreate:Ke,cartReady:me,linesAdd(M){var _e,L;(L=(_e=D==null?void 0:D.context)==null?void 0:_e.cart)!=null&&L.id?B({type:"CARTLINE_ADD",payload:{lines:M}}):Ke({lines:M})},linesRemove(M){B({type:"CARTLINE_REMOVE",payload:{lines:M}})},linesUpdate(M){B({type:"CARTLINE_UPDATE",payload:{lines:M}})},noteUpdate(M){B({type:"NOTE_UPDATE",payload:{note:M}})},buyerIdentityUpdate(M){B({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:M}})},cartAttributesUpdate(M){B({type:"CART_ATTRIBUTES_UPDATE",payload:{attributes:M}})},discountCodesUpdate(M){B({type:"DISCOUNT_CODES_UPDATE",payload:{discountCodes:M}})},cartFragment:A}},[Ke,me,(on=D==null?void 0:D.context)==null?void 0:on.cart,(sn=D==null?void 0:D.context)==null?void 0:sn.errors,D.value,A,B]);return React.createElement(Et.Provider,{value:ha},e)}function Yn(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 Wn(e){const[t,n]=l.useTransition(),[r,a]=l.useState(e),i=l.useRef(!1);t&&(i.current=!0);const s=l.useRef(!1);return!t&&i.current&&(s.current=!0),l.useEffect(()=>{n(()=>{s.current||a(e)})},[e]),s.current?e:r}function qe(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 Gn(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 _t=l.createContext(null);function Zn({children:e,data:t,initialVariantId:n}){const r=l.useMemo(()=>Q(t.variants??{}),[t.variants]);if(!Qn(r))throw new Error("<ProductProvider/> requires 'product.variants.nodes' or 'product.variants.edges'");const a=l.useMemo(()=>Kn(r),[r]),[i,s]=l.useState(()=>Ct(n,r)),[o,c]=l.useState(()=>wt(i));l.useEffect(()=>{const T=Ct(n,r);s(T),c(wt(T))},[n,r]);const u=l.useCallback((T,b)=>{c(I=>{const A={...I,[T]:b};return s(Tt(r,A)),A})},[c,r]),g=l.useCallback((T,b)=>{const I=Tt(r,{...o,[T]:b});return(I==null?void 0:I.availableForSale)??!0},[o,r]),d=l.useMemo(()=>Q(t.sellingPlanGroups??{}).map(T=>({...T,sellingPlans:Q((T==null?void 0:T.sellingPlans)??{})})),[t.sellingPlanGroups]),[h,f]=l.useState(void 0),y=l.useMemo(()=>{var T,b;if(!(!i||!h)){if(!((T=i.sellingPlanAllocations)!=null&&T.nodes)&&!((b=i.sellingPlanAllocations)!=null&&b.edges))throw new Error("<ProductProvider/>: You must include 'sellingPlanAllocations.nodes' or 'sellingPlanAllocations.edges' in your variants in order to calculate selectedSellingPlanAllocation");return Q(i.sellingPlanAllocations).find(I=>{var A;return((A=I==null?void 0:I.sellingPlan)==null?void 0:A.id)===h.id})}},[i,h]),E=l.useMemo(()=>({product:t,variants:r,variantsConnection:t.variants,options:a,selectedVariant:i,setSelectedVariant:s,selectedOptions:o,setSelectedOption:u,setSelectedOptions:c,isOptionInStock:g,selectedSellingPlan:h,setSelectedSellingPlan:f,selectedSellingPlanAllocation:y,sellingPlanGroups:d,sellingPlanGroupsConnection:t.sellingPlanGroups}),[t,g,a,o,h,y,i,d,u,r]);return React.createElement(_t.Provider,{value:E},e)}function St(){const e=l.useContext(_t);if(!e)throw new Error("'useProduct' must be a child of <ProductProvider />");return e}function Tt(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,s])=>{var o;return(o=a==null?void 0:a.selectedOptions)==null?void 0:o.some(c=>(c==null?void 0:c.name)===i&&(c==null?void 0:c.value)===s)}))}function Kn(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 Ct(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 wt(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 Qn(e){return!(!e||!Array.isArray(e))}function we(e){const{as:t,onClick:n,defaultOnClick:r,children:a,buttonRef:i,...s}=e,o=l.useCallback(u=>{if(n){const g=n(u);if(typeof g=="boolean"&&g===!1||u!=null&&u.defaultPrevented)return}r==null||r(u)},[r,n]),c=t||"button";return React.createElement(c,{ref:i,onClick:o,...s},a)}function Jn(e){const[t,n]=l.useState(!1),{variantId:r,quantity:a=1,attributes:i,sellingPlanId:s,onClick:o,children:c,accessibleAddingToCartLabel:u,...g}=e,{status:d,linesAdd:h}=ae(),{selectedVariant:f}=St(),y=r??(f==null?void 0:f.id)??"",E=r===null||y===""||f===null||t||g.disabled;l.useEffect(()=>{t&&d==="idle"&&n(!1)},[d,t]);const T=l.useCallback(()=>{n(!0),h([{quantity:a,merchandiseId:y||"",attributes:i,sellingPlanId:s}])},[h,a,y,i,s]);return U.createElement(U.Fragment,null,U.createElement(we,{...g,disabled:E,onClick:o,defaultOnClick:T},c),u?U.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?u:null):null)}const te={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"},Ae={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"},At={hydrogen:"hydrogen",headless:"headless"},bt={hydrogen:"6167201",headless:"12875497473"};function j(e,t){return{schema_id:e,payload:t,metadata:{event_created_at_ms:Date.now()}}}function x(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),s=a.split("/"),o=s[s.length-1],c=s[s.length-2];return!o||!c?t:{id:`${o}${n}${i}`||"",resource:c??null,resourceId:o||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 Xn(e){return typeof document>"u"?(console.error(`${e} should only be used within the useEffect callback or event handlers`),!0):!1}const It="xxxx-4xxx-xxxx-xxxxxxxxxxxx";function be(){let e="";try{const t=window.crypto,n=new Uint16Array(31);t.getRandomValues(n);let r=0;e=It.replace(/[x]/g,a=>{const i=n[r]%16,s=a==="x"?i:i&3|8;return r++,s.toString(16)}).toUpperCase()}catch{e=It.replace(/[x]/g,n=>{const r=Math.random()*16|0;return(n==="x"?r:r&3|8).toString(16)}).toUpperCase()}return`${zn()}-${e}`}function zn(){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 er(e){const t=ee(e);return{[Te]:t.uniqueToken,[Ce]:t.visitToken}}const tr="trekkie_storefront_page_view/1.4",nr="myshopify.dev";function vt(e){const t=e,{id:n,resource:r}=x(t.resourceId),a=r?r.toLowerCase():void 0;return[j(tr,q({pageType:t.pageType,customerId:parseInt(x(t.customerId).id||"0"),resourceType:a,resourceId:parseInt(n)},rr(t)))]}function rr(e){return{appClientId:e.shopifySalesChannel?bt[e.shopifySalesChannel]:bt.headless,isMerchantRequest:ar(e.url),hydrogenSubchannelId:e.storefrontId||e.hydrogenSubchannelId||"0",isPersistentCookie:e.hasUserConsent,uniqToken:e.uniqueToken,visitToken:e.visitToken,microSessionId:be(),microSessionCount:1,url:e.url,path:e.path,search:e.search,referrer:e.referrer,title:e.title,shopId:parseInt(x(e.shopId).id),currency:e.currency,contentLanguage:e.acceptedLanguage||"en"}}function ar(e){if(typeof e!="string")return!1;const t=new URL(e).hostname;return t.indexOf(nr)!==-1||t==="localhost"}const ir="2025.1.4",G="custom_storefront_customer_tracking/1.2",Pt="page_rendered",Ot="collection_page_rendered",Rt="product_page_rendered",or="product_added_to_cart",kt="search_submitted";function le(e){return{canonical_url:e.canonicalUrl||e.url,customer_id:parseInt(x(e.customerId).id||"0")}}function sr(e){const t=e,n=le(t),r=t.pageType,a=[];switch(a.push(j(G,q({event_name:Pt,...n},Z(t)))),r){case Ae.collection:a.push(j(G,q({event_name:Ot,...n,collection_name:t.collectionHandle,collection_id:parseInt(x(t.collectionId).id)},Z(t))));break;case Ae.product:a.push(j(G,q({event_name:Rt,...n,products:je(t.products),total_value:t.totalValue},Z(t))));break;case Ae.search:a.push(j(G,q({event_name:kt,...n,search_string:t.searchString},Z(t))));break}return a}function cr(e){const t=e,n=le(t);return[j(G,q({event_name:Pt,...n},Z(t)))]}function ur(e){const t=e,n=le(t);return[j(G,q({event_name:Ot,...n,collection_name:t.collectionHandle,collection_id:parseInt(x(t.collectionId).id)},Z(t)))]}function lr(e){const t=e,n=le(t);return[j(G,q({event_name:Rt,...n,products:je(t.products),total_value:t.totalValue},Z(t)))]}function dr(e){const t=e,n=le(t);return[j(G,q({event_name:kt,...n,search_string:t.searchString},Z(t)))]}function fr(e){const t=e,n=x(t.cartId);return[j(G,q({event_name:or,customerId:t.customerId,cart_token:n!=null&&n.id?`${n.id}`:null,total_value:t.totalValue,products:je(t.products),customer_id:parseInt(x(t.customerId).id||"0")},Z(t)))]}function Z(e){return{source:e.shopifySalesChannel||At.headless,asset_version_id:e.assetVersionId||ir,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:be(),event_source_url:e.url,referrer:e.referrer,user_agent:e.userAgent,navigation_type:e.navigationType,navigation_api:e.navigationApi,shop_id:parseInt(x(e.shopId).id),currency:e.currency,ccpa_enforced:e.ccpaEnforced||!1,gdpr_enforced:e.gdprEnforced||!1,gdpr_enforced_as_string:e.gdprEnforced?"true":"false",analytics_allowed:e.analyticsAllowed||!1,marketing_allowed:e.marketingAllowed||!1,sale_of_data_allowed:e.saleOfDataAllowed||!1}}function je(e){return e?e.map(t=>{const n=q({variant_gid:t.variantGid,category:t.category,sku:t.sku,product_id:parseInt(x(t.productGid).id),variant_id:parseInt(x(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 hr(e,t){const{eventName:n,payload:r}=e;if(!r.hasUserConsent)return Promise.resolve();let a=[];const i=r;return n===te.PAGE_VIEW?a=a.concat(vt(i),sr(i)):n===te.ADD_TO_CART?a=a.concat(fr(r)):n===te.PAGE_VIEW_2?a=a.concat(vt(i),cr(i)):n===te.COLLECTION_VIEW?a=a.concat(ur(i)):n===te.PRODUCT_VIEW?a=a.concat(lr(i)):n===te.SEARCH_VIEW&&(a=a.concat(dr(i))),a.length?yr(a,t):Promise.resolve()}function gr(){return typeof window>"u"||!window.navigator?!1:/Chrome-Lighthouse/.test(window.navigator.userAgent)}const Dt="sendShopifyAnalytics request is unsuccessful";function yr(e,t){if(gr())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(Dt,`
273
273
 
274
- `,i.message)})}).catch(n=>{console.error(vt,n)})}catch{return Promise.resolve()}}function bn(){if(un("getClientBrowserParameters"))return{uniqueToken:"",visitToken:"",url:"",path:"",search:"",referrer:"",title:"",userAgent:"",navigationType:"",navigationApi:""};const[e,t]=Pn(),r=be(document.cookie);return{uniqueToken:r[J],visitToken:r[X],url:location.href,path:location.pathname,search:location.search,referrer:document.referrer,title:document.title,userAgent:navigator.userAgent,navigationType:e,navigationApi:t}}function In(){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 vn(){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 r=performance.navigation.type;switch(r){case PerformanceNavigation.TYPE_NAVIGATE:return"navigate";case PerformanceNavigation.TYPE_RELOAD:return"reload";case PerformanceNavigation.TYPE_BACK_FORWARD:return"back_forward";default:return`unknown: ${r}`}}}catch{}}function Pn(){try{let e="PerformanceNavigationTiming",t=In();return t||(t=vn(),e="performance.navigation"),t?[t,e]:["unknown","unknown"]}catch{}return["error","error"]}function On(e){const{cartCreate:t,checkoutUrl:r}=oe(),[n,a]=c.useState(!1),{quantity:i,variantId:s,sellingPlanId:o,onClick:u,attributes:l,children:g,...h}=e;c.useEffect(()=>{n&&r&&(window.location.href=r)},[n,r]);const y=c.useCallback(()=>{a(!0),t({lines:[{quantity:i??1,merchandiseId:s,attributes:l,sellingPlanId:o}]})},[t,i,s,l,o]);return React.createElement(Ie,{disabled:n??h.disabled,...h,onClick:u,defaultOnClick:y},g)}function Rn(e){const[t,r]=c.useState(!1),{status:n,checkoutUrl:a}=oe(),{children:i,...s}=e;return c.useEffect(()=>{t&&a&&n==="idle"&&(window.location.href=a)},[t,n,a]),React.createElement(Ie,{...s,disabled:t||s.disabled,onClick:()=>r(!0)},i)}function Pt(e){const{countryIsoCode:t,languageIsoCode:r}=le(),n=r.includes("_")?r.replace("_","-"):`${r}-${t}`;if(!n)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),{defaultFormatter:i,nameFormatter:s,narrowSymbolFormatter:o,withoutTrailingZerosFormatter:u,withoutCurrencyFormatter:l,withoutTrailingZerosOrCurrencyFormatter:g}=c.useMemo(()=>{const d={style:"currency",currency:e.currencyCode};return{defaultFormatter:se(n,d),nameFormatter:se(n,{...d,currencyDisplay:"name"}),narrowSymbolFormatter:se(n,{...d,currencyDisplay:"narrowSymbol"}),withoutTrailingZerosFormatter:se(n,{...d,minimumFractionDigits:0,maximumFractionDigits:0}),withoutCurrencyFormatter:se(n),withoutTrailingZerosOrCurrencyFormatter:se(n,{minimumFractionDigits:0,maximumFractionDigits:0})}},[e.currencyCode,n]),h=d=>d.type==="currency",y=c.useMemo(()=>({original:()=>e,currencyCode:()=>e.currencyCode,localizedString:()=>i().format(a),parts:()=>i().formatToParts(a),withoutTrailingZeros:()=>a%1===0?u().format(a):i().format(a),withoutTrailingZerosAndCurrency:()=>a%1===0?g().format(a):l().format(a),currencyName:()=>{var d;return((d=s().formatToParts(a).find(h))==null?void 0:d.value)??e.currencyCode},currencySymbol:()=>{var d;return((d=i().formatToParts(a).find(h))==null?void 0:d.value)??e.currencyCode},currencyNarrowSymbol:()=>{var d;return((d=o().formatToParts(a).find(h))==null?void 0:d.value)??""},amount:()=>i().formatToParts(a).filter(d=>["decimal","fraction","group","integer","literal"].includes(d.type)).map(d=>d.value).join("")}),[e,a,s,i,o,l,u,g]);return c.useMemo(()=>new Proxy(y,{get:(d,f)=>{var S;return(S=Reflect.get(d,f))==null?void 0:S.call(null)}}),[y])}const Ot=new Map;function se(e,t){const r=JSON.stringify([e,t]);return function(){let n=Ot.get(r);return n||(n=new Intl.NumberFormat(e,t),Ot.set(r,n)),n}}function Pe({data:e,as:t,withoutCurrency:r,withoutTrailingZeros:n,measurement:a,measurementSeparator:i="/",...s}){if(!Dn(e))throw new Error("<Money/> needs a valid 'data' prop that has 'amount' and 'currencyCode'");const o=Pt(e),u=t??"div";let l=o.localizedString;return(r||n)&&(r&&!n?l=o.amount:!r&&n?l=o.withoutTrailingZeros:l=o.withoutTrailingZerosAndCurrency),React.createElement(u,{...s},l,a&&a.referenceUnit&&React.createElement(React.Fragment,null,i,a.referenceUnit))}function Dn(e){return typeof e.amount=="string"&&!!e.amount&&typeof e.currencyCode=="string"&&!!e.currencyCode}function Vn(e){const{cost:t}=oe(),{amountType:r="total",children:n,...a}=e;let i;return r=="total"?i=t==null?void 0:t.totalAmount:r=="subtotal"?i=t==null?void 0:t.subtotalAmount:r=="tax"?i=t==null?void 0:t.totalTaxAmount:r=="duty"&&(i=t==null?void 0:t.totalDutyAmount),i==null?null:React.createElement(Pe,{...a,data:i},n)}const Rt=c.createContext(null);function xe(){const e=c.useContext(Rt);if(e==null)throw new Error("Expected a cart line context but none was found");return e}function Un({children:e,line:t}){return React.createElement(Rt.Provider,{value:t},e)}function kn(e){const t=xe(),{as:r,...n}=e,a=r||"span";return React.createElement(a,{...n},t.quantity)}function Nn(e){const{status:t,linesRemove:r,linesUpdate:n}=oe(),a=xe(),{children:i,adjust:s,onClick:o,...u}=e,l=c.useCallback(()=>{if(s==="remove"){r([(a==null?void 0:a.id)??""]);return}const h=s==="decrease"?((a==null?void 0:a.quantity)??0)-1:((a==null?void 0:a.quantity)??0)+1;if(h<=0){r([(a==null?void 0:a.id)??""]);return}const y={id:(a==null?void 0:a.id)??"",quantity:h,attributes:(a==null?void 0:a.attributes)??[]};n([y])},[s,a==null?void 0:a.attributes,a==null?void 0:a.id,a==null?void 0:a.quantity,r,n]),g=u.disabled;return React.createElement(Ie,{...u,onClick:o,defaultOnClick:l,disabled:typeof g<"u"?g:t!=="idle"},i)}const Mn={DateTime:"string",Decimal:"string",HTML:"string",URL:"string",Color:"string",UnsignedInt64:"string"},Ln={DateTime:"string",Decimal:"string",HTML:"string",ISO8601DateTime:"string",URL:"string",UnsignedInt64:"string"},Dt=c.forwardRef((e,t)=>{const{data:r,options:n,id:a=r.id,frameBorder:i="0",allow:s="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:o=!0,loading:u="lazy",...l}=e;if(!r.embedUrl)throw new Error("<ExternalVideo/> requires the 'embedUrl' property");let g=r.embedUrl;if(n){const h=new URL(r.embedUrl);for(const[y,d]of Object.entries(n))typeof d>"u"||h.searchParams.set(y,d.toString());g=h.toString()}return React.createElement("iframe",{...l,id:a??r.embedUrl,title:r.alt??r.id??"external video",frameBorder:i,allow:s,allowFullScreen:o,src:g,loading:u,ref:t})}),Fe=",",ce={OPTION:":",END_OF_PREFIX:",",SEQUENCE_GAP:" ",RANGE:"-"},je=(()=>{const e=new Map;return function(t,r){var n;if(t.length===0)return!1;if(!e.has(r)){const a=new Set;for(const i of Vt(r)){a.add(i.join(Fe));for(let s=0;s<i.length;s++)a.add(i.slice(0,s+1).join(Fe))}e.set(r,a)}return!!((n=e.get(r))!=null&&n.has(t.join(Fe)))}})();function Vt(e){if(!e)return[];if(e.startsWith("v1_"))return Fn(xn(e));throw new Error("Unsupported option value encoding")}const xn=e=>e.replace(/^v1_/,"");function Fn(e){const t=/[ :,-]/g;let r=0,n;const a=[],i=[];let s=0,o=null;for(;n=t.exec(e);){const l=n[0],g=Number.parseInt(e.slice(r,n.index))||0;if(o!==null){for(;o<g;o++)i[s]=o,a.push([...i]);o=null}i[s]=g,l===ce.RANGE?o=g:l===ce.OPTION?s++:((l===ce.SEQUENCE_GAP||l===ce.END_OF_PREFIX&&e[n.index-1]!==ce.END_OF_PREFIX)&&a.push([...i]),l===ce.END_OF_PREFIX&&(i.pop(),s--)),r=t.lastIndex}const u=e.match(/\d+$/g);if(u){const l=parseInt(u[0]);if(o!=null)for(;o<=l;o++)i[s]=o,a.push([...i]);else a.push([l])}return a}function jn(e){return Object.assign({},...e.map(t=>({[t.name]:Object.assign({},...t!=null&&t.optionValues?t.optionValues.map((r,n)=>({[r.name]:n})):[])})))}function he(e){return Object.assign({},...e.map(t=>({[t.name]:t.value})))}function $e(e){return JSON.stringify(he(e))}function Ut(e){return Array.isArray(e)?JSON.stringify(Object.assign({},...e.map(t=>({[t.name]:t.value})))):JSON.stringify(e)}function $n(e,t){return Object.keys(e).map(n=>t[n]?t[n][e[n]]:null).filter(n=>n!==null)}function qn(e){return Object.assign({},...e.map(t=>({[Ut(t.selectedOptions||[])]:t})))}const kt=["options","selectedOrFirstAvailableVariant","adjacentVariants"],Hn=["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 r=!0;const n=Object.keys(e);if((t?[...kt,...Hn]:kt).forEach(i=>{n.includes(i)||(r=z(i))}),e.options){const i=e==null?void 0:e.options[0];if(t&&!(i!=null&&i.name)&&(r=z("options.name")),(a=e==null?void 0:e.options[0])!=null&&a.optionValues){let s=e.options[0].optionValues[0];t&&!(s!=null&&s.name)&&(r=z("options.optionValues.name")),s=e.options[0].optionValues.filter(o=>!!(o!=null&&o.firstSelectableVariant))[0],s!=null&&s.firstSelectableVariant&&(r=qe(s.firstSelectableVariant,"options.optionValues.firstSelectableVariant",r,t))}else r=z("options.optionValues")}return e.selectedOrFirstAvailableVariant&&(r=qe(e.selectedOrFirstAvailableVariant,"selectedOrFirstAvailableVariant",r,t)),e.adjacentVariants&&e.adjacentVariants[0]&&(r=qe(e.adjacentVariants[0],"adjacentVariants",r,t)),r?e:{}}function qe(e,t,r,n){var i;let a=r;if(n&&!((i=e.product)!=null&&i.handle)&&(a=z(`${t}.product.handle`)),e.selectedOptions){const s=e.selectedOptions[0];s!=null&&s.name||(a=z(`${t}.selectedOptions.name`)),s!=null&&s.value||(a=z(`${t}.selectedOptions.value`))}else a=z(`${t}.selectedOptions`);return a}function Bn(e){const t=Nt(e);if(!t.options)return[];const r={};t.options.map(a=>{var i;(i=a.optionValues)==null||i.map(s=>{if(s.firstSelectableVariant){const o=$e(s.firstSelectableVariant.selectedOptions);r[o]=s.firstSelectableVariant}})}),t.adjacentVariants.map(a=>{const i=$e(a.selectedOptions);r[i]=a});const n=t.selectedOrFirstAvailableVariant;if(n){const a=$e(n.selectedOptions);r[a]=n}return Object.values(r)}function Yn(e){const t=Nt(e,!0);if(!t.options)return[];const{options:r,selectedOrFirstAvailableVariant:n,adjacentVariants:a,encodedVariantExistence:i,encodedVariantAvailability:s,handle:o}=t,u=n==null?void 0:n.selectedOptions.map(f=>f.name),l=r.filter(f=>u&&u.indexOf(f.name)>=0),g=jn(r),h=qn(n?[n,...a]:a),y=he(n?n.selectedOptions:[]);return l.map((f,S)=>({...f,optionValues:f.optionValues.map(T=>{var I;const w={...y};w[f.name]=T.name;const v=Ut(w||[]),R=$n(w||[],g).slice(0,S+1),m=je(R,i||""),p=je(R,s||""),_=h[v]||T.firstSelectableVariant;let P={};_&&(P=he(_.selectedOptions||[]));const O=new URLSearchParams(P),A=((I=_==null?void 0:_.product)==null?void 0:I.handle)||o;return{...T,variant:_,handle:A,variantUriQuery:O.toString(),selected:y[f.name]===T.name,exists:m,available:p,isDifferentProduct:A!==o}})}))}const Wn=`#graphql
274
+ `,i.message)})}).catch(r=>{console.error(Dt,r)})}catch{return Promise.resolve()}}function mr(){if(Xn("getClientBrowserParameters"))return{uniqueToken:"",visitToken:"",url:"",path:"",search:"",referrer:"",title:"",userAgent:"",navigationType:"",navigationApi:""};const[e,t]=_r(),n=ee();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 pr(){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 Er(){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 _r(){try{let e="PerformanceNavigationTiming",t=pr();return t||(t=Er(),e="performance.navigation"),t?[t,e]:["unknown","unknown"]}catch{}return["error","error"]}function Sr(e){const{cartCreate:t,checkoutUrl:n}=ae(),[r,a]=l.useState(!1),{quantity:i,variantId:s,sellingPlanId:o,onClick:c,attributes:u,children:g,...d}=e;l.useEffect(()=>{r&&n&&(window.location.href=n)},[r,n]);const h=l.useCallback(()=>{a(!0),t({lines:[{quantity:i??1,merchandiseId:s,attributes:u,sellingPlanId:o}]})},[t,i,s,u,o]);return React.createElement(we,{disabled:r??d.disabled,...d,onClick:c,defaultOnClick:h},g)}function Tr(e){const[t,n]=l.useState(!1),{status:r,checkoutUrl:a}=ae(),{children:i,...s}=e;return l.useEffect(()=>{t&&a&&r==="idle"&&(window.location.href=a)},[t,r,a]),React.createElement(we,{...s,disabled:t||s.disabled,onClick:()=>n(!0)},i)}function Vt(e){const{countryIsoCode:t,languageIsoCode:n}=ce(),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),{defaultFormatter:i,nameFormatter:s,narrowSymbolFormatter:o,withoutTrailingZerosFormatter:c,withoutCurrencyFormatter:u,withoutTrailingZerosOrCurrencyFormatter:g}=l.useMemo(()=>{const f={style:"currency",currency:e.currencyCode};return{defaultFormatter:ie(r,f),nameFormatter:ie(r,{...f,currencyDisplay:"name"}),narrowSymbolFormatter:ie(r,{...f,currencyDisplay:"narrowSymbol"}),withoutTrailingZerosFormatter:ie(r,{...f,minimumFractionDigits:0,maximumFractionDigits:0}),withoutCurrencyFormatter:ie(r),withoutTrailingZerosOrCurrencyFormatter:ie(r,{minimumFractionDigits:0,maximumFractionDigits:0})}},[e.currencyCode,r]),d=f=>f.type==="currency",h=l.useMemo(()=>({original:()=>e,currencyCode:()=>e.currencyCode,localizedString:()=>i().format(a),parts:()=>i().formatToParts(a),withoutTrailingZeros:()=>a%1===0?c().format(a):i().format(a),withoutTrailingZerosAndCurrency:()=>a%1===0?g().format(a):u().format(a),currencyName:()=>{var f;return((f=s().formatToParts(a).find(d))==null?void 0:f.value)??e.currencyCode},currencySymbol:()=>{var f;return((f=i().formatToParts(a).find(d))==null?void 0:f.value)??e.currencyCode},currencyNarrowSymbol:()=>{var f;return((f=o().formatToParts(a).find(d))==null?void 0:f.value)??""},amount:()=>i().formatToParts(a).filter(f=>["decimal","fraction","group","integer","literal"].includes(f.type)).map(f=>f.value).join("")}),[e,a,s,i,o,u,c,g]);return l.useMemo(()=>new Proxy(h,{get:(f,y)=>{var E;return(E=Reflect.get(f,y))==null?void 0:E.call(null)}}),[h])}const Ut=new Map;function ie(e,t){const n=JSON.stringify([e,t]);return function(){let r=Ut.get(n);return r||(r=new Intl.NumberFormat(e,t),Ut.set(n,r)),r}}function Ie({data:e,as:t,withoutCurrency:n,withoutTrailingZeros:r,measurement:a,measurementSeparator:i="/",...s}){if(!Cr(e))throw new Error("<Money/> needs a valid 'data' prop that has 'amount' and 'currencyCode'");const o=Vt(e),c=t??"div";let u=o.localizedString;return(n||r)&&(n&&!r?u=o.amount:!n&&r?u=o.withoutTrailingZeros:u=o.withoutTrailingZerosAndCurrency),React.createElement(c,{...s},u,a&&a.referenceUnit&&React.createElement(React.Fragment,null,i,a.referenceUnit))}function Cr(e){return typeof e.amount=="string"&&!!e.amount&&typeof e.currencyCode=="string"&&!!e.currencyCode}function wr(e){const{cost:t}=ae(),{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(Ie,{...a,data:i},r)}const Nt=l.createContext(null);function He(){const e=l.useContext(Nt);if(e==null)throw new Error("Expected a cart line context but none was found");return e}function Ar({children:e,line:t}){return React.createElement(Nt.Provider,{value:t},e)}function br(e){const t=He(),{as:n,...r}=e,a=n||"span";return React.createElement(a,{...r},t.quantity)}function Ir(e){const{status:t,linesRemove:n,linesUpdate:r}=ae(),a=He(),{children:i,adjust:s,onClick:o,...c}=e,u=l.useCallback(()=>{if(s==="remove"){n([(a==null?void 0:a.id)??""]);return}const d=s==="decrease"?((a==null?void 0:a.quantity)??0)-1:((a==null?void 0:a.quantity)??0)+1;if(d<=0){n([(a==null?void 0:a.id)??""]);return}const h={id:(a==null?void 0:a.id)??"",quantity:d,attributes:(a==null?void 0:a.attributes)??[]};r([h])},[s,a==null?void 0:a.attributes,a==null?void 0:a.id,a==null?void 0:a.quantity,n,r]),g=c.disabled;return React.createElement(we,{...c,onClick:o,defaultOnClick:u,disabled:typeof g<"u"?g:t!=="idle"},i)}const vr={DateTime:"string",Decimal:"string",HTML:"string",URL:"string",Color:"string",UnsignedInt64:"string"},Pr={DateTime:"string",Decimal:"string",HTML:"string",ISO8601DateTime:"string",URL:"string",UnsignedInt64:"string"},Mt=l.forwardRef((e,t)=>{const{data:n,options:r,id:a=n.id,frameBorder:i="0",allow:s="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:o=!0,loading:c="lazy",...u}=e;if(!n.embedUrl)throw new Error("<ExternalVideo/> requires the 'embedUrl' property");let g=n.embedUrl;if(r){const d=new URL(n.embedUrl);for(const[h,f]of Object.entries(r))typeof f>"u"||d.searchParams.set(h,f.toString());g=d.toString()}return React.createElement("iframe",{...u,id:a??n.embedUrl,title:n.alt??n.id??"external video",frameBorder:i,allow:s,allowFullScreen:o,src:g,loading:c,ref:t})}),$e=",",oe={OPTION:":",END_OF_PREFIX:",",SEQUENCE_GAP:" ",RANGE:"-"},Be=(()=>{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 Ft(n)){a.add(i.join($e));for(let s=0;s<i.length;s++)a.add(i.slice(0,s+1).join($e))}e.set(n,a)}return!!((r=e.get(n))!=null&&r.has(t.join($e)))}})();function Ft(e){if(!e)return[];if(e.startsWith("v1_"))return Rr(Or(e));throw new Error("Unsupported option value encoding")}const Or=e=>e.replace(/^v1_/,"");function Rr(e){const t=/[ :,-]/g;let n=0,r;const a=[],i=[];let s=0,o=null;for(;r=t.exec(e);){const u=r[0],g=Number.parseInt(e.slice(n,r.index))||0;if(o!==null){for(;o<g;o++)i[s]=o,a.push([...i]);o=null}i[s]=g,u===oe.RANGE?o=g:u===oe.OPTION?s++:((u===oe.SEQUENCE_GAP||u===oe.END_OF_PREFIX&&e[r.index-1]!==oe.END_OF_PREFIX)&&a.push([...i]),u===oe.END_OF_PREFIX&&(i.pop(),s--)),n=t.lastIndex}const c=e.match(/\d+$/g);if(c){const u=parseInt(c[0]);if(o!=null)for(;o<=u;o++)i[s]=o,a.push([...i]);else a.push([u])}return a}function kr(e){return Object.assign({},...e.map(t=>({[t.name]:Object.assign({},...t!=null&&t.optionValues?t.optionValues.map((n,r)=>({[n.name]:r})):[])})))}function de(e){return Object.assign({},...e.map(t=>({[t.name]:t.value})))}function Ye(e){return JSON.stringify(de(e))}function Lt(e){return Array.isArray(e)?JSON.stringify(Object.assign({},...e.map(t=>({[t.name]:t.value})))):JSON.stringify(e)}function Dr(e,t){return Object.keys(e).map(r=>t[r]?t[r][e[r]]:null).filter(r=>r!==null)}function Vr(e){return Object.assign({},...e.map(t=>({[Lt(t.selectedOptions||[])]:t})))}const xt=["options","selectedOrFirstAvailableVariant","adjacentVariants"],Ur=["handle","encodedVariantExistence","encodedVariantAvailability"];function J(e){return console.error(`[h2:error:getProductOptions] product.${e} is missing. Make sure you query for this field from the Storefront API.`),!1}function qt(e,t=!1){var a;let n=!0;const r=Object.keys(e);if((t?[...xt,...Ur]:xt).forEach(i=>{r.includes(i)||(n=J(i))}),e.options){const i=e==null?void 0:e.options[0];if(t&&!(i!=null&&i.name)&&(n=J("options.name")),(a=e==null?void 0:e.options[0])!=null&&a.optionValues){let s=e.options[0].optionValues[0];t&&!(s!=null&&s.name)&&(n=J("options.optionValues.name")),s=e.options[0].optionValues.filter(o=>!!(o!=null&&o.firstSelectableVariant))[0],s!=null&&s.firstSelectableVariant&&(n=We(s.firstSelectableVariant,"options.optionValues.firstSelectableVariant",n,t))}else n=J("options.optionValues")}return e.selectedOrFirstAvailableVariant&&(n=We(e.selectedOrFirstAvailableVariant,"selectedOrFirstAvailableVariant",n,t)),e.adjacentVariants&&e.adjacentVariants[0]&&(n=We(e.adjacentVariants[0],"adjacentVariants",n,t)),n?e:{}}function We(e,t,n,r){var i;let a=n;if(r&&!((i=e.product)!=null&&i.handle)&&(a=J(`${t}.product.handle`)),e.selectedOptions){const s=e.selectedOptions[0];s!=null&&s.name||(a=J(`${t}.selectedOptions.name`)),s!=null&&s.value||(a=J(`${t}.selectedOptions.value`))}else a=J(`${t}.selectedOptions`);return a}function Nr(e){const t=qt(e);if(!t.options)return[];const n={};t.options.map(a=>{var i;(i=a.optionValues)==null||i.map(s=>{if(s.firstSelectableVariant){const o=Ye(s.firstSelectableVariant.selectedOptions);n[o]=s.firstSelectableVariant}})}),t.adjacentVariants.map(a=>{const i=Ye(a.selectedOptions);n[i]=a});const r=t.selectedOrFirstAvailableVariant;if(r){const a=Ye(r.selectedOptions);n[a]=r}return Object.values(n)}function Mr(e){const t=qt(e,!0);if(!t.options)return[];const{options:n,selectedOrFirstAvailableVariant:r,adjacentVariants:a,encodedVariantExistence:i,encodedVariantAvailability:s,handle:o}=t,c=r==null?void 0:r.selectedOptions.map(y=>y.name),u=n.filter(y=>c&&c.indexOf(y.name)>=0),g=kr(n),d=Vr(r?[r,...a]:a),h=de(r?r.selectedOptions:[]);return u.map((y,E)=>({...y,optionValues:y.optionValues.map(T=>{var O;const b={...h};b[y.name]=T.name;const I=Lt(b||[]),v=Dr(b||[],g).slice(0,E+1),p=Be(v,i||""),m=Be(v,s||""),_=d[I]||T.firstSelectableVariant;let P={};_&&(P=de(_.selectedOptions||[]));const R=new URLSearchParams(P),w=((O=_==null?void 0:_.product)==null?void 0:O.handle)||o;return{...T,variant:_,handle:w,variantUriQuery:R.toString(),selected:h[y.name]===T.name,exists:p,available:m,isDifferentProduct:w!==o}})}))}const Fr=`#graphql
275
275
  fragment Image on Image {
276
276
  altText
277
277
  url
278
278
  width
279
279
  height
280
280
  }
281
- `,Mt=k.forwardRef(({alt:e,aspectRatio:t,crop:r="center",data:n,decoding:a="async",height:i="auto",loader:s=ge,loading:o="lazy",sizes:u,src:l,srcSetOptions:g={intervals:15,startingWidth:200,incrementSize:200,placeholderWidth:100},width:h="100%",...y},d)=>{const f=k.useMemo(()=>{const p=n!=null&&n.width&&(n!=null&&n.height)?n==null?void 0:n.width:void 0,_=n!=null&&n.width&&(n!=null&&n.height)?n==null?void 0:n.height:void 0;return{width:p,height:_,unitsMatch:!!xt(p,_)}},[n]),S=k.useMemo(()=>{const _=ye((h||"100%").toString()),P=`${_.number}${_.unit}`,O=i==null,A=O?null:ye(i.toString()),I=A?`${A.number}${A.unit}`:"",q=O?"auto":I,D=l||(n==null?void 0:n.url),H=n!=null&&n.altText&&!e?n==null?void 0:n.altText:e||"",ee=t||(f.unitsMatch?[me(f.width),me(f.height)].join("/"):void 0);return{width:P,height:q,src:D,alt:H,aspectRatio:ee}},[h,i,l,n,e,t,f,y==null?void 0:y.key]),{intervals:T,startingWidth:w,incrementSize:v,placeholderWidth:b}=g,R=k.useMemo(()=>Kn(h,T,w,v),[h,T,w,v]);return Ft(S.width)?k.createElement(Gn,{aspectRatio:t,crop:r,decoding:a,height:i,imageWidths:R,loader:s,loading:o,normalizedProps:S,passthroughProps:y,ref:d,width:h,data:n}):k.createElement(Zn,{aspectRatio:t,crop:r,decoding:a,imageWidths:R,loader:s,loading:o,normalizedProps:S,passthroughProps:y,placeholderWidth:b,ref:d,sizes:u,data:n})}),Gn=k.forwardRef(({aspectRatio:e,crop:t,decoding:r,height:n,imageWidths:a,loader:i=ge,loading:s,normalizedProps:o,passthroughProps:u,width:l,data:g},h)=>{const y=k.useMemo(()=>{const d=me(l),f=me(n),S=e||(xt(o.width,o.height)?[d,f].join("/"):o.aspectRatio?o.aspectRatio:void 0),T=a===void 0?void 0:$t(a,S,t,{width:(g==null?void 0:g.width)??void 0,height:(g==null?void 0:g.height)??void 0}),w=f||(S&&d?d*(He(S)??1):void 0),v=jt(o.src,T,i),b=i({src:o.src,width:d,height:w,crop:o.height==="auto"?void 0:t});return{width:d,aspectRatio:S,height:w,srcSet:v,src:b}},[e,t,g,n,a,i,o,l]);return k.createElement("img",{ref:h,alt:o.alt,decoding:r,height:y.height,loading:s,src:y.src,srcSet:y.srcSet,width:y.width,style:{aspectRatio:y.aspectRatio,...u.style},...u})}),Zn=k.forwardRef(({crop:e,decoding:t,imageWidths:r,loader:n=ge,loading:a,normalizedProps:i,passthroughProps:s,placeholderWidth:o,sizes:u,data:l},g)=>{const h=k.useMemo(()=>{const y=r===void 0?void 0:$t(r,i.aspectRatio,e,{width:(l==null?void 0:l.width)??void 0,height:(l==null?void 0:l.height)??void 0}),d=i.aspectRatio&&o?o*(He(i.aspectRatio)??1):void 0,f=jt(i.src,y,n),S=n({src:i.src,width:o,height:d,crop:e});return{placeholderHeight:d,srcSet:f,src:S}},[e,l,r,n,i,o]);return k.createElement("img",{ref:g,alt:i.alt,decoding:t,height:h.placeholderHeight,loading:a,sizes:u,src:h.src,srcSet:h.srcSet,width:o,...s,style:{width:i.width,aspectRatio:i.aspectRatio,...s.style}})}),Lt="https://placeholder.shopify.com";function ge({src:e,width:t,height:r,crop:n}){if(!e)return"";const a=new URL(e,Lt);return t&&a.searchParams.append("width",Math.round(t).toString()),r&&a.searchParams.append("height",Math.round(r).toString()),n&&a.searchParams.append("crop",n),a.href.replace(Lt,"")}function xt(e="100%",t="auto"){return ye(e.toString()).unit===ye(t.toString()).unit}function ye(e){const t=e.replace(/[0-9.]/g,""),r=parseFloat(e.replace(t,""));return{unit:t===""?r===void 0?"auto":"px":t,number:r}}function me(e){if(e===void 0)return;const{unit:t,number:r}=ye(e.toString());switch(t){case"em":return r*16;case"rem":return r*16;case"px":return r;case"":return r;default:return}}function Ft(e){return typeof e=="number"||/\d(px|em|rem)$/.test(e)}function jt(e,t,r=ge){return e?(t==null?void 0:t.length)===0||!t?e:t.map((n,a)=>`${r({src:e,width:n.width,height:n.height,crop:n.crop})} ${t.length===3?`${a+1}x`:`${n.width??0}w`}`).join(", "):""}function Kn(e="100%",t,r,n){const a=Array.from({length:t},(s,o)=>o*n+r),i=Array.from({length:3},(s,o)=>(o+1)*(me(e)??0));return Ft(e)?i:a}function He(e){if(!e)return;const[t,r]=e.split("/");return 1/(Number(t)/Number(r))}function $t(e,t,r="center",n){if(e)return e.map(a=>({width:a,height:t?a*(He(t)??1):void 0,crop:r})).filter(({width:a,height:i})=>!(n!=null&&n.width&&a>n.width||n!=null&&n.height&&i&&i>n.height))}const qt={};function Qn(e,t){const r=qt[e];if(r)return r;const n=new Promise((a,i)=>{const s=document.createElement("script");t!=null&&t.module?s.type="module":s.type="text/javascript",s.src=e,s.onload=()=>{a(!0)},s.onerror=()=>{i(!1)},(t==null?void 0:t.in)==="head"?document.head.appendChild(s):document.body.appendChild(s);const o=t==null?void 0:t.attributes;o&&Object.keys(o).forEach(u=>{s.setAttribute(u,o[u])})});return qt[e]=n,n}function Be(e,t){const[r,n]=c.useState("loading");return c.useEffect(()=>{Qn(e,t).then(()=>n("done")).catch(()=>n("error"))},[e]),r}const Ht=c.forwardRef((e,t)=>{var g;const{data:r,previewImageOptions:n,id:a=r.id,playsInline:i=!0,controls:s=!0,sourceProps:o={},...u}=e,l=ge({src:((g=r.previewImage)==null?void 0:g.url)??"",...n});if(!r.sources)throw new Error("<Video/> requires a 'data.sources' array");return React.createElement("video",{...u,id:a,playsInline:i,controls:s,poster:l,ref:t},r.sources.map(h=>{if(!(h!=null&&h.url&&(h!=null&&h.mimeType)))throw new Error("<Video/> needs 'source.url' and 'source.mimeType'");return React.createElement("source",{...o,key:h.url,src:h.url,type:h.mimeType})}))});function Bt(e){var l,g,h;const[t,r]=c.useState(void 0),n=c.useCallback(y=>{r(y)},[]),{data:a,children:i,className:s,...o}=e,u=Be("https://unpkg.com/@google/model-viewer@v1.12.1/dist/model-viewer.min.js",{module:!0});return c.useEffect(()=>{const y={error:o.onError,load:o.onLoad,preload:o.onPreload,"model-visibility":o.onModelVisibility,progress:o.onProgress,"ar-status":o.onArStatus,"ar-tracking":o.onArTracking,"quick-look-button-tapped":o.onQuickLookButtonTapped,"camera-change":o.onCameraChange,"environment-change":o.onEnvironmentChange,play:o.onPlay,pause:o.onPause,"scene-graph-ready":o.onSceneGraphReady};if(t)return Object.entries(y).forEach(([d,f])=>{f&&t.addEventListener(d,f)}),()=>{t!=null&&Object.entries(y).forEach(([d,f])=>{f&&t.removeEventListener(d,f)})}},[t,o.onArStatus,o.onArTracking,o.onCameraChange,o.onEnvironmentChange,o.onError,o.onLoad,o.onModelVisibility,o.onPause,o.onPlay,o.onPreload,o.onProgress,o.onQuickLookButtonTapped,o.onSceneGraphReady]),u!=="done"?null:(g=(l=a.sources)==null?void 0:l[0])!=null&&g.url?React.createElement("model-viewer",{ref:n,...o,class:s,id:o.id??a.id,src:a.sources[0].url,alt:a.alt??null,"camera-controls":o.cameraControls??!0,poster:(o.poster||((h=a.previewImage)==null?void 0:h.url))??null,autoplay:o.autoplay??!0,loading:o.loading,reveal:o.reveal,ar:o.ar,"ar-modes":o.arModes,"ar-scale":o.arScale,"ar-placement":o.arPlacement,"ios-src":o.iosSrc,"touch-action":o.touchAction,"disable-zoom":o.disableZoom,"orbit-sensitivity":o.orbitSensitivity,"auto-rotate":o.autoRotate,"auto-rotate-delay":o.autoRotateDelay,"rotation-per-second":o.rotationPerSecond,"interaction-policy":o.interactionPolicy,"interaction-prompt":o.interactionPrompt,"interaction-prompt-style":o.interactionPromptStyle,"interaction-prompt-threshold":o.interactionPromptThreshold,"camera-orbit":o.cameraOrbit,"camera-target":o.cameraTarget,"field-of-view":o.fieldOfView,"max-camera-orbit":o.maxCameraOrbit,"min-camera-orbit":o.minCameraOrbit,"max-field-of-view":o.maxFieldOfView,"min-field-of-view":o.minFieldOfView,bounds:o.bounds,"interpolation-decay":o.interpolationDecay??100,"skybox-image":o.skyboxImage,"environment-image":o.environmentImage,exposure:o.exposure,"shadow-intensity":o.shadowIntensity??0,"shadow-softness":o.shadowSoftness??0,"animation-name":o.animationName,"animation-crossfade-duration":o.animationCrossfadeDuration,"variant-name":o.variantName,orientation:o.orientation,scale:o.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 Jn({data:e,mediaOptions:t,...r}){switch(e.__typename){case"MediaImage":return e.image?React.createElement(Mt,{...r,...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(Ht,{...r,...t==null?void 0:t.video,data:e});case"ExternalVideo":return React.createElement(Dt,{...r,...t==null?void 0:t.externalVideo,data:e});case"Model3d":return React.createElement(Bt,{...r,...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 Xn(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"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"dimension":case"money":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=Yt(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=Yt((e==null?void 0:e.value)??"");return{...e,parsedValue:t.map(r=>new Date(r))}}case"number_decimal":case"number_integer":return{...e,parsedValue:Number(e.value)};case"list.collection_reference":case"list.file_reference":case"list.page_reference":case"list.product_reference":case"list.variant_reference":return{...e,parsedValue:Q(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 Yt(e){return String(e).includes("__proto__")?JSON.parse(e,(t,r)=>{if(t!=="__proto__")return r}):JSON.parse(e)}function zn(e){var g,h,y,d,f,S;const{priceType:t="regular",variantId:r,valueType:n="min",data:a,...i}=e;if(a==null)throw new Error("<ProductPrice/> requires a product as the 'data' prop");let s,o;const u=r?Q((a==null?void 0:a.variants)??{}).find(T=>(T==null?void 0:T.id)===r)??null:null,l=n==="max"?"maxVariantPrice":"minVariantPrice";if(t==="compareAt"){r&&u?s=u.compareAtPrice:s=(g=a==null?void 0:a.compareAtPriceRange)==null?void 0:g[l];let T;r&&u?T=parseFloat(((h=u.price)==null?void 0:h.amount)??"0"):T=parseFloat(((d=(y=a==null?void 0:a.priceRange)==null?void 0:y[l])==null?void 0:d.amount)??"0");const w=parseFloat((s==null?void 0:s.amount)??"0");if(T>=w)return null}else r&&u?(s=u.price,n==="unit"&&(s=u.unitPrice,o=u.unitPriceMeasurement)):n==="max"?s=(f=a.priceRange)==null?void 0:f.maxVariantPrice:s=(S=a.priceRange)==null?void 0:S.minVariantPrice;return s?o?React.createElement(Pe,{...i,data:s,measurement:o}):React.createElement(Pe,{...i,data:s}):null}const ea={root:ta,heading:ra,paragraph:na,text:aa,link:ia,list:oa,"list-item":sa};function ta({node:e}){return React.createElement("div",null,e.children)}function ra({node:e}){return c.createElement(`h${e.level??"1"}`,null,e.children)}function na({node:e}){return React.createElement("p",null,e.children)}function aa({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 ia({node:e}){return React.createElement("a",{href:e.url,title:e.title,target:e.target},e.children)}function oa({node:e}){const t=e.listType==="unordered"?"ul":"ol";return React.createElement(t,null,e.children)}function sa({node:e}){return React.createElement("li",null,e.children)}function ca({as:e,data:t,plain:r,components:n,...a}){try{const i=e??"div",s=c.useMemo(()=>JSON.parse(t),[t]);return React.createElement(i,{...a},r?pe(s):Wt(n,s))}catch(i){throw new Error("[h2:error:RichText] Parsing error. Make sure to pass a JSON string of rich text metafield",{cause:i})}}function Wt(e={},t,r=0){let n;"children"in t&&(n=t.children.map((i,s)=>Wt(e,i,s)));const a=e[t.type==="list-item"?"listItem":t.type]??ea[t.type];switch(t.type){case"root":return c.createElement(a,{key:r,node:{type:"root",children:n}});case"heading":return c.createElement(a,{key:r,node:{type:"heading",level:t.level,children:n}});case"paragraph":return c.createElement(a,{key:r,node:{type:"paragraph",children:n}});case"text":{const i=(t.value??"").split(`
282
- `).flatMap((s,o)=>{const u=`${r}-${s}-${o}`,l=c.createElement(a,{key:u,node:{type:"text",italic:t.italic,bold:t.bold,value:s}});return o===0?l:[c.createElement("br",{key:`${u}-br`}),l]});return i.length>1?c.createElement(c.Fragment,{key:r},i):i[0]}case"link":return c.createElement(a,{key:r,node:{type:"link",url:t.url,title:t.title,target:t.target,children:n}});case"list":return c.createElement(a,{key:r,node:{type:"list",listType:t.listType,children:n}});case"list-item":return c.createElement(a,{key:r,node:{type:"list-item",children:n}})}}function pe(e,t=[]){switch(e.type){case"root":e.children.forEach(r=>pe(r,t));break;case"heading":case"paragraph":e.children.forEach(r=>pe(r,t)),t.push(" ");break;case"text":t.push(e.value||"");break;case"link":e.children.forEach(r=>pe(r,t));break;case"list":e.children.forEach(r=>{r.children&&r.children.forEach(n=>pe(n,t)),t.push(" ")});break;default:throw new Error(`Unknown node encountered ${e.type}`)}return t.join("").trim()}const ua="https://cdn.shopify.com/shopifycloud/shop-js/v1.0/client.js";function la(e){return e==="headless"||e==="hydrogen"}function da({channel:e,variantIds:t,className:r,variantIdsAndQuantities:n,width:a,storeDomain:i}){const s=le(),o=i||(s==null?void 0:s.storeDomain),u=Be(ua);let l=[],g;if(!o||o===st.storeDomain)throw new Error(fa);if(t&&n)throw new Error(ga);if(!t&&!n)throw new Error(Gt);if(e)if(la(e))g=e;else throw new Error(ya);if(t)l=t.reduce((y,d)=>{const f=F(d).id;return f&&y.push(f),y},[]);else if(n)l=n.reduce((y,d)=>{const f=F(d==null?void 0:d.id).id;return f&&y.push(`${f}:${(d==null?void 0:d.quantity)??1}`),y},[]);else throw new Error(Gt);if(l.length===0)throw new Error(ha);const h=a?{"--shop-pay-button-width":a}:void 0;return React.createElement("div",{className:r,style:h},u==="done"&&React.createElement("shop-pay-button",{...g?{channel:g}:{},"store-url":o,variants:l.join(",")}))}const fa='You must pass a "storeDomain" prop to the "ShopPayButton" component, or wrap it in a "ShopifyProvider" component.',ha='You must pass in "variantIds" in the form of ["gid://shopify/ProductVariant/1"]',Gt='You must pass in either "variantIds" or "variantIdsAndQuantities" to ShopPayButton',ga="You must provide either a variantIds or variantIdsAndQuantities prop, but not both in the ShopPayButton component",ya='Invalid channel attribution value. Must be either "headless" or "hydrogen"';function ma(e){return c.useEffect(()=>{const t=new URLSearchParams(he(e||[])),r=new URLSearchParams(window.location.search),n=new URLSearchParams({...Object.fromEntries(r),...Object.fromEntries(t)});n.size>0&&window.history.replaceState({},"",`${window.location.pathname}?${n.toString()}`)},[JSON.stringify(e)]),null}const pa=60*60*24*360*1,Ea=60*30;function _a(e){const{hasUserConsent:t=!1,domain:r="",checkoutDomain:n=""}=e||{};c.useEffect(()=>{const a=be(document.cookie);let i=r||window.document.location.host;if(n){const o=n.split(".").reverse(),u=i.split(".").reverse(),l=[];o.forEach((g,h)=>{g===u[h]&&l.push(g)}),i=l.reverse().join(".")}/^localhost/.test(i)&&(i="");const s=i?/^\./.test(i)?i:`.${i}`:"";t?(Oe(J,a[J]||we(),pa,s),Oe(X,a[X]||we(),Ea,s)):(Oe(J,"",0,s),Oe(X,"",0,s))},[e,t,r,n])}function Oe(e,t,r,n){document.cookie=Wr(e,t,{maxage:r,domain:n,samesite:"Lax",path:"/"})}E.AddToCartButton=cn,E.AnalyticsEventName=re,E.AnalyticsPageType=ve,E.BuyNowButton=On,E.CartCheckoutButton=Rn,E.CartCost=Vn,E.CartLineProvider=Un,E.CartLineQuantity=kn,E.CartLineQuantityAdjustButton=Nn,E.CartProvider=en,E.ExternalVideo=Dt,E.IMAGE_FRAGMENT=Wn,E.Image=Mt,E.MediaFile=Jn,E.ModelViewer=Bt,E.Money=Pe,E.ProductPrice=zn,E.ProductProvider=an,E.RichText=ca,E.SHOPIFY_S=X,E.SHOPIFY_STOREFRONT_ID_HEADER=ut,E.SHOPIFY_STOREFRONT_S_HEADER=dt,E.SHOPIFY_STOREFRONT_Y_HEADER=lt,E.SHOPIFY_Y=J,E.ShopPayButton=da,E.ShopifyProvider=Hr,E.ShopifySalesChannel=St,E.Video=Ht,E.createStorefrontClient=$r,E.customerAccountApiCustomScalars=Ln,E.decodeEncodedVariant=Vt,E.flattenConnection=Q,E.getAdjacentAndFirstAvailableVariants=Bn,E.getClientBrowserParameters=bn,E.getProductOptions=Yn,E.getShopifyCookies=be,E.isOptionValueCombinationInEncodedVariant=je,E.mapSelectedProductOptionToObject=he,E.parseGid=F,E.parseMetafield=Xn,E.sendShopifyAnalytics=Cn,E.storefrontApiCustomScalars=Mn,E.useCart=oe,E.useCartLine=xe,E.useLoadScript=Be,E.useMoney=Pt,E.useProduct=mt,E.useSelectedOptionInUrlParam=ma,E.useShop=le,E.useShopifyCookies=_a,Object.defineProperty(E,Symbol.toStringTag,{value:"Module"})});
281
+ `,jt=U.forwardRef(({alt:e,aspectRatio:t,crop:n="center",data:r,decoding:a="async",height:i="auto",loader:s=fe,loading:o="lazy",sizes:c,src:u,srcSetOptions:g={intervals:15,startingWidth:200,incrementSize:200,placeholderWidth:100},width:d="100%",...h},f)=>{const y=U.useMemo(()=>{const m=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:m,height:_,unitsMatch:!!$t(m,_)}},[r]),E=U.useMemo(()=>{const _=he((d||"100%").toString()),P=`${_.number}${_.unit}`,R=i==null,w=R?null:he(i.toString()),O=w?`${w.number}${w.unit}`:"",H=R?"auto":O,k=u||(r==null?void 0:r.url),$=r!=null&&r.altText&&!e?r==null?void 0:r.altText:e||"",X=t||(y.unitsMatch?[ge(y.width),ge(y.height)].join("/"):void 0);return{width:P,height:H,src:k,alt:$,aspectRatio:X}},[d,i,u,r,e,t,y,h==null?void 0:h.key]),{intervals:T,startingWidth:b,incrementSize:I,placeholderWidth:A}=g,v=U.useMemo(()=>qr(d,T,b,I),[d,T,b,I]);return Bt(E.width)?U.createElement(Lr,{aspectRatio:t,crop:n,decoding:a,height:i,imageWidths:v,loader:s,loading:o,normalizedProps:E,passthroughProps:h,ref:f,width:d,data:r}):U.createElement(xr,{aspectRatio:t,crop:n,decoding:a,imageWidths:v,loader:s,loading:o,normalizedProps:E,passthroughProps:h,placeholderWidth:A,ref:f,sizes:c,data:r})}),Lr=U.forwardRef(({aspectRatio:e,crop:t,decoding:n,height:r,imageWidths:a,loader:i=fe,loading:s,normalizedProps:o,passthroughProps:c,width:u,data:g},d)=>{const h=U.useMemo(()=>{const f=ge(u),y=ge(r),E=e||($t(o.width,o.height)?[f,y].join("/"):o.aspectRatio?o.aspectRatio:void 0),T=a===void 0?void 0:Wt(a,E,t,{width:(g==null?void 0:g.width)??void 0,height:(g==null?void 0:g.height)??void 0}),b=y||(E&&f?f*(Ge(E)??1):void 0),I=Yt(o.src,T,i),A=i({src:o.src,width:f,height:b,crop:o.height==="auto"?void 0:t});return{width:f,aspectRatio:E,height:b,srcSet:I,src:A}},[e,t,g,r,a,i,o,u]);return U.createElement("img",{ref:d,alt:o.alt,decoding:n,height:h.height,loading:s,src:h.src,srcSet:h.srcSet,width:h.width,style:{aspectRatio:h.aspectRatio,...c.style},...c})}),xr=U.forwardRef(({crop:e,decoding:t,imageWidths:n,loader:r=fe,loading:a,normalizedProps:i,passthroughProps:s,placeholderWidth:o,sizes:c,data:u},g)=>{const d=U.useMemo(()=>{const h=n===void 0?void 0:Wt(n,i.aspectRatio,e,{width:(u==null?void 0:u.width)??void 0,height:(u==null?void 0:u.height)??void 0}),f=i.aspectRatio&&o?o*(Ge(i.aspectRatio)??1):void 0,y=Yt(i.src,h,r),E=r({src:i.src,width:o,height:f,crop:e});return{placeholderHeight:f,srcSet:y,src:E}},[e,u,n,r,i,o]);return U.createElement("img",{ref:g,alt:i.alt,decoding:t,height:d.placeholderHeight,loading:a,sizes:c,src:d.src,srcSet:d.srcSet,width:o,...s,style:{width:i.width,aspectRatio:i.aspectRatio,...s.style}})}),Ht="https://placeholder.shopify.com";function fe({src:e,width:t,height:n,crop:r}){if(!e)return"";const a=new URL(e,Ht);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(Ht,"")}function $t(e="100%",t="auto"){return he(e.toString()).unit===he(t.toString()).unit}function he(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}=he(e.toString());switch(t){case"em":return n*16;case"rem":return n*16;case"px":return n;case"":return n;default:return}}function Bt(e){return typeof e=="number"||/\d(px|em|rem)$/.test(e)}function Yt(e,t,n=fe){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 qr(e="100%",t,n,r){const a=Array.from({length:t},(s,o)=>o*r+n),i=Array.from({length:3},(s,o)=>(o+1)*(ge(e)??0));return Bt(e)?i:a}function Ge(e){if(!e)return;const[t,n]=e.split("/");return 1/(Number(t)/Number(n))}function Wt(e,t,n="center",r){if(e)return e.map(a=>({width:a,height:t?a*(Ge(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 Gt={};function jr(e,t){const n=Gt[e];if(n)return n;const r=new Promise((a,i)=>{const s=document.createElement("script");t!=null&&t.module?s.type="module":s.type="text/javascript",s.src=e,s.onload=()=>{a(!0)},s.onerror=()=>{i(!1)},(t==null?void 0:t.in)==="head"?document.head.appendChild(s):document.body.appendChild(s);const o=t==null?void 0:t.attributes;o&&Object.keys(o).forEach(c=>{s.setAttribute(c,o[c])})});return Gt[e]=r,r}function Ze(e,t){const[n,r]=l.useState("loading");return l.useEffect(()=>{jr(e,t).then(()=>r("done")).catch(()=>r("error"))},[e]),n}const Zt=l.forwardRef((e,t)=>{var g;const{data:n,previewImageOptions:r,id:a=n.id,playsInline:i=!0,controls:s=!0,sourceProps:o={},...c}=e,u=fe({src:((g=n.previewImage)==null?void 0:g.url)??"",...r});if(!n.sources)throw new Error("<Video/> requires a 'data.sources' array");return React.createElement("video",{...c,id:a,playsInline:i,controls:s,poster:u,ref:t},n.sources.map(d=>{if(!(d!=null&&d.url&&(d!=null&&d.mimeType)))throw new Error("<Video/> needs 'source.url' and 'source.mimeType'");return React.createElement("source",{...o,key:d.url,src:d.url,type:d.mimeType})}))});function Kt(e){var u,g,d;const[t,n]=l.useState(void 0),r=l.useCallback(h=>{n(h)},[]),{data:a,children:i,className:s,...o}=e,c=Ze("https://unpkg.com/@google/model-viewer@v1.12.1/dist/model-viewer.min.js",{module:!0});return l.useEffect(()=>{const h={error:o.onError,load:o.onLoad,preload:o.onPreload,"model-visibility":o.onModelVisibility,progress:o.onProgress,"ar-status":o.onArStatus,"ar-tracking":o.onArTracking,"quick-look-button-tapped":o.onQuickLookButtonTapped,"camera-change":o.onCameraChange,"environment-change":o.onEnvironmentChange,play:o.onPlay,pause:o.onPause,"scene-graph-ready":o.onSceneGraphReady};if(t)return Object.entries(h).forEach(([f,y])=>{y&&t.addEventListener(f,y)}),()=>{t!=null&&Object.entries(h).forEach(([f,y])=>{y&&t.removeEventListener(f,y)})}},[t,o.onArStatus,o.onArTracking,o.onCameraChange,o.onEnvironmentChange,o.onError,o.onLoad,o.onModelVisibility,o.onPause,o.onPlay,o.onPreload,o.onProgress,o.onQuickLookButtonTapped,o.onSceneGraphReady]),c!=="done"?null:(g=(u=a.sources)==null?void 0:u[0])!=null&&g.url?React.createElement("model-viewer",{ref:r,...o,class:s,id:o.id??a.id,src:a.sources[0].url,alt:a.alt??null,"camera-controls":o.cameraControls??!0,poster:(o.poster||((d=a.previewImage)==null?void 0:d.url))??null,autoplay:o.autoplay??!0,loading:o.loading,reveal:o.reveal,ar:o.ar,"ar-modes":o.arModes,"ar-scale":o.arScale,"ar-placement":o.arPlacement,"ios-src":o.iosSrc,"touch-action":o.touchAction,"disable-zoom":o.disableZoom,"orbit-sensitivity":o.orbitSensitivity,"auto-rotate":o.autoRotate,"auto-rotate-delay":o.autoRotateDelay,"rotation-per-second":o.rotationPerSecond,"interaction-policy":o.interactionPolicy,"interaction-prompt":o.interactionPrompt,"interaction-prompt-style":o.interactionPromptStyle,"interaction-prompt-threshold":o.interactionPromptThreshold,"camera-orbit":o.cameraOrbit,"camera-target":o.cameraTarget,"field-of-view":o.fieldOfView,"max-camera-orbit":o.maxCameraOrbit,"min-camera-orbit":o.minCameraOrbit,"max-field-of-view":o.maxFieldOfView,"min-field-of-view":o.minFieldOfView,bounds:o.bounds,"interpolation-decay":o.interpolationDecay??100,"skybox-image":o.skyboxImage,"environment-image":o.environmentImage,exposure:o.exposure,"shadow-intensity":o.shadowIntensity??0,"shadow-softness":o.shadowSoftness??0,"animation-name":o.animationName,"animation-crossfade-duration":o.animationCrossfadeDuration,"variant-name":o.variantName,orientation:o.orientation,scale:o.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 Hr({data:e,mediaOptions:t,...n}){switch(e.__typename){case"MediaImage":return e.image?React.createElement(jt,{...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(Zt,{...n,...t==null?void 0:t.video,data:e});case"ExternalVideo":return React.createElement(Mt,{...n,...t==null?void 0:t.externalVideo,data:e});case"Model3d":return React.createElement(Kt,{...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 $r(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"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"dimension":case"money":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=Qt(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=Qt((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.collection_reference":case"list.file_reference":case"list.page_reference":case"list.product_reference":case"list.variant_reference":return{...e,parsedValue:Q(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 Qt(e){return String(e).includes("__proto__")?JSON.parse(e,(t,n)=>{if(t!=="__proto__")return n}):JSON.parse(e)}function Br(e){var g,d,h,f,y,E;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 s,o;const c=n?Q((a==null?void 0:a.variants)??{}).find(T=>(T==null?void 0:T.id)===n)??null:null,u=r==="max"?"maxVariantPrice":"minVariantPrice";if(t==="compareAt"){n&&c?s=c.compareAtPrice:s=(g=a==null?void 0:a.compareAtPriceRange)==null?void 0:g[u];let T;n&&c?T=parseFloat(((d=c.price)==null?void 0:d.amount)??"0"):T=parseFloat(((f=(h=a==null?void 0:a.priceRange)==null?void 0:h[u])==null?void 0:f.amount)??"0");const b=parseFloat((s==null?void 0:s.amount)??"0");if(T>=b)return null}else n&&c?(s=c.price,r==="unit"&&(s=c.unitPrice,o=c.unitPriceMeasurement)):r==="max"?s=(y=a.priceRange)==null?void 0:y.maxVariantPrice:s=(E=a.priceRange)==null?void 0:E.minVariantPrice;return s?o?React.createElement(Ie,{...i,data:s,measurement:o}):React.createElement(Ie,{...i,data:s}):null}const Yr={root:Wr,heading:Gr,paragraph:Zr,text:Kr,link:Qr,list:Jr,"list-item":Xr};function Wr({node:e}){return React.createElement("div",null,e.children)}function Gr({node:e}){return l.createElement(`h${e.level??"1"}`,null,e.children)}function Zr({node:e}){return React.createElement("p",null,e.children)}function Kr({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 Qr({node:e}){return React.createElement("a",{href:e.url,title:e.title,target:e.target},e.children)}function Jr({node:e}){const t=e.listType==="unordered"?"ul":"ol";return React.createElement(t,null,e.children)}function Xr({node:e}){return React.createElement("li",null,e.children)}function zr({as:e,data:t,plain:n,components:r,...a}){try{const i=e??"div",s=l.useMemo(()=>JSON.parse(t),[t]);return React.createElement(i,{...a},n?ye(s):Jt(r,s))}catch(i){throw new Error("[h2:error:RichText] Parsing error. Make sure to pass a JSON string of rich text metafield",{cause:i})}}function Jt(e={},t,n=0){let r;"children"in t&&(r=t.children.map((i,s)=>Jt(e,i,s)));const a=e[t.type==="list-item"?"listItem":t.type]??Yr[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(`
282
+ `).flatMap((s,o)=>{const c=`${n}-${s}-${o}`,u=l.createElement(a,{key:c,node:{type:"text",italic:t.italic,bold:t.bold,value:s}});return o===0?u:[l.createElement("br",{key:`${c}-br`}),u]});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 ye(e,t=[]){switch(e.type){case"root":e.children.forEach(n=>ye(n,t));break;case"heading":case"paragraph":e.children.forEach(n=>ye(n,t)),t.push(" ");break;case"text":t.push(e.value||"");break;case"link":e.children.forEach(n=>ye(n,t));break;case"list":e.children.forEach(n=>{n.children&&n.children.forEach(r=>ye(r,t)),t.push(" ")});break;default:throw new Error(`Unknown node encountered ${e.type}`)}return t.join("").trim()}const ea="https://cdn.shopify.com/shopifycloud/shop-js/v1.0/client.js";function ta(e){return e==="headless"||e==="hydrogen"}function na({channel:e,variantIds:t,className:n,variantIdsAndQuantities:r,width:a,storeDomain:i}){const s=ce(),o=i||(s==null?void 0:s.storeDomain),c=Ze(ea);let u=[],g;if(!o||o===dt.storeDomain)throw new Error(ra);if(t&&r)throw new Error(ia);if(!t&&!r)throw new Error(Xt);if(e)if(ta(e))g=e;else throw new Error(oa);if(t)u=t.reduce((h,f)=>{const y=x(f).id;return y&&h.push(y),h},[]);else if(r)u=r.reduce((h,f)=>{const y=x(f==null?void 0:f.id).id;return y&&h.push(`${y}:${(f==null?void 0:f.quantity)??1}`),h},[]);else throw new Error(Xt);if(u.length===0)throw new Error(aa);const d=a?{"--shop-pay-button-width":a}:void 0;return React.createElement("div",{className:n,style:d},c==="done"&&React.createElement("shop-pay-button",{...g?{channel:g}:{},"store-url":o,variants:u.join(",")}))}const ra='You must pass a "storeDomain" prop to the "ShopPayButton" component, or wrap it in a "ShopifyProvider" component.',aa='You must pass in "variantIds" in the form of ["gid://shopify/ProductVariant/1"]',Xt='You must pass in either "variantIds" or "variantIdsAndQuantities" to ShopPayButton',ia="You must provide either a variantIds or variantIdsAndQuantities prop, but not both in the ShopPayButton component",oa='Invalid channel attribution value. Must be either "headless" or "hydrogen"';function sa(e){return l.useEffect(()=>{const t=new URLSearchParams(de(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 ca(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 ua=60*60*24*360*1,la=60*30;function da(e){const{hasUserConsent:t,domain:n="",checkoutDomain:r="",storefrontAccessToken:a,fetchTrackingValues:i,ignoreDeprecatedCookies:s=!1}=e||{},o=fa({storefrontAccessToken:a,fetchTrackingValues:i,checkoutDomain:r});return l.useEffect(()=>{if(s||!o)return;let c=n||window.location.host;if(r){const g=r.split(".").reverse(),d=c.split(".").reverse(),h=[];g.forEach((f,y)=>{f===d[y]&&h.push(f)}),c=h.reverse().join(".")}/^localhost/.test(c)&&(c="");const u=c?/^\./.test(c)?c:`.${c}`:"";if(t){const g=ee();if((g.uniqueToken||g.visitToken||"").startsWith("00000000-"))return;ve(Te,g.uniqueToken||be(),ua,u),ve(Ce,g.visitToken||be(),la,u)}else ve(Te,"",0,u),ve(Ce,"",0,u)},[o,t,n,r,s]),o}function ve(e,t,n,r){document.cookie=ca(e,t,{maxage:n,domain:r,samesite:"Lax",path:"/"})}async function zt(e,t=""){const{uniqueToken:n,visitToken:r}=ee(),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?{[Me]:r,[Fe]: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(),ee()}function fa({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,zt(t).catch(s=>e?zt(t,e):Promise.reject(s)).catch(s=>{console.warn("[h2:warn:useShopifyCookies] Failed to fetch tracking values from browser: "+(s instanceof Error?s.message:String(s)))}).finally(()=>{a(!0)}))},[e,n,t]),r}S.AddToCartButton=Jn,S.AnalyticsEventName=te,S.AnalyticsPageType=Ae,S.BuyNowButton=Sr,S.CartCheckoutButton=Tr,S.CartCost=wr,S.CartLineProvider=Ar,S.CartLineQuantity=br,S.CartLineQuantityAdjustButton=Ir,S.CartProvider=Bn,S.ExternalVideo=Mt,S.IMAGE_FRAGMENT=Fr,S.Image=jt,S.MediaFile=Hr,S.ModelViewer=Kt,S.Money=Ie,S.ProductPrice=Br,S.ProductProvider=Zn,S.RichText=zr,S.SHOPIFY_S=Ce,S.SHOPIFY_STOREFRONT_ID_HEADER=ht,S.SHOPIFY_STOREFRONT_S_HEADER=yt,S.SHOPIFY_STOREFRONT_Y_HEADER=gt,S.SHOPIFY_UNIQUE_TOKEN_HEADER=Fe,S.SHOPIFY_VISIT_TOKEN_HEADER=Me,S.SHOPIFY_Y=Te,S.ShopPayButton=na,S.ShopifyProvider=Fn,S.ShopifySalesChannel=At,S.Video=Zt,S.createStorefrontClient=Un,S.customerAccountApiCustomScalars=Pr,S.decodeEncodedVariant=Ft,S.flattenConnection=Q,S.getAdjacentAndFirstAvailableVariants=Nr,S.getClientBrowserParameters=mr,S.getProductOptions=Mr,S.getShopifyCookies=er,S.getTrackingValues=ee,S.isOptionValueCombinationInEncodedVariant=Be,S.mapSelectedProductOptionToObject=de,S.parseGid=x,S.parseMetafield=$r,S.sendShopifyAnalytics=hr,S.storefrontApiCustomScalars=vr,S.useCart=ae,S.useCartLine=He,S.useLoadScript=Ze,S.useMoney=Vt,S.useProduct=St,S.useSelectedOptionInUrlParam=sa,S.useShop=ce,S.useShopifyCookies=da,Object.defineProperty(S,Symbol.toStringTag,{value:"Module"})});
283
283
  //# sourceMappingURL=hydrogen-react.prod.js.map