@shopify/hydrogen-react 2022.10.7 → 2023.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 (612) hide show
  1. package/README.md +41 -45
  2. package/dist/browser-dev/AddToCartButton.mjs +43 -40
  3. package/dist/browser-dev/AddToCartButton.mjs.map +1 -1
  4. package/dist/browser-dev/BaseButton.mjs +13 -15
  5. package/dist/browser-dev/BaseButton.mjs.map +1 -1
  6. package/dist/browser-dev/BuyNowButton.mjs +19 -17
  7. package/dist/browser-dev/BuyNowButton.mjs.map +1 -1
  8. package/dist/browser-dev/CartCheckoutButton.mjs +12 -15
  9. package/dist/browser-dev/CartCheckoutButton.mjs.map +1 -1
  10. package/dist/browser-dev/CartCost.mjs +25 -0
  11. package/dist/browser-dev/CartCost.mjs.map +1 -0
  12. package/dist/browser-dev/CartLinePrice.mjs +18 -0
  13. package/dist/browser-dev/CartLinePrice.mjs.map +1 -0
  14. package/dist/browser-dev/CartLineProvider.mjs +19 -0
  15. package/dist/browser-dev/CartLineProvider.mjs.map +1 -0
  16. package/dist/browser-dev/CartProvider.mjs +73 -67
  17. package/dist/browser-dev/CartProvider.mjs.map +1 -1
  18. package/dist/browser-dev/ExternalVideo.mjs +13 -11
  19. package/dist/browser-dev/ExternalVideo.mjs.map +1 -1
  20. package/dist/browser-dev/Image.mjs +41 -30
  21. package/dist/browser-dev/Image.mjs.map +1 -1
  22. package/dist/browser-dev/MediaFile.mjs +29 -21
  23. package/dist/browser-dev/MediaFile.mjs.map +1 -1
  24. package/dist/browser-dev/ModelViewer.mjs +138 -76
  25. package/dist/browser-dev/ModelViewer.mjs.map +1 -1
  26. package/dist/browser-dev/Money.mjs +12 -9
  27. package/dist/browser-dev/Money.mjs.map +1 -1
  28. package/dist/browser-dev/ProductPrice.mjs +12 -17
  29. package/dist/browser-dev/ProductPrice.mjs.map +1 -1
  30. package/dist/browser-dev/ProductProvider.mjs +102 -73
  31. package/dist/browser-dev/ProductProvider.mjs.map +1 -1
  32. package/dist/browser-dev/ShopPayButton.mjs +14 -24
  33. package/dist/browser-dev/ShopPayButton.mjs.map +1 -1
  34. package/dist/browser-dev/ShopifyProvider.mjs +22 -38
  35. package/dist/browser-dev/ShopifyProvider.mjs.map +1 -1
  36. package/dist/browser-dev/Video.mjs +30 -21
  37. package/dist/browser-dev/Video.mjs.map +1 -1
  38. package/dist/browser-dev/_virtual/index.mjs +11 -2
  39. package/dist/browser-dev/_virtual/index.mjs.map +1 -1
  40. package/dist/browser-dev/_virtual/with-selector.mjs +11 -2
  41. package/dist/browser-dev/_virtual/with-selector.mjs.map +1 -1
  42. package/dist/browser-dev/analytics-constants.mjs +43 -0
  43. package/dist/browser-dev/analytics-constants.mjs.map +1 -0
  44. package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
  45. package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
  46. package/dist/browser-dev/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
  47. package/dist/browser-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
  48. package/dist/browser-dev/analytics-utils.mjs +49 -0
  49. package/dist/browser-dev/analytics-utils.mjs.map +1 -0
  50. package/dist/browser-dev/analytics.mjs +159 -0
  51. package/dist/browser-dev/analytics.mjs.map +1 -0
  52. package/dist/browser-dev/cart-hooks.mjs +29 -34
  53. package/dist/browser-dev/cart-hooks.mjs.map +1 -1
  54. package/dist/browser-dev/cart-queries.mjs +50 -28
  55. package/dist/browser-dev/cart-queries.mjs.map +1 -1
  56. package/dist/browser-dev/codegen.helpers.mjs +1 -0
  57. package/dist/browser-dev/codegen.helpers.mjs.map +1 -1
  58. package/dist/browser-dev/cookies-utils.mjs +50 -0
  59. package/dist/browser-dev/cookies-utils.mjs.map +1 -0
  60. package/dist/browser-dev/flatten-connection.mjs +7 -5
  61. package/dist/browser-dev/flatten-connection.mjs.map +1 -1
  62. package/dist/browser-dev/image-size.mjs +8 -8
  63. package/dist/browser-dev/image-size.mjs.map +1 -1
  64. package/dist/browser-dev/index.mjs +20 -6
  65. package/dist/browser-dev/index.mjs.map +1 -1
  66. package/dist/browser-dev/load-script.mjs.map +1 -1
  67. package/dist/browser-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  68. package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs +2 -2
  69. package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  70. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  71. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  72. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  73. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  74. package/dist/browser-dev/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  75. package/dist/browser-dev/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  76. package/dist/browser-dev/{metafield-parser.mjs → parse-metafield.mjs} +20 -12
  77. package/dist/browser-dev/parse-metafield.mjs.map +1 -0
  78. package/dist/browser-dev/storefront-api-constants.mjs +1 -1
  79. package/dist/browser-dev/storefront-api-constants.mjs.map +1 -1
  80. package/dist/browser-dev/storefront-client.mjs +19 -20
  81. package/dist/browser-dev/storefront-client.mjs.map +1 -1
  82. package/dist/browser-dev/useCartAPIStateMachine.mjs +111 -80
  83. package/dist/browser-dev/useCartAPIStateMachine.mjs.map +1 -1
  84. package/dist/browser-dev/useCartActions.mjs +150 -109
  85. package/dist/browser-dev/useCartActions.mjs.map +1 -1
  86. package/dist/browser-dev/useMoney.mjs +62 -36
  87. package/dist/browser-dev/useMoney.mjs.map +1 -1
  88. package/dist/browser-dev/useShopifyCookies.mjs +41 -0
  89. package/dist/browser-dev/useShopifyCookies.mjs.map +1 -0
  90. package/dist/browser-prod/AddToCartButton.mjs +43 -40
  91. package/dist/browser-prod/AddToCartButton.mjs.map +1 -1
  92. package/dist/browser-prod/BaseButton.mjs +13 -15
  93. package/dist/browser-prod/BaseButton.mjs.map +1 -1
  94. package/dist/browser-prod/BuyNowButton.mjs +19 -17
  95. package/dist/browser-prod/BuyNowButton.mjs.map +1 -1
  96. package/dist/browser-prod/CartCheckoutButton.mjs +12 -15
  97. package/dist/browser-prod/CartCheckoutButton.mjs.map +1 -1
  98. package/dist/browser-prod/CartCost.mjs +25 -0
  99. package/dist/browser-prod/CartCost.mjs.map +1 -0
  100. package/dist/browser-prod/CartLinePrice.mjs +18 -0
  101. package/dist/browser-prod/CartLinePrice.mjs.map +1 -0
  102. package/dist/browser-prod/CartLineProvider.mjs +19 -0
  103. package/dist/browser-prod/CartLineProvider.mjs.map +1 -0
  104. package/dist/browser-prod/CartProvider.mjs +73 -67
  105. package/dist/browser-prod/CartProvider.mjs.map +1 -1
  106. package/dist/browser-prod/ExternalVideo.mjs +13 -11
  107. package/dist/browser-prod/ExternalVideo.mjs.map +1 -1
  108. package/dist/browser-prod/Image.mjs +35 -28
  109. package/dist/browser-prod/Image.mjs.map +1 -1
  110. package/dist/browser-prod/MediaFile.mjs +29 -21
  111. package/dist/browser-prod/MediaFile.mjs.map +1 -1
  112. package/dist/browser-prod/ModelViewer.mjs +135 -75
  113. package/dist/browser-prod/ModelViewer.mjs.map +1 -1
  114. package/dist/browser-prod/Money.mjs +12 -9
  115. package/dist/browser-prod/Money.mjs.map +1 -1
  116. package/dist/browser-prod/ProductPrice.mjs +12 -17
  117. package/dist/browser-prod/ProductPrice.mjs.map +1 -1
  118. package/dist/browser-prod/ProductProvider.mjs +102 -73
  119. package/dist/browser-prod/ProductProvider.mjs.map +1 -1
  120. package/dist/browser-prod/ShopPayButton.mjs +14 -24
  121. package/dist/browser-prod/ShopPayButton.mjs.map +1 -1
  122. package/dist/browser-prod/ShopifyProvider.mjs +22 -32
  123. package/dist/browser-prod/ShopifyProvider.mjs.map +1 -1
  124. package/dist/browser-prod/Video.mjs +30 -21
  125. package/dist/browser-prod/Video.mjs.map +1 -1
  126. package/dist/browser-prod/_virtual/index.mjs +11 -2
  127. package/dist/browser-prod/_virtual/index.mjs.map +1 -1
  128. package/dist/browser-prod/_virtual/with-selector.mjs +11 -2
  129. package/dist/browser-prod/_virtual/with-selector.mjs.map +1 -1
  130. package/dist/browser-prod/analytics-constants.mjs +43 -0
  131. package/dist/browser-prod/analytics-constants.mjs.map +1 -0
  132. package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
  133. package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
  134. package/dist/browser-prod/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
  135. package/dist/browser-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
  136. package/dist/browser-prod/analytics-utils.mjs +49 -0
  137. package/dist/browser-prod/analytics-utils.mjs.map +1 -0
  138. package/dist/browser-prod/analytics.mjs +158 -0
  139. package/dist/browser-prod/analytics.mjs.map +1 -0
  140. package/dist/browser-prod/cart-hooks.mjs +29 -34
  141. package/dist/browser-prod/cart-hooks.mjs.map +1 -1
  142. package/dist/browser-prod/cart-queries.mjs +50 -28
  143. package/dist/browser-prod/cart-queries.mjs.map +1 -1
  144. package/dist/browser-prod/codegen.helpers.mjs +1 -0
  145. package/dist/browser-prod/codegen.helpers.mjs.map +1 -1
  146. package/dist/browser-prod/cookies-utils.mjs +50 -0
  147. package/dist/browser-prod/cookies-utils.mjs.map +1 -0
  148. package/dist/browser-prod/flatten-connection.mjs +7 -5
  149. package/dist/browser-prod/flatten-connection.mjs.map +1 -1
  150. package/dist/browser-prod/image-size.mjs +8 -8
  151. package/dist/browser-prod/image-size.mjs.map +1 -1
  152. package/dist/browser-prod/index.mjs +20 -6
  153. package/dist/browser-prod/index.mjs.map +1 -1
  154. package/dist/browser-prod/load-script.mjs.map +1 -1
  155. package/dist/browser-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  156. package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs +2 -2
  157. package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  158. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  159. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  160. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  161. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  162. package/dist/browser-prod/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  163. package/dist/browser-prod/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  164. package/dist/browser-prod/{metafield-parser.mjs → parse-metafield.mjs} +20 -12
  165. package/dist/browser-prod/parse-metafield.mjs.map +1 -0
  166. package/dist/browser-prod/storefront-api-constants.mjs +1 -1
  167. package/dist/browser-prod/storefront-api-constants.mjs.map +1 -1
  168. package/dist/browser-prod/storefront-client.mjs +19 -20
  169. package/dist/browser-prod/storefront-client.mjs.map +1 -1
  170. package/dist/browser-prod/useCartAPIStateMachine.mjs +111 -80
  171. package/dist/browser-prod/useCartAPIStateMachine.mjs.map +1 -1
  172. package/dist/browser-prod/useCartActions.mjs +150 -109
  173. package/dist/browser-prod/useCartActions.mjs.map +1 -1
  174. package/dist/browser-prod/useMoney.mjs +62 -36
  175. package/dist/browser-prod/useMoney.mjs.map +1 -1
  176. package/dist/browser-prod/useShopifyCookies.mjs +41 -0
  177. package/dist/browser-prod/useShopifyCookies.mjs.map +1 -0
  178. package/dist/node-dev/AddToCartButton.js +44 -41
  179. package/dist/node-dev/AddToCartButton.js.map +1 -1
  180. package/dist/node-dev/AddToCartButton.mjs +43 -40
  181. package/dist/node-dev/AddToCartButton.mjs.map +1 -1
  182. package/dist/node-dev/BaseButton.js +14 -16
  183. package/dist/node-dev/BaseButton.js.map +1 -1
  184. package/dist/node-dev/BaseButton.mjs +13 -15
  185. package/dist/node-dev/BaseButton.mjs.map +1 -1
  186. package/dist/node-dev/BuyNowButton.js +20 -18
  187. package/dist/node-dev/BuyNowButton.js.map +1 -1
  188. package/dist/node-dev/BuyNowButton.mjs +19 -17
  189. package/dist/node-dev/BuyNowButton.mjs.map +1 -1
  190. package/dist/node-dev/CartCheckoutButton.js +13 -16
  191. package/dist/node-dev/CartCheckoutButton.js.map +1 -1
  192. package/dist/node-dev/CartCheckoutButton.mjs +12 -15
  193. package/dist/node-dev/CartCheckoutButton.mjs.map +1 -1
  194. package/dist/node-dev/CartCost.js +25 -0
  195. package/dist/node-dev/CartCost.js.map +1 -0
  196. package/dist/node-dev/CartCost.mjs +25 -0
  197. package/dist/node-dev/CartCost.mjs.map +1 -0
  198. package/dist/node-dev/CartLinePrice.js +18 -0
  199. package/dist/node-dev/CartLinePrice.js.map +1 -0
  200. package/dist/node-dev/CartLinePrice.mjs +18 -0
  201. package/dist/node-dev/CartLinePrice.mjs.map +1 -0
  202. package/dist/node-dev/CartLineProvider.js +19 -0
  203. package/dist/node-dev/CartLineProvider.js.map +1 -0
  204. package/dist/node-dev/CartLineProvider.mjs +19 -0
  205. package/dist/node-dev/CartLineProvider.mjs.map +1 -0
  206. package/dist/node-dev/CartProvider.js +74 -68
  207. package/dist/node-dev/CartProvider.js.map +1 -1
  208. package/dist/node-dev/CartProvider.mjs +73 -67
  209. package/dist/node-dev/CartProvider.mjs.map +1 -1
  210. package/dist/node-dev/ExternalVideo.js +14 -12
  211. package/dist/node-dev/ExternalVideo.js.map +1 -1
  212. package/dist/node-dev/ExternalVideo.mjs +13 -11
  213. package/dist/node-dev/ExternalVideo.mjs.map +1 -1
  214. package/dist/node-dev/Image.js +42 -31
  215. package/dist/node-dev/Image.js.map +1 -1
  216. package/dist/node-dev/Image.mjs +41 -30
  217. package/dist/node-dev/Image.mjs.map +1 -1
  218. package/dist/node-dev/MediaFile.js +30 -22
  219. package/dist/node-dev/MediaFile.js.map +1 -1
  220. package/dist/node-dev/MediaFile.mjs +29 -21
  221. package/dist/node-dev/MediaFile.mjs.map +1 -1
  222. package/dist/node-dev/ModelViewer.js +139 -77
  223. package/dist/node-dev/ModelViewer.js.map +1 -1
  224. package/dist/node-dev/ModelViewer.mjs +138 -76
  225. package/dist/node-dev/ModelViewer.mjs.map +1 -1
  226. package/dist/node-dev/Money.js +13 -10
  227. package/dist/node-dev/Money.js.map +1 -1
  228. package/dist/node-dev/Money.mjs +12 -9
  229. package/dist/node-dev/Money.mjs.map +1 -1
  230. package/dist/node-dev/ProductPrice.js +13 -18
  231. package/dist/node-dev/ProductPrice.js.map +1 -1
  232. package/dist/node-dev/ProductPrice.mjs +12 -17
  233. package/dist/node-dev/ProductPrice.mjs.map +1 -1
  234. package/dist/node-dev/ProductProvider.js +103 -74
  235. package/dist/node-dev/ProductProvider.js.map +1 -1
  236. package/dist/node-dev/ProductProvider.mjs +102 -73
  237. package/dist/node-dev/ProductProvider.mjs.map +1 -1
  238. package/dist/node-dev/ShopPayButton.js +14 -24
  239. package/dist/node-dev/ShopPayButton.js.map +1 -1
  240. package/dist/node-dev/ShopPayButton.mjs +14 -24
  241. package/dist/node-dev/ShopPayButton.mjs.map +1 -1
  242. package/dist/node-dev/ShopifyProvider.js +23 -39
  243. package/dist/node-dev/ShopifyProvider.js.map +1 -1
  244. package/dist/node-dev/ShopifyProvider.mjs +22 -38
  245. package/dist/node-dev/ShopifyProvider.mjs.map +1 -1
  246. package/dist/node-dev/Video.js +31 -22
  247. package/dist/node-dev/Video.js.map +1 -1
  248. package/dist/node-dev/Video.mjs +30 -21
  249. package/dist/node-dev/Video.mjs.map +1 -1
  250. package/dist/node-dev/_virtual/index.js +11 -3
  251. package/dist/node-dev/_virtual/index.js.map +1 -1
  252. package/dist/node-dev/_virtual/index.mjs +11 -2
  253. package/dist/node-dev/_virtual/index.mjs.map +1 -1
  254. package/dist/node-dev/_virtual/use-sync-external-store-shim.development.js +1 -1
  255. package/dist/node-dev/_virtual/use-sync-external-store-shim.production.min.js +1 -1
  256. package/dist/node-dev/_virtual/with-selector.development.js +1 -1
  257. package/dist/node-dev/_virtual/with-selector.js +11 -3
  258. package/dist/node-dev/_virtual/with-selector.js.map +1 -1
  259. package/dist/node-dev/_virtual/with-selector.mjs +11 -2
  260. package/dist/node-dev/_virtual/with-selector.mjs.map +1 -1
  261. package/dist/node-dev/_virtual/with-selector.production.min.js +1 -1
  262. package/dist/node-dev/analytics-constants.js +43 -0
  263. package/dist/node-dev/analytics-constants.js.map +1 -0
  264. package/dist/node-dev/analytics-constants.mjs +43 -0
  265. package/dist/node-dev/analytics-constants.mjs.map +1 -0
  266. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js +145 -0
  267. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js.map +1 -0
  268. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
  269. package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
  270. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.js +58 -0
  271. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.js.map +1 -0
  272. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
  273. package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
  274. package/dist/node-dev/analytics-utils.js +49 -0
  275. package/dist/node-dev/analytics-utils.js.map +1 -0
  276. package/dist/node-dev/analytics-utils.mjs +49 -0
  277. package/dist/node-dev/analytics-utils.mjs.map +1 -0
  278. package/dist/node-dev/analytics.js +159 -0
  279. package/dist/node-dev/analytics.js.map +1 -0
  280. package/dist/node-dev/analytics.mjs +159 -0
  281. package/dist/node-dev/analytics.mjs.map +1 -0
  282. package/dist/node-dev/cart-constants.js +1 -1
  283. package/dist/node-dev/cart-hooks.js +29 -34
  284. package/dist/node-dev/cart-hooks.js.map +1 -1
  285. package/dist/node-dev/cart-hooks.mjs +29 -34
  286. package/dist/node-dev/cart-hooks.mjs.map +1 -1
  287. package/dist/node-dev/cart-queries.js +51 -29
  288. package/dist/node-dev/cart-queries.js.map +1 -1
  289. package/dist/node-dev/cart-queries.mjs +50 -28
  290. package/dist/node-dev/cart-queries.mjs.map +1 -1
  291. package/dist/node-dev/codegen.helpers.js +2 -1
  292. package/dist/node-dev/codegen.helpers.js.map +1 -1
  293. package/dist/node-dev/codegen.helpers.mjs +1 -0
  294. package/dist/node-dev/codegen.helpers.mjs.map +1 -1
  295. package/dist/node-dev/cookies-utils.js +50 -0
  296. package/dist/node-dev/cookies-utils.js.map +1 -0
  297. package/dist/node-dev/cookies-utils.mjs +50 -0
  298. package/dist/node-dev/cookies-utils.mjs.map +1 -0
  299. package/dist/node-dev/flatten-connection.js +8 -6
  300. package/dist/node-dev/flatten-connection.js.map +1 -1
  301. package/dist/node-dev/flatten-connection.mjs +7 -5
  302. package/dist/node-dev/flatten-connection.mjs.map +1 -1
  303. package/dist/node-dev/image-size.js +9 -9
  304. package/dist/node-dev/image-size.js.map +1 -1
  305. package/dist/node-dev/image-size.mjs +8 -8
  306. package/dist/node-dev/image-size.mjs.map +1 -1
  307. package/dist/node-dev/index.js +21 -7
  308. package/dist/node-dev/index.js.map +1 -1
  309. package/dist/node-dev/index.mjs +20 -6
  310. package/dist/node-dev/index.mjs.map +1 -1
  311. package/dist/node-dev/load-script.js +1 -1
  312. package/dist/node-dev/load-script.js.map +1 -1
  313. package/dist/node-dev/load-script.mjs.map +1 -1
  314. package/dist/node-dev/node_modules/@xstate/fsm/es/index.js +1 -1
  315. package/dist/node-dev/node_modules/@xstate/fsm/es/index.js.map +1 -1
  316. package/dist/node-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  317. package/dist/node-dev/node_modules/@xstate/react/es/fsm.js +2 -2
  318. package/dist/node-dev/node_modules/@xstate/react/es/fsm.js.map +1 -1
  319. package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs +2 -2
  320. package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  321. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.js +2 -4
  322. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  323. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +2 -4
  324. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  325. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  326. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +2 -4
  327. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
  328. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  329. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +2 -4
  330. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  331. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  332. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +2 -4
  333. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  334. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  335. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.js +4 -4
  336. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  337. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.js +1 -1
  338. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  339. package/dist/node-dev/{metafield-parser.js → parse-metafield.js} +21 -13
  340. package/dist/node-dev/parse-metafield.js.map +1 -0
  341. package/dist/node-dev/{metafield-parser.mjs → parse-metafield.mjs} +20 -12
  342. package/dist/node-dev/parse-metafield.mjs.map +1 -0
  343. package/dist/node-dev/storefront-api-constants.js +2 -2
  344. package/dist/node-dev/storefront-api-constants.js.map +1 -1
  345. package/dist/node-dev/storefront-api-constants.mjs +1 -1
  346. package/dist/node-dev/storefront-api-constants.mjs.map +1 -1
  347. package/dist/node-dev/storefront-client.js +20 -21
  348. package/dist/node-dev/storefront-client.js.map +1 -1
  349. package/dist/node-dev/storefront-client.mjs +19 -20
  350. package/dist/node-dev/storefront-client.mjs.map +1 -1
  351. package/dist/node-dev/useCartAPIStateMachine.js +112 -81
  352. package/dist/node-dev/useCartAPIStateMachine.js.map +1 -1
  353. package/dist/node-dev/useCartAPIStateMachine.mjs +111 -80
  354. package/dist/node-dev/useCartAPIStateMachine.mjs.map +1 -1
  355. package/dist/node-dev/useCartActions.js +151 -110
  356. package/dist/node-dev/useCartActions.js.map +1 -1
  357. package/dist/node-dev/useCartActions.mjs +150 -109
  358. package/dist/node-dev/useCartActions.mjs.map +1 -1
  359. package/dist/node-dev/useMoney.js +63 -37
  360. package/dist/node-dev/useMoney.js.map +1 -1
  361. package/dist/node-dev/useMoney.mjs +62 -36
  362. package/dist/node-dev/useMoney.mjs.map +1 -1
  363. package/dist/node-dev/useShopifyCookies.js +41 -0
  364. package/dist/node-dev/useShopifyCookies.js.map +1 -0
  365. package/dist/node-dev/useShopifyCookies.mjs +41 -0
  366. package/dist/node-dev/useShopifyCookies.mjs.map +1 -0
  367. package/dist/node-prod/AddToCartButton.js +44 -41
  368. package/dist/node-prod/AddToCartButton.js.map +1 -1
  369. package/dist/node-prod/AddToCartButton.mjs +43 -40
  370. package/dist/node-prod/AddToCartButton.mjs.map +1 -1
  371. package/dist/node-prod/BaseButton.js +14 -16
  372. package/dist/node-prod/BaseButton.js.map +1 -1
  373. package/dist/node-prod/BaseButton.mjs +13 -15
  374. package/dist/node-prod/BaseButton.mjs.map +1 -1
  375. package/dist/node-prod/BuyNowButton.js +20 -18
  376. package/dist/node-prod/BuyNowButton.js.map +1 -1
  377. package/dist/node-prod/BuyNowButton.mjs +19 -17
  378. package/dist/node-prod/BuyNowButton.mjs.map +1 -1
  379. package/dist/node-prod/CartCheckoutButton.js +13 -16
  380. package/dist/node-prod/CartCheckoutButton.js.map +1 -1
  381. package/dist/node-prod/CartCheckoutButton.mjs +12 -15
  382. package/dist/node-prod/CartCheckoutButton.mjs.map +1 -1
  383. package/dist/node-prod/CartCost.js +25 -0
  384. package/dist/node-prod/CartCost.js.map +1 -0
  385. package/dist/node-prod/CartCost.mjs +25 -0
  386. package/dist/node-prod/CartCost.mjs.map +1 -0
  387. package/dist/node-prod/CartLinePrice.js +18 -0
  388. package/dist/node-prod/CartLinePrice.js.map +1 -0
  389. package/dist/node-prod/CartLinePrice.mjs +18 -0
  390. package/dist/node-prod/CartLinePrice.mjs.map +1 -0
  391. package/dist/node-prod/CartLineProvider.js +19 -0
  392. package/dist/node-prod/CartLineProvider.js.map +1 -0
  393. package/dist/node-prod/CartLineProvider.mjs +19 -0
  394. package/dist/node-prod/CartLineProvider.mjs.map +1 -0
  395. package/dist/node-prod/CartProvider.js +74 -68
  396. package/dist/node-prod/CartProvider.js.map +1 -1
  397. package/dist/node-prod/CartProvider.mjs +73 -67
  398. package/dist/node-prod/CartProvider.mjs.map +1 -1
  399. package/dist/node-prod/ExternalVideo.js +14 -12
  400. package/dist/node-prod/ExternalVideo.js.map +1 -1
  401. package/dist/node-prod/ExternalVideo.mjs +13 -11
  402. package/dist/node-prod/ExternalVideo.mjs.map +1 -1
  403. package/dist/node-prod/Image.js +36 -29
  404. package/dist/node-prod/Image.js.map +1 -1
  405. package/dist/node-prod/Image.mjs +35 -28
  406. package/dist/node-prod/Image.mjs.map +1 -1
  407. package/dist/node-prod/MediaFile.js +30 -22
  408. package/dist/node-prod/MediaFile.js.map +1 -1
  409. package/dist/node-prod/MediaFile.mjs +29 -21
  410. package/dist/node-prod/MediaFile.mjs.map +1 -1
  411. package/dist/node-prod/ModelViewer.js +136 -76
  412. package/dist/node-prod/ModelViewer.js.map +1 -1
  413. package/dist/node-prod/ModelViewer.mjs +135 -75
  414. package/dist/node-prod/ModelViewer.mjs.map +1 -1
  415. package/dist/node-prod/Money.js +13 -10
  416. package/dist/node-prod/Money.js.map +1 -1
  417. package/dist/node-prod/Money.mjs +12 -9
  418. package/dist/node-prod/Money.mjs.map +1 -1
  419. package/dist/node-prod/ProductPrice.js +13 -18
  420. package/dist/node-prod/ProductPrice.js.map +1 -1
  421. package/dist/node-prod/ProductPrice.mjs +12 -17
  422. package/dist/node-prod/ProductPrice.mjs.map +1 -1
  423. package/dist/node-prod/ProductProvider.js +103 -74
  424. package/dist/node-prod/ProductProvider.js.map +1 -1
  425. package/dist/node-prod/ProductProvider.mjs +102 -73
  426. package/dist/node-prod/ProductProvider.mjs.map +1 -1
  427. package/dist/node-prod/ShopPayButton.js +14 -24
  428. package/dist/node-prod/ShopPayButton.js.map +1 -1
  429. package/dist/node-prod/ShopPayButton.mjs +14 -24
  430. package/dist/node-prod/ShopPayButton.mjs.map +1 -1
  431. package/dist/node-prod/ShopifyProvider.js +23 -33
  432. package/dist/node-prod/ShopifyProvider.js.map +1 -1
  433. package/dist/node-prod/ShopifyProvider.mjs +22 -32
  434. package/dist/node-prod/ShopifyProvider.mjs.map +1 -1
  435. package/dist/node-prod/Video.js +31 -22
  436. package/dist/node-prod/Video.js.map +1 -1
  437. package/dist/node-prod/Video.mjs +30 -21
  438. package/dist/node-prod/Video.mjs.map +1 -1
  439. package/dist/node-prod/_virtual/index.js +11 -3
  440. package/dist/node-prod/_virtual/index.js.map +1 -1
  441. package/dist/node-prod/_virtual/index.mjs +11 -2
  442. package/dist/node-prod/_virtual/index.mjs.map +1 -1
  443. package/dist/node-prod/_virtual/use-sync-external-store-shim.development.js +1 -1
  444. package/dist/node-prod/_virtual/use-sync-external-store-shim.production.min.js +1 -1
  445. package/dist/node-prod/_virtual/with-selector.development.js +1 -1
  446. package/dist/node-prod/_virtual/with-selector.js +11 -3
  447. package/dist/node-prod/_virtual/with-selector.js.map +1 -1
  448. package/dist/node-prod/_virtual/with-selector.mjs +11 -2
  449. package/dist/node-prod/_virtual/with-selector.mjs.map +1 -1
  450. package/dist/node-prod/_virtual/with-selector.production.min.js +1 -1
  451. package/dist/node-prod/analytics-constants.js +43 -0
  452. package/dist/node-prod/analytics-constants.js.map +1 -0
  453. package/dist/node-prod/analytics-constants.mjs +43 -0
  454. package/dist/node-prod/analytics-constants.mjs.map +1 -0
  455. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js +145 -0
  456. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js.map +1 -0
  457. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs +145 -0
  458. package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -0
  459. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.js +58 -0
  460. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.js.map +1 -0
  461. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.mjs +58 -0
  462. package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -0
  463. package/dist/node-prod/analytics-utils.js +49 -0
  464. package/dist/node-prod/analytics-utils.js.map +1 -0
  465. package/dist/node-prod/analytics-utils.mjs +49 -0
  466. package/dist/node-prod/analytics-utils.mjs.map +1 -0
  467. package/dist/node-prod/analytics.js +158 -0
  468. package/dist/node-prod/analytics.js.map +1 -0
  469. package/dist/node-prod/analytics.mjs +158 -0
  470. package/dist/node-prod/analytics.mjs.map +1 -0
  471. package/dist/node-prod/cart-constants.js +1 -1
  472. package/dist/node-prod/cart-hooks.js +29 -34
  473. package/dist/node-prod/cart-hooks.js.map +1 -1
  474. package/dist/node-prod/cart-hooks.mjs +29 -34
  475. package/dist/node-prod/cart-hooks.mjs.map +1 -1
  476. package/dist/node-prod/cart-queries.js +51 -29
  477. package/dist/node-prod/cart-queries.js.map +1 -1
  478. package/dist/node-prod/cart-queries.mjs +50 -28
  479. package/dist/node-prod/cart-queries.mjs.map +1 -1
  480. package/dist/node-prod/codegen.helpers.js +2 -1
  481. package/dist/node-prod/codegen.helpers.js.map +1 -1
  482. package/dist/node-prod/codegen.helpers.mjs +1 -0
  483. package/dist/node-prod/codegen.helpers.mjs.map +1 -1
  484. package/dist/node-prod/cookies-utils.js +50 -0
  485. package/dist/node-prod/cookies-utils.js.map +1 -0
  486. package/dist/node-prod/cookies-utils.mjs +50 -0
  487. package/dist/node-prod/cookies-utils.mjs.map +1 -0
  488. package/dist/node-prod/flatten-connection.js +8 -6
  489. package/dist/node-prod/flatten-connection.js.map +1 -1
  490. package/dist/node-prod/flatten-connection.mjs +7 -5
  491. package/dist/node-prod/flatten-connection.mjs.map +1 -1
  492. package/dist/node-prod/image-size.js +9 -9
  493. package/dist/node-prod/image-size.js.map +1 -1
  494. package/dist/node-prod/image-size.mjs +8 -8
  495. package/dist/node-prod/image-size.mjs.map +1 -1
  496. package/dist/node-prod/index.js +21 -7
  497. package/dist/node-prod/index.js.map +1 -1
  498. package/dist/node-prod/index.mjs +20 -6
  499. package/dist/node-prod/index.mjs.map +1 -1
  500. package/dist/node-prod/load-script.js +1 -1
  501. package/dist/node-prod/load-script.js.map +1 -1
  502. package/dist/node-prod/load-script.mjs.map +1 -1
  503. package/dist/node-prod/node_modules/@xstate/fsm/es/index.js +1 -1
  504. package/dist/node-prod/node_modules/@xstate/fsm/es/index.js.map +1 -1
  505. package/dist/node-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  506. package/dist/node-prod/node_modules/@xstate/react/es/fsm.js +2 -2
  507. package/dist/node-prod/node_modules/@xstate/react/es/fsm.js.map +1 -1
  508. package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs +2 -2
  509. package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  510. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.js +2 -4
  511. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  512. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +2 -4
  513. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  514. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  515. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +2 -4
  516. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
  517. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  518. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +2 -4
  519. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  520. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  521. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +2 -4
  522. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  523. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  524. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.js +4 -4
  525. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  526. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.js +1 -1
  527. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  528. package/dist/node-prod/{metafield-parser.js → parse-metafield.js} +21 -13
  529. package/dist/node-prod/parse-metafield.js.map +1 -0
  530. package/dist/node-prod/{metafield-parser.mjs → parse-metafield.mjs} +20 -12
  531. package/dist/node-prod/parse-metafield.mjs.map +1 -0
  532. package/dist/node-prod/storefront-api-constants.js +2 -2
  533. package/dist/node-prod/storefront-api-constants.js.map +1 -1
  534. package/dist/node-prod/storefront-api-constants.mjs +1 -1
  535. package/dist/node-prod/storefront-api-constants.mjs.map +1 -1
  536. package/dist/node-prod/storefront-client.js +20 -21
  537. package/dist/node-prod/storefront-client.js.map +1 -1
  538. package/dist/node-prod/storefront-client.mjs +19 -20
  539. package/dist/node-prod/storefront-client.mjs.map +1 -1
  540. package/dist/node-prod/useCartAPIStateMachine.js +112 -81
  541. package/dist/node-prod/useCartAPIStateMachine.js.map +1 -1
  542. package/dist/node-prod/useCartAPIStateMachine.mjs +111 -80
  543. package/dist/node-prod/useCartAPIStateMachine.mjs.map +1 -1
  544. package/dist/node-prod/useCartActions.js +151 -110
  545. package/dist/node-prod/useCartActions.js.map +1 -1
  546. package/dist/node-prod/useCartActions.mjs +150 -109
  547. package/dist/node-prod/useCartActions.mjs.map +1 -1
  548. package/dist/node-prod/useMoney.js +63 -37
  549. package/dist/node-prod/useMoney.js.map +1 -1
  550. package/dist/node-prod/useMoney.mjs +62 -36
  551. package/dist/node-prod/useMoney.mjs.map +1 -1
  552. package/dist/node-prod/useShopifyCookies.js +41 -0
  553. package/dist/node-prod/useShopifyCookies.js.map +1 -0
  554. package/dist/node-prod/useShopifyCookies.mjs +41 -0
  555. package/dist/node-prod/useShopifyCookies.mjs.map +1 -0
  556. package/dist/types/AddToCartButton.d.ts +3 -2
  557. package/dist/types/BuyNowButton.d.ts +7 -3
  558. package/dist/types/CartCheckoutButton.d.ts +6 -5
  559. package/dist/types/CartCost.d.ts +7 -5
  560. package/dist/types/CartLinePrice.d.ts +4 -4
  561. package/dist/types/CartLineProvider.d.ts +8 -6
  562. package/dist/types/CartProvider.d.ts +12 -2
  563. package/dist/types/ExternalVideo.d.ts +1 -2
  564. package/dist/types/Image.d.ts +5 -3
  565. package/dist/types/MediaFile.d.ts +12 -11
  566. package/dist/types/ModelViewer.d.ts +2 -2
  567. package/dist/types/ProductPrice.d.ts +1 -1
  568. package/dist/types/ProductProvider.d.ts +1 -1
  569. package/dist/types/ShopPayButton.d.ts +10 -10
  570. package/dist/types/ShopifyProvider.d.ts +36 -40
  571. package/dist/types/analytics-constants.d.ts +48 -0
  572. package/dist/types/analytics-schema-custom-storefront-customer-tracking.d.ts +3 -0
  573. package/dist/types/analytics-schema-trekkie-storefront-page-view.d.ts +2 -0
  574. package/dist/types/analytics-types.d.ts +108 -0
  575. package/dist/types/analytics-utils.d.ts +36 -0
  576. package/dist/types/analytics.d.ts +9 -0
  577. package/dist/types/cart-queries.d.ts +1 -1
  578. package/dist/types/cookies-utils.d.ts +4 -0
  579. package/dist/types/flatten-connection.d.ts +29 -9
  580. package/dist/types/index.d.cts +11 -4
  581. package/dist/types/index.d.ts +11 -4
  582. package/dist/types/{metafield-parser.d.ts → parse-metafield.d.ts} +11 -9
  583. package/dist/types/storefront-api-constants.d.ts +1 -1
  584. package/dist/types/storefront-api-types.d.ts +121 -2
  585. package/dist/types/storefront-client.d.ts +14 -14
  586. package/dist/types/useCartActions.d.ts +1 -1
  587. package/dist/types/useShopifyCookies.d.ts +14 -0
  588. package/dist/umd/hydrogen-react.dev.js +1634 -1371
  589. package/dist/umd/hydrogen-react.dev.js.map +1 -1
  590. package/dist/umd/hydrogen-react.prod.js +18 -25
  591. package/dist/umd/hydrogen-react.prod.js.map +1 -1
  592. package/package.json +24 -19
  593. package/storefront.schema.json +1 -1
  594. package/dist/browser-dev/Metafield.mjs +0 -301
  595. package/dist/browser-dev/Metafield.mjs.map +0 -1
  596. package/dist/browser-dev/metafield-parser.mjs.map +0 -1
  597. package/dist/browser-prod/Metafield.mjs +0 -288
  598. package/dist/browser-prod/Metafield.mjs.map +0 -1
  599. package/dist/browser-prod/metafield-parser.mjs.map +0 -1
  600. package/dist/node-dev/Metafield.js +0 -301
  601. package/dist/node-dev/Metafield.js.map +0 -1
  602. package/dist/node-dev/Metafield.mjs +0 -301
  603. package/dist/node-dev/Metafield.mjs.map +0 -1
  604. package/dist/node-dev/metafield-parser.js.map +0 -1
  605. package/dist/node-dev/metafield-parser.mjs.map +0 -1
  606. package/dist/node-prod/Metafield.js +0 -288
  607. package/dist/node-prod/Metafield.js.map +0 -1
  608. package/dist/node-prod/Metafield.mjs +0 -288
  609. package/dist/node-prod/Metafield.mjs.map +0 -1
  610. package/dist/node-prod/metafield-parser.js.map +0 -1
  611. package/dist/node-prod/metafield-parser.mjs.map +0 -1
  612. package/dist/types/Metafield.d.ts +0 -61
@@ -1 +1 @@
1
- {"version":3,"file":"ShopifyProvider.mjs","sources":["../../src/ShopifyProvider.tsx"],"sourcesContent":["import {createContext, useContext, useMemo, type ReactNode} from 'react';\nimport type {LanguageCode, CountryCode} from './storefront-api-types.js';\nimport {SFAPI_VERSION} from './storefront-api-constants.js';\nimport {getPublicTokenHeadersRaw} from './storefront-client.js';\n\nconst ShopifyContext = createContext<ShopifyContextValue>({\n storeDomain: 'test',\n storefrontToken: 'abc123',\n storefrontApiVersion: SFAPI_VERSION,\n country: {\n isoCode: 'US',\n },\n language: {\n isoCode: 'EN',\n },\n locale: 'EN-US',\n getStorefrontApiUrl() {\n return '';\n },\n getPublicTokenHeaders() {\n return {};\n },\n getShopifyDomain() {\n return '';\n },\n});\n\n/**\n * The `<ShopifyProvider/>` component enables use of the `useShop()` hook. The component should wrap your app.\n */\nexport function ShopifyProvider({\n children,\n shopifyConfig,\n}: {\n children: ReactNode;\n shopifyConfig: ShopifyContextProps;\n}) {\n if (!shopifyConfig) {\n throw new Error(\n `The 'shopifyConfig' prop must be passed to '<ShopifyProvider/>'`\n );\n }\n\n if (shopifyConfig.storefrontApiVersion !== SFAPI_VERSION) {\n console.warn(\n `<ShopifyProvider/>: This version of Hydrogen-UI is built for Shopify's Storefront API version ${SFAPI_VERSION}, but it looks like you're using version ${shopifyConfig.storefrontApiVersion}. There may be issues or bugs if you use a mismatched version of Hydrogen-UI and the Storefront API.`\n );\n }\n\n const finalConfig = useMemo<ShopifyContextValue>(() => {\n const storeDomain = shopifyConfig.storeDomain.replace(/^https?:\\/\\//, '');\n\n // @deprecated remove the ability to pass in '.myshopify.com' strings in the future\n if (storeDomain.includes('.myshopify.com')) {\n if (__HYDROGEN_DEV__) {\n console.warn(\n `<ShopifyProvider/>: passing a 'storeDomain' prop that includes '.myshopify.com' will be unsupported in the future. Passing only the subdomain (for example, if the URL is 'test.myshopify.com', passing in 'test') will be the supported way going forward.`\n );\n }\n }\n\n function getShopifyDomain(overrideProps?: {storeDomain?: string}) {\n let subDomain = overrideProps?.storeDomain ?? storeDomain;\n subDomain = subDomain.replace('.myshopify.com', '');\n\n return `https://${subDomain}.myshopify.com`;\n }\n\n return {\n ...shopifyConfig,\n storeDomain,\n getPublicTokenHeaders(overrideProps) {\n return getPublicTokenHeadersRaw(\n overrideProps.contentType,\n shopifyConfig.storefrontApiVersion,\n overrideProps.storefrontToken ?? shopifyConfig.storefrontToken\n );\n },\n getShopifyDomain,\n getStorefrontApiUrl(overrideProps) {\n if (overrideProps?.storeDomain?.includes('.myshopify.com')) {\n if (__HYDROGEN_DEV__) {\n console.warn(\n `<ShopifyProvider/>: passing a 'storeDomain' prop that includes '.myshopify.com' will be unsupported in the future. Passing only the subdomain (for example, if the URL is 'test.myshopify.com', passing in 'test') will be the supported way going forward.`\n );\n }\n }\n return `${getShopifyDomain({\n storeDomain: overrideProps?.storeDomain ?? storeDomain,\n })}/api/${\n overrideProps?.storefrontApiVersion ??\n shopifyConfig.storefrontApiVersion\n }/graphql.json`;\n },\n };\n }, [shopifyConfig]);\n\n return (\n <ShopifyContext.Provider value={finalConfig}>\n {children}\n </ShopifyContext.Provider>\n );\n}\n\n/**\n * Provides access to the `shopifyConfig` prop of `<ShopifyProvider/>`. Must be a descendent of `<ShopifyProvider/>`.\n */\nexport function useShop() {\n const shopContext = useContext(ShopifyContext);\n if (!shopContext) {\n throw new Error(`'useShop()' must be a descendent of <ShopifyProvider/>`);\n }\n return shopContext;\n}\n\n/**\n * Shopify-specific values that are used in various Hydrogen-UI components and hooks.\n */\nexport type ShopifyContextProps = {\n /** The globally-unique identifier for the Shop */\n storefrontId?: string;\n /** The subdomain of your Shopify storefront URL (eg: `{subdomain}.myshopify.com`). */\n storeDomain: string;\n /** The Storefront API public access token. Refer to the [authentication](https://shopify.dev/api/storefront#authentication) documentation for more details. */\n storefrontToken: string;\n /** The Storefront API version. This should almost always be the same as the version Hydrogen-UI was built for. Learn more about Shopify [API versioning](https://shopify.dev/api/usage/versioning) for more details. */\n storefrontApiVersion: string;\n country?: {\n /**\n * The code designating a country, which generally follows ISO 3166-1 alpha-2 guidelines. If a territory doesn't have a country code value in the `CountryCode` enum, it might be considered a subdivision of another country. For example, the territories associated with Spain are represented by the country code `ES`, and the territories associated with the United States of America are represented by the country code `US`.\n */\n isoCode: CountryCode;\n };\n language?: {\n /**\n * `ISO 369` language codes supported by Shopify.\n */\n isoCode: LanguageCode;\n };\n /**\n * The locale string based on `country` and `language`.\n */\n locale?: string;\n};\n\nexport type ShopifyContextValue = ShopifyContextProps & {\n /**\n * Creates the fully-qualified URL to your store's GraphQL endpoint.\n *\n * By default, it will use the config you passed in when creating `<ShopifyProvider/>`. However, you can override the following settings on each invocation of `getStorefrontApiUrl({...})`:\n *\n * - `storeDomain`\n * - `storefrontApiVersion`\n */\n getStorefrontApiUrl: (props?: {\n /** The host name of the domain (eg: `{shop}.myshopify.com`). */\n storeDomain?: string;\n /** The Storefront API version. This should almost always be the same as the version Hydrogen-UI was built for. Learn more about Shopify [API versioning](https://shopify.dev/api/usage/versioning) for more details. */\n storefrontApiVersion?: string;\n }) => string;\n /**\n * Returns an object that contains headers that are needed for each query to Storefront API GraphQL endpoint. This uses the public Storefront API token.\n *\n * By default, it will use the config you passed in when creating `<ShopifyProvider/>`. However, you can override the following settings on each invocation of `getPublicTokenHeaders({...})`:\n *\n * - `contentType`\n * - `storefrontToken`\n *\n */\n getPublicTokenHeaders: (props: {\n /**\n * Customizes which `\"content-type\"` header is added when using `getPrivateTokenHeaders()` and `getPublicTokenHeaders()`. When fetching with a `JSON.stringify()`-ed `body`, use `\"json\"`. When fetching with a `body` that is a plain string, use `\"graphql\"`. Defaults to `\"json\"`\n */\n contentType: 'json' | 'graphql';\n /** The Storefront API access token. Refer to the [authentication](https://shopify.dev/api/storefront#authentication) documentation for more details. */\n storefrontToken?: string;\n }) => Record<string, string>;\n /**\n * Creates the fully-qualified URL to your myshopify.com domain.\n *\n * By default, it will use the config you passed in when calling `<ShopifyProvider/>`. However, you can override the following settings on each invocation of `getShopifyDomain({...})`:\n *\n * - `storeDomain`\n */\n getShopifyDomain: (props?: {storeDomain?: string}) => string;\n};\n"],"names":["ShopifyContext","createContext","storeDomain","storefrontToken","storefrontApiVersion","SFAPI_VERSION","country","isoCode","language","locale","getStorefrontApiUrl","getPublicTokenHeaders","getShopifyDomain","ShopifyProvider","children","shopifyConfig","Error","console","warn","finalConfig","useMemo","replace","includes","overrideProps","subDomain","getPublicTokenHeadersRaw","contentType","_jsx","useShop","shopContext","useContext"],"mappings":";;;;AAKA,MAAMA,iBAAiBC,cAAmC;AAAA,EACxDC,aAAa;AAAA,EACbC,iBAAiB;AAAA,EACjBC,sBAAsBC;AAAAA,EACtBC,SAAS;AAAA,IACPC,SAAS;AAAA,EACX;AAAA,EACAC,UAAU;AAAA,IACRD,SAAS;AAAA,EACX;AAAA,EACAE,QAAQ;AAAA,EACRC,sBAAsB;AACb,WAAA;AAAA,EACT;AAAA,EACAC,wBAAwB;AACtB,WAAO;EACT;AAAA,EACAC,mBAAmB;AACV,WAAA;AAAA,EACT;AACF,CAAC;AAKM,SAASC,gBAAgB;AAAA,EAC9BC;AAAAA,EACAC;AAIF,GAAG;AACD,MAAI,CAACA,eAAe;AACZ,UAAA,IAAIC,MACP,iEAAgE;AAAA,EAErE;AAEID,MAAAA,cAAcX,yBAAyBC,eAAe;AACxDY,YAAQC,KACL,iGAAgGb,yDAAyDU,cAAcX,0HAA0H;AAAA,EAEtS;AAEMe,QAAAA,cAAcC,QAA6B,MAAM;AACrD,UAAMlB,cAAca,cAAcb,YAAYmB,QAAQ,gBAAgB,EAAE;AAGpEnB,QAAAA,YAAYoB,SAAS,gBAAgB,GAAG;AACpB;AACpBL,gBAAQC,KACL,6PAA4P;AAAA,MAEjQ;AAAA,IACF;AAEA,aAASN,iBAAiBW,eAAwC;;AAC5DC,UAAAA,aAAYD,oDAAerB,gBAAfqB,YAA8BrB;AAClCsB,kBAAAA,UAAUH,QAAQ,kBAAkB,EAAE;AAElD,aAAQ,WAAUG;AAAAA,IACpB;AAEO,WAAA;AAAA,MACL,GAAGT;AAAAA,MACHb;AAAAA,MACAS,sBAAsBY,eAAe;;AAC5BE,eAAAA,yBACLF,cAAcG,aACdX,cAAcX,uBACdmB,mBAAcpB,oBAAdoB,YAAiCR,cAAcZ,eAAe;AAAA,MAElE;AAAA,MACAS;AAAAA,MACAF,oBAAoBa,eAAe;;AACjC,aAAIA,oDAAerB,gBAAfqB,mBAA4BD,SAAS,mBAAmB;AACpC;AACpBL,oBAAQC,KACL,6PAA4P;AAAA,UAEjQ;AAAA,QACF;AACA,eAAQ,GAAEN,iBAAiB;AAAA,UACzBV,cAAaqB,oDAAerB,gBAAfqB,YAA8BrB;AAAAA,QAAAA,CAC5C,UACCqB,oDAAenB,yBAAfmB,YACAR,cAAcX;AAAAA,MAElB;AAAA,IAAA;AAAA,EACF,GACC,CAACW,aAAa,CAAC;AAGhB,SAAAY,oBAAC,eAAe,UAAQ;AAAA,IAAC,OAAOR;AAAAA,IAAY;AAAA,EAAA,CAElB;AAE9B;AAKO,SAASS,UAAU;AAClBC,QAAAA,cAAcC,WAAW9B,cAAc;AAC7C,MAAI,CAAC6B,aAAa;AACV,UAAA,IAAIb,MAAO,wDAAuD;AAAA,EAC1E;AACOa,SAAAA;AACT;"}
1
+ {"version":3,"file":"ShopifyProvider.mjs","sources":["../../src/ShopifyProvider.tsx"],"sourcesContent":["import {createContext, useContext, useMemo, type ReactNode} from 'react';\nimport type {LanguageCode, CountryCode} from './storefront-api-types.js';\nimport {SFAPI_VERSION} from './storefront-api-constants.js';\nimport {getPublicTokenHeadersRaw} from './storefront-client.js';\n\nconst ShopifyContext = createContext<ShopifyContextValue>({\n storeDomain: 'test',\n storefrontToken: 'abc123',\n storefrontApiVersion: SFAPI_VERSION,\n countryIsoCode: 'US',\n languageIsoCode: 'EN',\n getStorefrontApiUrl() {\n return '';\n },\n getPublicTokenHeaders() {\n return {};\n },\n getShopifyDomain() {\n return '';\n },\n});\n\n/**\n * The `<ShopifyProvider/>` component enables use of the `useShop()` hook. The component should wrap your app.\n */\nexport function ShopifyProvider({\n children,\n ...shopifyConfig\n}: ShopifyProviderProps) {\n if (\n !shopifyConfig.countryIsoCode ||\n !shopifyConfig.languageIsoCode ||\n !shopifyConfig.storeDomain ||\n !shopifyConfig.storefrontToken ||\n !shopifyConfig.storefrontApiVersion\n ) {\n throw new Error(\n `Please provide the necessary props to '<ShopifyProvider/>'`\n );\n }\n\n if (shopifyConfig.storefrontApiVersion !== SFAPI_VERSION) {\n console.warn(\n `<ShopifyProvider/>: This version of Hydrogen React is built for Shopify's Storefront API version ${SFAPI_VERSION}, but it looks like you're using version ${shopifyConfig.storefrontApiVersion}. There may be issues or bugs if you use a mismatched version of Hydrogen React and the Storefront API.`\n );\n }\n\n const finalConfig = useMemo<ShopifyContextValue>(() => {\n function getShopifyDomain(overrideProps?: {storeDomain?: string}) {\n return overrideProps?.storeDomain ?? shopifyConfig.storeDomain;\n }\n\n return {\n ...shopifyConfig,\n getPublicTokenHeaders(overrideProps) {\n return getPublicTokenHeadersRaw(\n overrideProps.contentType,\n shopifyConfig.storefrontApiVersion,\n overrideProps.storefrontToken ?? shopifyConfig.storefrontToken\n );\n },\n getShopifyDomain,\n getStorefrontApiUrl(overrideProps) {\n const finalDomainUrl = getShopifyDomain({\n storeDomain: overrideProps?.storeDomain ?? shopifyConfig.storeDomain,\n });\n return `${finalDomainUrl}${\n finalDomainUrl.endsWith('/') ? '' : '/'\n }api/${\n overrideProps?.storefrontApiVersion ??\n shopifyConfig.storefrontApiVersion\n }/graphql.json`;\n },\n };\n }, [shopifyConfig]);\n\n return (\n <ShopifyContext.Provider value={finalConfig}>\n {children}\n </ShopifyContext.Provider>\n );\n}\n\n/**\n * Provides access to the `shopifyConfig` prop of `<ShopifyProvider/>`. Must be a descendent of `<ShopifyProvider/>`.\n */\nexport function useShop(): ShopifyContextValue {\n const shopContext = useContext(ShopifyContext);\n if (!shopContext) {\n throw new Error(`'useShop()' must be a descendent of <ShopifyProvider/>`);\n }\n return shopContext;\n}\n\n/**\n * Shopify-specific values that are used in various Hydrogen React components and hooks.\n */\nexport type ShopifyProviderProps = {\n /** The globally-unique identifier for the Shop */\n storefrontId?: string;\n /** The full domain of your Shopify storefront URL (eg: the complete string of `{subdomain}.myshopify.com`). */\n storeDomain: string;\n /** The Storefront API public access token. Refer to the [authentication](https://shopify.dev/api/storefront#authentication) documentation for more details. */\n storefrontToken: string;\n /** The Storefront API version. This should almost always be the same as the version Hydrogen React was built for. Learn more about Shopify [API versioning](https://shopify.dev/api/usage/versioning) for more details. */\n storefrontApiVersion: string;\n /**\n * The code designating a country, which generally follows ISO 3166-1 alpha-2 guidelines. If a territory doesn't have a country code value in the `CountryCode` enum, it might be considered a subdivision of another country. For example, the territories associated with Spain are represented by the country code `ES`, and the territories associated with the United States of America are represented by the country code `US`.\n */\n countryIsoCode: CountryCode;\n /**\n * `ISO 369` language codes supported by Shopify.\n */\n languageIsoCode: LanguageCode;\n /** React children to render. */\n children?: ReactNode;\n};\n\nexport type ShopifyContextValue = Omit<ShopifyProviderProps, 'children'> &\n ShopifyContextReturn;\n\ntype ShopifyContextReturn = {\n /**\n * Creates the fully-qualified URL to your store's GraphQL endpoint.\n *\n * By default, it will use the config you passed in when creating `<ShopifyProvider/>`. However, you can override the following settings on each invocation of `getStorefrontApiUrl({...})`:\n *\n * - `storeDomain`\n * - `storefrontApiVersion`\n */\n getStorefrontApiUrl: (props?: GetStorefrontApiUrlProps) => string;\n /**\n * Returns an object that contains headers that are needed for each query to Storefront API GraphQL endpoint. This uses the public Storefront API token.\n *\n * By default, it will use the config you passed in when creating `<ShopifyProvider/>`. However, you can override the following settings on each invocation of `getPublicTokenHeaders({...})`:\n *\n * - `contentType`\n * - `storefrontToken`\n *\n */\n getPublicTokenHeaders: (\n props: GetPublicTokenHeadersProps\n ) => Record<string, string>;\n /**\n * Creates the fully-qualified URL to your myshopify.com domain.\n *\n * By default, it will use the config you passed in when calling `<ShopifyProvider/>`. However, you can override the following settings on each invocation of `getShopifyDomain({...})`:\n *\n * - `storeDomain`\n */\n getShopifyDomain: (props?: GetShopifyDomainProps) => string;\n};\n\ntype GetStorefrontApiUrlProps = {\n /** The host name of the domain (eg: `{shop}.myshopify.com`). */\n storeDomain?: string;\n /** The Storefront API version. This should almost always be the same as the version Hydrogen-UI was built for. Learn more about Shopify [API versioning](https://shopify.dev/api/usage/versioning) for more details. */\n storefrontApiVersion?: string;\n};\n\ntype GetPublicTokenHeadersProps = {\n /**\n * Customizes which `\"content-type\"` header is added when using `getPrivateTokenHeaders()` and `getPublicTokenHeaders()`. When fetching with a `JSON.stringify()`-ed `body`, use `\"json\"`. When fetching with a `body` that is a plain string, use `\"graphql\"`. Defaults to `\"json\"`\n */\n contentType: 'json' | 'graphql';\n /** The Storefront API access token. Refer to the [authentication](https://shopify.dev/api/storefront#authentication) documentation for more details. */\n storefrontToken?: string;\n};\n\ntype GetShopifyDomainProps = {storeDomain?: string};\n"],"names":[],"mappings":";;;;AAKA,MAAM,iBAAiB,cAAmC;AAAA,EACxD,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,sBAAsB;AAAA,EACtB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,sBAAsB;AACb,WAAA;AAAA,EACT;AAAA,EACA,wBAAwB;AACtB,WAAO;EACT;AAAA,EACA,mBAAmB;AACV,WAAA;AAAA,EACT;AACF,CAAC;AAKM,SAAS,gBAAgB;AAAA,EAC9B;AAAA,EACA,GAAG;AACL,GAAyB;AACvB,MACE,CAAC,cAAc,kBACf,CAAC,cAAc,mBACf,CAAC,cAAc,eACf,CAAC,cAAc,mBACf,CAAC,cAAc,sBACf;AACA,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AAEI,MAAA,cAAc,yBAAyB,eAAe;AAChD,YAAA;AAAA,MACN,oGAAoG,yDAAyD,cAAc;AAAA,IAAA;AAAA,EAE/K;AAEM,QAAA,cAAc,QAA6B,MAAM;AACrD,aAAS,iBAAiB,eAAwC;AACzD,cAAA,+CAAe,gBAAe,cAAc;AAAA,IACrD;AAEO,WAAA;AAAA,MACL,GAAG;AAAA,MACH,sBAAsB,eAAe;AAC5B,eAAA;AAAA,UACL,cAAc;AAAA,UACd,cAAc;AAAA,UACd,cAAc,mBAAmB,cAAc;AAAA,QAAA;AAAA,MAEnD;AAAA,MACA;AAAA,MACA,oBAAoB,eAAe;AACjC,cAAM,iBAAiB,iBAAiB;AAAA,UACtC,cAAa,+CAAe,gBAAe,cAAc;AAAA,QAAA,CAC1D;AACM,eAAA,GAAG,iBACR,eAAe,SAAS,GAAG,IAAI,KAAK,WAEpC,+CAAe,yBACf,cAAc;AAAA,MAElB;AAAA,IAAA;AAAA,EACF,GACC,CAAC,aAAa,CAAC;AAElB,6BACG,eAAe,UAAf,EAAwB,OAAO,aAC7B,SACH,CAAA;AAEJ;AAKO,SAAS,UAA+B;AACvC,QAAA,cAAc,WAAW,cAAc;AAC7C,MAAI,CAAC,aAAa;AACV,UAAA,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AACO,SAAA;AACT;"}
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- const imageSize = require("./image-size.js");
4
- const require$$0 = require("react");
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
5
3
  const jsxRuntime = require("react/jsx-runtime");
4
+ const require$$0 = require("react");
5
+ const imageSize = require("./image-size.js");
6
6
  function Video(props) {
7
- var _a, _b;
7
+ var _a;
8
8
  const {
9
9
  data,
10
10
  previewImageOptions,
@@ -15,30 +15,39 @@ function Video(props) {
15
15
  ...passthroughProps
16
16
  } = props;
17
17
  const posterUrl = imageSize.shopifyImageLoader({
18
- src: (_b = (_a = data.previewImage) == null ? void 0 : _a.url) != null ? _b : "",
18
+ src: ((_a = data.previewImage) == null ? void 0 : _a.url) ?? "",
19
19
  ...previewImageOptions
20
20
  });
21
21
  if (!data.sources) {
22
22
  throw new Error(`<Video/> requires a 'data.sources' array`);
23
23
  }
24
- return /* @__PURE__ */ jsxRuntime.jsx("video", {
25
- ...passthroughProps,
26
- id,
27
- playsInline,
28
- controls,
29
- poster: posterUrl,
30
- children: data.sources.map((source) => {
31
- if (!((source == null ? void 0 : source.url) && (source == null ? void 0 : source.mimeType))) {
32
- throw new Error(`<Video/> needs 'source.url' and 'source.mimeType'`);
24
+ return (
25
+ // eslint-disable-next-line jsx-a11y/media-has-caption
26
+ /* @__PURE__ */ jsxRuntime.jsx(
27
+ "video",
28
+ {
29
+ ...passthroughProps,
30
+ id,
31
+ playsInline,
32
+ controls,
33
+ poster: posterUrl,
34
+ children: data.sources.map((source) => {
35
+ if (!((source == null ? void 0 : source.url) && (source == null ? void 0 : source.mimeType))) {
36
+ throw new Error(`<Video/> needs 'source.url' and 'source.mimeType'`);
37
+ }
38
+ return /* @__PURE__ */ require$$0.createElement(
39
+ "source",
40
+ {
41
+ ...sourceProps,
42
+ key: source.url,
43
+ src: source.url,
44
+ type: source.mimeType
45
+ }
46
+ );
47
+ })
33
48
  }
34
- return /* @__PURE__ */ require$$0.createElement("source", {
35
- ...sourceProps,
36
- key: source.url,
37
- src: source.url,
38
- type: source.mimeType
39
- });
40
- })
41
- });
49
+ )
50
+ );
42
51
  }
43
52
  exports.Video = Video;
44
53
  //# sourceMappingURL=Video.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Video.js","sources":["../../src/Video.tsx"],"sourcesContent":["import {type HTMLAttributes} from 'react';\nimport {shopifyImageLoader} from './image-size.js';\nimport type {Video as VideoType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\nexport interface VideoProps {\n /** An object with fields that correspond to the Storefront API's [Video object](https://shopify.dev/api/storefront/latest/objects/video). */\n data: PartialDeep<VideoType, {recurseIntoArrays: true}>;\n /** An object of image size options for the video's `previewImage`. Uses `shopifyImageLoader` to generate the `poster` URL. */\n previewImageOptions?: Parameters<typeof shopifyImageLoader>[0];\n /** Props that will be passed to the `video` element's `source` children elements. */\n sourceProps?: HTMLAttributes<HTMLSourceElement> & {\n 'data-testid'?: string;\n };\n}\n\n/**\n * The `Video` component renders a `video` for the Storefront API's [Video object](https://shopify.dev/api/storefront/reference/products/video).\n */\nexport function Video(props: JSX.IntrinsicElements['video'] & VideoProps) {\n const {\n data,\n previewImageOptions,\n id = data.id,\n playsInline = true,\n controls = true,\n sourceProps = {},\n ...passthroughProps\n } = props;\n\n const posterUrl = shopifyImageLoader({\n src: data.previewImage?.url ?? '',\n ...previewImageOptions,\n });\n\n if (!data.sources) {\n throw new Error(`<Video/> requires a 'data.sources' array`);\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n {...passthroughProps}\n id={id}\n playsInline={playsInline}\n controls={controls}\n poster={posterUrl}\n >\n {data.sources.map((source) => {\n if (!(source?.url && source?.mimeType)) {\n throw new Error(`<Video/> needs 'source.url' and 'source.mimeType'`);\n }\n return (\n <source\n {...sourceProps}\n key={source.url}\n src={source.url}\n type={source.mimeType}\n />\n );\n })}\n </video>\n );\n}\n"],"names":["Video","props","data","previewImageOptions","id","playsInline","controls","sourceProps","passthroughProps","posterUrl","shopifyImageLoader","src","previewImage","url","sources","Error","map","source","mimeType"],"mappings":";;;;;AAmBO,SAASA,MAAMC,OAAoD;;AAClE,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC,KAAKF,KAAKE;AAAAA,IACVC,cAAc;AAAA,IACdC,WAAW;AAAA,IACXC,cAAc,CAAC;AAAA,OACZC;AAAAA,EACDP,IAAAA;AAEJ,QAAMQ,YAAYC,UAAAA,mBAAmB;AAAA,IACnCC,MAAKT,gBAAKU,iBAALV,mBAAmBW,QAAnBX,YAA0B;AAAA,IAC/B,GAAGC;AAAAA,EAAAA,CACJ;AAEG,MAAA,CAACD,KAAKY,SAAS;AACX,UAAA,IAAIC,MAAO,0CAAyC;AAAA,EAC5D;AAEA,wCAEE,SAAA;AAAA,IAAA,GACMP;AAAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQC;AAAAA,IAAU,UAEjBP,KAAKY,QAAQE,IAAKC,CAAW,WAAA;AAC5B,UAAI,GAAEA,iCAAQJ,SAAOI,iCAAQC,YAAW;AAChC,cAAA,IAAIH,MAAO,mDAAkD;AAAA,MACrE;AACA,sDACE,UAAA;AAAA,QAAA,GACMR;AAAAA,QACJ,KAAKU,OAAOJ;AAAAA,QACZ,KAAKI,OAAOJ;AAAAA,QACZ,MAAMI,OAAOC;AAAAA,MAAAA,CACb;AAAA,IAAA,CAEL;AAAA,EAAA,CAAC;AAGR;;"}
1
+ {"version":3,"file":"Video.js","sources":["../../src/Video.tsx"],"sourcesContent":["import {type HTMLAttributes} from 'react';\nimport {shopifyImageLoader} from './image-size.js';\nimport type {Video as VideoType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\nexport interface VideoProps {\n /** An object with fields that correspond to the Storefront API's [Video object](https://shopify.dev/api/storefront/latest/objects/video). */\n data: PartialDeep<VideoType, {recurseIntoArrays: true}>;\n /** An object of image size options for the video's `previewImage`. Uses `shopifyImageLoader` to generate the `poster` URL. */\n previewImageOptions?: Parameters<typeof shopifyImageLoader>[0];\n /** Props that will be passed to the `video` element's `source` children elements. */\n sourceProps?: HTMLAttributes<HTMLSourceElement> & {\n 'data-testid'?: string;\n };\n}\n\n/**\n * The `Video` component renders a `video` for the Storefront API's [Video object](https://shopify.dev/api/storefront/reference/products/video).\n */\nexport function Video(props: JSX.IntrinsicElements['video'] & VideoProps) {\n const {\n data,\n previewImageOptions,\n id = data.id,\n playsInline = true,\n controls = true,\n sourceProps = {},\n ...passthroughProps\n } = props;\n\n const posterUrl = shopifyImageLoader({\n src: data.previewImage?.url ?? '',\n ...previewImageOptions,\n });\n\n if (!data.sources) {\n throw new Error(`<Video/> requires a 'data.sources' array`);\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n {...passthroughProps}\n id={id}\n playsInline={playsInline}\n controls={controls}\n poster={posterUrl}\n >\n {data.sources.map((source) => {\n if (!(source?.url && source?.mimeType)) {\n throw new Error(`<Video/> needs 'source.url' and 'source.mimeType'`);\n }\n return (\n <source\n {...sourceProps}\n key={source.url}\n src={source.url}\n type={source.mimeType}\n />\n );\n })}\n </video>\n );\n}\n"],"names":["shopifyImageLoader","jsx","createElement"],"mappings":";;;;;AAmBO,SAAS,MAAM,OAAoD;;AAClE,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA,KAAK,KAAK;AAAA,IACV,cAAc;AAAA,IACd,WAAW;AAAA,IACX,cAAc,CAAC;AAAA,IACf,GAAG;AAAA,EACD,IAAA;AAEJ,QAAM,YAAYA,UAAAA,mBAAmB;AAAA,IACnC,OAAK,UAAK,iBAAL,mBAAmB,QAAO;AAAA,IAC/B,GAAG;AAAA,EAAA,CACJ;AAEG,MAAA,CAAC,KAAK,SAAS;AACX,UAAA,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AAEA;AAAA;AAAA,IAEEC,2BAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,GAAG;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QAEP,UAAK,KAAA,QAAQ,IAAI,CAAC,WAAW;AAC5B,cAAI,GAAE,iCAAQ,SAAO,iCAAQ,YAAW;AAChC,kBAAA,IAAI,MAAM,mDAAmD;AAAA,UACrE;AAEE,iBAAAC,2BAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACE,GAAG;AAAA,cACJ,KAAK,OAAO;AAAA,cACZ,KAAK,OAAO;AAAA,cACZ,MAAM,OAAO;AAAA,YAAA;AAAA,UAAA;AAAA,QACf,CAEH;AAAA,MAAA;AAAA,IACH;AAAA;AAEJ;;"}
@@ -1,8 +1,8 @@
1
- import { shopifyImageLoader } from "./image-size.mjs";
2
- import { createElement } from "react";
3
1
  import { jsx } from "react/jsx-runtime";
2
+ import { createElement } from "react";
3
+ import { shopifyImageLoader } from "./image-size.mjs";
4
4
  function Video(props) {
5
- var _a, _b;
5
+ var _a;
6
6
  const {
7
7
  data,
8
8
  previewImageOptions,
@@ -13,30 +13,39 @@ function Video(props) {
13
13
  ...passthroughProps
14
14
  } = props;
15
15
  const posterUrl = shopifyImageLoader({
16
- src: (_b = (_a = data.previewImage) == null ? void 0 : _a.url) != null ? _b : "",
16
+ src: ((_a = data.previewImage) == null ? void 0 : _a.url) ?? "",
17
17
  ...previewImageOptions
18
18
  });
19
19
  if (!data.sources) {
20
20
  throw new Error(`<Video/> requires a 'data.sources' array`);
21
21
  }
22
- return /* @__PURE__ */ jsx("video", {
23
- ...passthroughProps,
24
- id,
25
- playsInline,
26
- controls,
27
- poster: posterUrl,
28
- children: data.sources.map((source) => {
29
- if (!((source == null ? void 0 : source.url) && (source == null ? void 0 : source.mimeType))) {
30
- throw new Error(`<Video/> needs 'source.url' and 'source.mimeType'`);
22
+ return (
23
+ // eslint-disable-next-line jsx-a11y/media-has-caption
24
+ /* @__PURE__ */ jsx(
25
+ "video",
26
+ {
27
+ ...passthroughProps,
28
+ id,
29
+ playsInline,
30
+ controls,
31
+ poster: posterUrl,
32
+ children: data.sources.map((source) => {
33
+ if (!((source == null ? void 0 : source.url) && (source == null ? void 0 : source.mimeType))) {
34
+ throw new Error(`<Video/> needs 'source.url' and 'source.mimeType'`);
35
+ }
36
+ return /* @__PURE__ */ createElement(
37
+ "source",
38
+ {
39
+ ...sourceProps,
40
+ key: source.url,
41
+ src: source.url,
42
+ type: source.mimeType
43
+ }
44
+ );
45
+ })
31
46
  }
32
- return /* @__PURE__ */ createElement("source", {
33
- ...sourceProps,
34
- key: source.url,
35
- src: source.url,
36
- type: source.mimeType
37
- });
38
- })
39
- });
47
+ )
48
+ );
40
49
  }
41
50
  export {
42
51
  Video
@@ -1 +1 @@
1
- {"version":3,"file":"Video.mjs","sources":["../../src/Video.tsx"],"sourcesContent":["import {type HTMLAttributes} from 'react';\nimport {shopifyImageLoader} from './image-size.js';\nimport type {Video as VideoType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\nexport interface VideoProps {\n /** An object with fields that correspond to the Storefront API's [Video object](https://shopify.dev/api/storefront/latest/objects/video). */\n data: PartialDeep<VideoType, {recurseIntoArrays: true}>;\n /** An object of image size options for the video's `previewImage`. Uses `shopifyImageLoader` to generate the `poster` URL. */\n previewImageOptions?: Parameters<typeof shopifyImageLoader>[0];\n /** Props that will be passed to the `video` element's `source` children elements. */\n sourceProps?: HTMLAttributes<HTMLSourceElement> & {\n 'data-testid'?: string;\n };\n}\n\n/**\n * The `Video` component renders a `video` for the Storefront API's [Video object](https://shopify.dev/api/storefront/reference/products/video).\n */\nexport function Video(props: JSX.IntrinsicElements['video'] & VideoProps) {\n const {\n data,\n previewImageOptions,\n id = data.id,\n playsInline = true,\n controls = true,\n sourceProps = {},\n ...passthroughProps\n } = props;\n\n const posterUrl = shopifyImageLoader({\n src: data.previewImage?.url ?? '',\n ...previewImageOptions,\n });\n\n if (!data.sources) {\n throw new Error(`<Video/> requires a 'data.sources' array`);\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n {...passthroughProps}\n id={id}\n playsInline={playsInline}\n controls={controls}\n poster={posterUrl}\n >\n {data.sources.map((source) => {\n if (!(source?.url && source?.mimeType)) {\n throw new Error(`<Video/> needs 'source.url' and 'source.mimeType'`);\n }\n return (\n <source\n {...sourceProps}\n key={source.url}\n src={source.url}\n type={source.mimeType}\n />\n );\n })}\n </video>\n );\n}\n"],"names":["Video","props","data","previewImageOptions","id","playsInline","controls","sourceProps","passthroughProps","posterUrl","shopifyImageLoader","src","previewImage","url","sources","Error","map","source","mimeType"],"mappings":";;;AAmBO,SAASA,MAAMC,OAAoD;;AAClE,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC,KAAKF,KAAKE;AAAAA,IACVC,cAAc;AAAA,IACdC,WAAW;AAAA,IACXC,cAAc,CAAC;AAAA,OACZC;AAAAA,EACDP,IAAAA;AAEJ,QAAMQ,YAAYC,mBAAmB;AAAA,IACnCC,MAAKT,gBAAKU,iBAALV,mBAAmBW,QAAnBX,YAA0B;AAAA,IAC/B,GAAGC;AAAAA,EAAAA,CACJ;AAEG,MAAA,CAACD,KAAKY,SAAS;AACX,UAAA,IAAIC,MAAO,0CAAyC;AAAA,EAC5D;AAEA,6BAEE,SAAA;AAAA,IAAA,GACMP;AAAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQC;AAAAA,IAAU,UAEjBP,KAAKY,QAAQE,IAAKC,CAAW,WAAA;AAC5B,UAAI,GAAEA,iCAAQJ,SAAOI,iCAAQC,YAAW;AAChC,cAAA,IAAIH,MAAO,mDAAkD;AAAA,MACrE;AACA,2CACE,UAAA;AAAA,QAAA,GACMR;AAAAA,QACJ,KAAKU,OAAOJ;AAAAA,QACZ,KAAKI,OAAOJ;AAAAA,QACZ,MAAMI,OAAOC;AAAAA,MAAAA,CACb;AAAA,IAAA,CAEL;AAAA,EAAA,CAAC;AAGR;"}
1
+ {"version":3,"file":"Video.mjs","sources":["../../src/Video.tsx"],"sourcesContent":["import {type HTMLAttributes} from 'react';\nimport {shopifyImageLoader} from './image-size.js';\nimport type {Video as VideoType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\nexport interface VideoProps {\n /** An object with fields that correspond to the Storefront API's [Video object](https://shopify.dev/api/storefront/latest/objects/video). */\n data: PartialDeep<VideoType, {recurseIntoArrays: true}>;\n /** An object of image size options for the video's `previewImage`. Uses `shopifyImageLoader` to generate the `poster` URL. */\n previewImageOptions?: Parameters<typeof shopifyImageLoader>[0];\n /** Props that will be passed to the `video` element's `source` children elements. */\n sourceProps?: HTMLAttributes<HTMLSourceElement> & {\n 'data-testid'?: string;\n };\n}\n\n/**\n * The `Video` component renders a `video` for the Storefront API's [Video object](https://shopify.dev/api/storefront/reference/products/video).\n */\nexport function Video(props: JSX.IntrinsicElements['video'] & VideoProps) {\n const {\n data,\n previewImageOptions,\n id = data.id,\n playsInline = true,\n controls = true,\n sourceProps = {},\n ...passthroughProps\n } = props;\n\n const posterUrl = shopifyImageLoader({\n src: data.previewImage?.url ?? '',\n ...previewImageOptions,\n });\n\n if (!data.sources) {\n throw new Error(`<Video/> requires a 'data.sources' array`);\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n {...passthroughProps}\n id={id}\n playsInline={playsInline}\n controls={controls}\n poster={posterUrl}\n >\n {data.sources.map((source) => {\n if (!(source?.url && source?.mimeType)) {\n throw new Error(`<Video/> needs 'source.url' and 'source.mimeType'`);\n }\n return (\n <source\n {...sourceProps}\n key={source.url}\n src={source.url}\n type={source.mimeType}\n />\n );\n })}\n </video>\n );\n}\n"],"names":[],"mappings":";;;AAmBO,SAAS,MAAM,OAAoD;;AAClE,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA,KAAK,KAAK;AAAA,IACV,cAAc;AAAA,IACd,WAAW;AAAA,IACX,cAAc,CAAC;AAAA,IACf,GAAG;AAAA,EACD,IAAA;AAEJ,QAAM,YAAY,mBAAmB;AAAA,IACnC,OAAK,UAAK,iBAAL,mBAAmB,QAAO;AAAA,IAC/B,GAAG;AAAA,EAAA,CACJ;AAEG,MAAA,CAAC,KAAK,SAAS;AACX,UAAA,IAAI,MAAM,0CAA0C;AAAA,EAC5D;AAEA;AAAA;AAAA,IAEE;AAAA,MAAC;AAAA,MAAA;AAAA,QACE,GAAG;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,QAEP,UAAK,KAAA,QAAQ,IAAI,CAAC,WAAW;AAC5B,cAAI,GAAE,iCAAQ,SAAO,iCAAQ,YAAW;AAChC,kBAAA,IAAI,MAAM,mDAAmD;AAAA,UACrE;AAEE,iBAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACE,GAAG;AAAA,cACJ,KAAK,OAAO;AAAA,cACZ,KAAK,OAAO;AAAA,cACZ,MAAM,OAAO;AAAA,YAAA;AAAA,UAAA;AAAA,QACf,CAEH;AAAA,MAAA;AAAA,IACH;AAAA;AAEJ;"}
@@ -1,5 +1,13 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- var shim = { exports: {} };
4
- exports.shim = shim;
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ exports.exports = {};
4
+ var shim = {
5
+ get exports() {
6
+ return exports.exports;
7
+ },
8
+ set exports(v) {
9
+ exports.exports = v;
10
+ }
11
+ };
12
+ exports.__module = shim;
5
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -1,5 +1,14 @@
1
- var shim = { exports: {} };
1
+ var shimExports = {};
2
+ var shim = {
3
+ get exports() {
4
+ return shimExports;
5
+ },
6
+ set exports(v) {
7
+ shimExports = v;
8
+ }
9
+ };
2
10
  export {
3
- shim as s
11
+ shim as __module,
12
+ shimExports as exports
4
13
  };
5
14
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  var useSyncExternalStoreShim_development = {};
4
4
  exports.__exports = useSyncExternalStoreShim_development;
5
5
  //# sourceMappingURL=use-sync-external-store-shim.development.js.map
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  var useSyncExternalStoreShim_production_min = {};
4
4
  exports.__exports = useSyncExternalStoreShim_production_min;
5
5
  //# sourceMappingURL=use-sync-external-store-shim.production.min.js.map
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  var withSelector_development = {};
4
4
  exports.__exports = withSelector_development;
5
5
  //# sourceMappingURL=with-selector.development.js.map
@@ -1,5 +1,13 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
3
- var withSelector = { exports: {} };
4
- exports.withSelector = withSelector;
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ exports.exports = {};
4
+ var withSelector = {
5
+ get exports() {
6
+ return exports.exports;
7
+ },
8
+ set exports(v) {
9
+ exports.exports = v;
10
+ }
11
+ };
12
+ exports.__module = withSelector;
5
13
  //# sourceMappingURL=with-selector.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"with-selector.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
1
+ {"version":3,"file":"with-selector.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;"}
@@ -1,5 +1,14 @@
1
- var withSelector = { exports: {} };
1
+ var withSelectorExports = {};
2
+ var withSelector = {
3
+ get exports() {
4
+ return withSelectorExports;
5
+ },
6
+ set exports(v) {
7
+ withSelectorExports = v;
8
+ }
9
+ };
2
10
  export {
3
- withSelector as w
11
+ withSelector as __module,
12
+ withSelectorExports as exports
4
13
  };
5
14
  //# sourceMappingURL=with-selector.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"with-selector.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
1
+ {"version":3,"file":"with-selector.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
3
  var withSelector_production_min = {};
4
4
  exports.__exports = withSelector_production_min;
5
5
  //# sourceMappingURL=with-selector.production.min.js.map
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const AnalyticsEventName = {
4
+ PAGE_VIEW: "PAGE_VIEW",
5
+ ADD_TO_CART: "ADD_TO_CART"
6
+ };
7
+ const AnalyticsPageType = {
8
+ article: "article",
9
+ blog: "blog",
10
+ captcha: "captcha",
11
+ cart: "cart",
12
+ collection: "collection",
13
+ customersAccount: "customers/account",
14
+ customersActivateAccount: "customers/activate_account",
15
+ customersAddresses: "customers/addresses",
16
+ customersLogin: "customers/login",
17
+ customersOrder: "customers/order",
18
+ customersRegister: "customers/register",
19
+ customersResetPassword: "customers/reset_password",
20
+ giftCard: "gift_card",
21
+ home: "index",
22
+ listCollections: "list-collections",
23
+ forbidden: "403",
24
+ notFound: "404",
25
+ page: "page",
26
+ password: "password",
27
+ product: "product",
28
+ policy: "policy",
29
+ search: "search"
30
+ };
31
+ const ShopifySalesChannel = {
32
+ hydrogen: "hydrogen",
33
+ headless: "headless"
34
+ };
35
+ const ShopifyAppId = {
36
+ hydrogen: "6167201",
37
+ headless: "12875497473"
38
+ };
39
+ exports.AnalyticsEventName = AnalyticsEventName;
40
+ exports.AnalyticsPageType = AnalyticsPageType;
41
+ exports.ShopifyAppId = ShopifyAppId;
42
+ exports.ShopifySalesChannel = ShopifySalesChannel;
43
+ //# sourceMappingURL=analytics-constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-constants.js","sources":["../../src/analytics-constants.ts"],"sourcesContent":["export const AnalyticsEventName: AnalyticsEventName = {\n PAGE_VIEW: 'PAGE_VIEW',\n ADD_TO_CART: 'ADD_TO_CART',\n} as const;\n\nexport const AnalyticsPageType: AnalyticsPageType = {\n article: 'article',\n blog: 'blog',\n captcha: 'captcha',\n cart: 'cart',\n collection: 'collection',\n customersAccount: 'customers/account',\n customersActivateAccount: 'customers/activate_account',\n customersAddresses: 'customers/addresses',\n customersLogin: 'customers/login',\n customersOrder: 'customers/order',\n customersRegister: 'customers/register',\n customersResetPassword: 'customers/reset_password',\n giftCard: 'gift_card',\n home: 'index',\n listCollections: 'list-collections',\n forbidden: '403',\n notFound: '404',\n page: 'page',\n password: 'password',\n product: 'product',\n policy: 'policy',\n search: 'search',\n} as const;\n\nexport const ShopifySalesChannel: ShopifySalesChannel = {\n hydrogen: 'hydrogen',\n headless: 'headless',\n} as const;\n\nexport const ShopifyAppId = {\n hydrogen: '6167201',\n headless: '12875497473',\n} as const;\n\n/**\n * These duplicated interface declaration is so that we can generate proper documentation\n * for these public facing constants\n */\ninterface AnalyticsEventName {\n /** Page view */\n PAGE_VIEW: 'PAGE_VIEW';\n /** Add to cart */\n ADD_TO_CART: 'ADD_TO_CART';\n}\n\ninterface AnalyticsPageType {\n article: 'article';\n blog: 'blog';\n captcha: 'captcha';\n cart: 'cart';\n collection: 'collection';\n customersAccount: 'customers/account';\n customersActivateAccount: 'customers/activate_account';\n customersAddresses: 'customers/addresses';\n customersLogin: 'customers/login';\n customersOrder: 'customers/order';\n customersRegister: 'customers/register';\n customersResetPassword: 'customers/reset_password';\n giftCard: 'gift_card';\n home: 'index';\n listCollections: 'list-collections';\n forbidden: '403';\n notFound: '404';\n page: 'page';\n password: 'password';\n product: 'product';\n policy: 'policy';\n search: 'search';\n}\n\ninterface ShopifySalesChannel {\n /** Shopify Hydrogen sales channel */\n hydrogen: 'hydrogen';\n /** Shopify Headless sales channel */\n headless: 'headless';\n}\n"],"names":[],"mappings":";;AAAO,MAAM,qBAAyC;AAAA,EACpD,WAAW;AAAA,EACX,aAAa;AACf;AAEO,MAAM,oBAAuC;AAAA,EAClD,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,0BAA0B;AAAA,EAC1B,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,UAAU;AAAA,EACV,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AACV;AAEO,MAAM,sBAA2C;AAAA,EACtD,UAAU;AAAA,EACV,UAAU;AACZ;AAEO,MAAM,eAAe;AAAA,EAC1B,UAAU;AAAA,EACV,UAAU;AACZ;;;;;"}
@@ -0,0 +1,43 @@
1
+ const AnalyticsEventName = {
2
+ PAGE_VIEW: "PAGE_VIEW",
3
+ ADD_TO_CART: "ADD_TO_CART"
4
+ };
5
+ const AnalyticsPageType = {
6
+ article: "article",
7
+ blog: "blog",
8
+ captcha: "captcha",
9
+ cart: "cart",
10
+ collection: "collection",
11
+ customersAccount: "customers/account",
12
+ customersActivateAccount: "customers/activate_account",
13
+ customersAddresses: "customers/addresses",
14
+ customersLogin: "customers/login",
15
+ customersOrder: "customers/order",
16
+ customersRegister: "customers/register",
17
+ customersResetPassword: "customers/reset_password",
18
+ giftCard: "gift_card",
19
+ home: "index",
20
+ listCollections: "list-collections",
21
+ forbidden: "403",
22
+ notFound: "404",
23
+ page: "page",
24
+ password: "password",
25
+ product: "product",
26
+ policy: "policy",
27
+ search: "search"
28
+ };
29
+ const ShopifySalesChannel = {
30
+ hydrogen: "hydrogen",
31
+ headless: "headless"
32
+ };
33
+ const ShopifyAppId = {
34
+ hydrogen: "6167201",
35
+ headless: "12875497473"
36
+ };
37
+ export {
38
+ AnalyticsEventName,
39
+ AnalyticsPageType,
40
+ ShopifyAppId,
41
+ ShopifySalesChannel
42
+ };
43
+ //# sourceMappingURL=analytics-constants.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-constants.mjs","sources":["../../src/analytics-constants.ts"],"sourcesContent":["export const AnalyticsEventName: AnalyticsEventName = {\n PAGE_VIEW: 'PAGE_VIEW',\n ADD_TO_CART: 'ADD_TO_CART',\n} as const;\n\nexport const AnalyticsPageType: AnalyticsPageType = {\n article: 'article',\n blog: 'blog',\n captcha: 'captcha',\n cart: 'cart',\n collection: 'collection',\n customersAccount: 'customers/account',\n customersActivateAccount: 'customers/activate_account',\n customersAddresses: 'customers/addresses',\n customersLogin: 'customers/login',\n customersOrder: 'customers/order',\n customersRegister: 'customers/register',\n customersResetPassword: 'customers/reset_password',\n giftCard: 'gift_card',\n home: 'index',\n listCollections: 'list-collections',\n forbidden: '403',\n notFound: '404',\n page: 'page',\n password: 'password',\n product: 'product',\n policy: 'policy',\n search: 'search',\n} as const;\n\nexport const ShopifySalesChannel: ShopifySalesChannel = {\n hydrogen: 'hydrogen',\n headless: 'headless',\n} as const;\n\nexport const ShopifyAppId = {\n hydrogen: '6167201',\n headless: '12875497473',\n} as const;\n\n/**\n * These duplicated interface declaration is so that we can generate proper documentation\n * for these public facing constants\n */\ninterface AnalyticsEventName {\n /** Page view */\n PAGE_VIEW: 'PAGE_VIEW';\n /** Add to cart */\n ADD_TO_CART: 'ADD_TO_CART';\n}\n\ninterface AnalyticsPageType {\n article: 'article';\n blog: 'blog';\n captcha: 'captcha';\n cart: 'cart';\n collection: 'collection';\n customersAccount: 'customers/account';\n customersActivateAccount: 'customers/activate_account';\n customersAddresses: 'customers/addresses';\n customersLogin: 'customers/login';\n customersOrder: 'customers/order';\n customersRegister: 'customers/register';\n customersResetPassword: 'customers/reset_password';\n giftCard: 'gift_card';\n home: 'index';\n listCollections: 'list-collections';\n forbidden: '403';\n notFound: '404';\n page: 'page';\n password: 'password';\n product: 'product';\n policy: 'policy';\n search: 'search';\n}\n\ninterface ShopifySalesChannel {\n /** Shopify Hydrogen sales channel */\n hydrogen: 'hydrogen';\n /** Shopify Headless sales channel */\n headless: 'headless';\n}\n"],"names":[],"mappings":"AAAO,MAAM,qBAAyC;AAAA,EACpD,WAAW;AAAA,EACX,aAAa;AACf;AAEO,MAAM,oBAAuC;AAAA,EAClD,SAAS;AAAA,EACT,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,0BAA0B;AAAA,EAC1B,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,wBAAwB;AAAA,EACxB,UAAU;AAAA,EACV,MAAM;AAAA,EACN,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AACV;AAEO,MAAM,sBAA2C;AAAA,EACtD,UAAU;AAAA,EACV,UAAU;AACZ;AAEO,MAAM,eAAe;AAAA,EAC1B,UAAU;AAAA,EACV,UAAU;AACZ;"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const analyticsConstants = require("./analytics-constants.js");
4
+ const analyticsUtils = require("./analytics-utils.js");
5
+ const cookiesUtils = require("./cookies-utils.js");
6
+ const SCHEMA_ID = "custom_storefront_customer_tracking/1.0";
7
+ const PAGE_RENDERED_EVENT_NAME = "page_rendered";
8
+ const COLLECTION_PAGE_RENDERED_EVENT_NAME = "collection_page_rendered";
9
+ const PRODUCT_PAGE_RENDERED_EVENT_NAME = "product_page_rendered";
10
+ const PRODUCT_ADDED_TO_CART_EVENT_NAME = "product_added_to_cart";
11
+ const SEARCH_SUBMITTED_EVENT_NAME = "search_submitted";
12
+ function pageView(payload) {
13
+ const pageViewPayload = payload;
14
+ const additionalPayload = {
15
+ canonical_url: pageViewPayload.canonicalUrl || pageViewPayload.url,
16
+ customer_id: pageViewPayload.customerId
17
+ };
18
+ const pageType = pageViewPayload.pageType;
19
+ const pageViewEvents = [];
20
+ pageViewEvents.push(
21
+ analyticsUtils.schemaWrapper(
22
+ SCHEMA_ID,
23
+ analyticsUtils.addDataIf(
24
+ {
25
+ event_name: PAGE_RENDERED_EVENT_NAME,
26
+ ...additionalPayload
27
+ },
28
+ formatPayload(pageViewPayload)
29
+ )
30
+ )
31
+ );
32
+ switch (pageType) {
33
+ case analyticsConstants.AnalyticsPageType.collection:
34
+ pageViewEvents.push(
35
+ analyticsUtils.schemaWrapper(
36
+ SCHEMA_ID,
37
+ analyticsUtils.addDataIf(
38
+ {
39
+ event_name: COLLECTION_PAGE_RENDERED_EVENT_NAME,
40
+ ...additionalPayload,
41
+ collection_name: pageViewPayload.collectionHandle
42
+ },
43
+ formatPayload(pageViewPayload)
44
+ )
45
+ )
46
+ );
47
+ break;
48
+ case analyticsConstants.AnalyticsPageType.product:
49
+ pageViewEvents.push(
50
+ analyticsUtils.schemaWrapper(
51
+ SCHEMA_ID,
52
+ analyticsUtils.addDataIf(
53
+ {
54
+ event_name: PRODUCT_PAGE_RENDERED_EVENT_NAME,
55
+ ...additionalPayload,
56
+ products: formatProductPayload(pageViewPayload.products),
57
+ total_value: pageViewPayload.totalValue
58
+ },
59
+ formatPayload(pageViewPayload)
60
+ )
61
+ )
62
+ );
63
+ break;
64
+ case analyticsConstants.AnalyticsPageType.search:
65
+ pageViewEvents.push(
66
+ analyticsUtils.schemaWrapper(
67
+ SCHEMA_ID,
68
+ analyticsUtils.addDataIf(
69
+ {
70
+ event_name: SEARCH_SUBMITTED_EVENT_NAME,
71
+ ...additionalPayload,
72
+ search_string: pageViewPayload.searchString
73
+ },
74
+ formatPayload(pageViewPayload)
75
+ )
76
+ )
77
+ );
78
+ break;
79
+ }
80
+ return pageViewEvents;
81
+ }
82
+ function addToCart(payload) {
83
+ const addToCartPayload = payload;
84
+ const cartToken = analyticsUtils.parseGid(addToCartPayload.cartId);
85
+ const cart_token = (cartToken == null ? void 0 : cartToken.id) ? `${cartToken.id}` : null;
86
+ return [
87
+ analyticsUtils.schemaWrapper(
88
+ SCHEMA_ID,
89
+ analyticsUtils.addDataIf(
90
+ {
91
+ event_name: PRODUCT_ADDED_TO_CART_EVENT_NAME,
92
+ customerId: addToCartPayload.customerId,
93
+ cart_token,
94
+ total_value: addToCartPayload.totalValue,
95
+ products: formatProductPayload(addToCartPayload.products)
96
+ },
97
+ formatPayload(addToCartPayload)
98
+ )
99
+ )
100
+ ];
101
+ }
102
+ function formatPayload(payload) {
103
+ return {
104
+ source: payload.shopifySalesChannel || analyticsConstants.ShopifySalesChannel.headless,
105
+ hydrogenSubchannelId: payload.storefrontId || "0",
106
+ is_persistent_cookie: payload.hasUserConsent,
107
+ ccpa_enforced: false,
108
+ gdpr_enforced: false,
109
+ unique_token: payload.uniqueToken,
110
+ event_time: Date.now(),
111
+ event_id: cookiesUtils.buildUUID(),
112
+ event_source_url: payload.url,
113
+ referrer: payload.referrer,
114
+ user_agent: payload.userAgent,
115
+ navigation_type: payload.navigationType,
116
+ navigation_api: payload.navigationApi,
117
+ shop_id: parseInt(analyticsUtils.parseGid(payload.shopId).id),
118
+ currency: payload.currency
119
+ };
120
+ }
121
+ function formatProductPayload(products) {
122
+ return products ? products.map((p) => {
123
+ const product = analyticsUtils.addDataIf(
124
+ {
125
+ variant_gid: p.variantGid,
126
+ category: p.category,
127
+ sku: p.sku,
128
+ product_id: parseInt(analyticsUtils.parseGid(p.productGid).id),
129
+ variant_id: parseInt(analyticsUtils.parseGid(p.variantGid).id)
130
+ },
131
+ {
132
+ product_gid: p.productGid,
133
+ name: p.name,
134
+ variant: p.variantName || "",
135
+ brand: p.brand,
136
+ price: p.price,
137
+ quantity: Number(p.quantity || 0)
138
+ }
139
+ );
140
+ return JSON.stringify(product);
141
+ }) : [];
142
+ }
143
+ exports.addToCart = addToCart;
144
+ exports.pageView = pageView;
145
+ //# sourceMappingURL=analytics-schema-custom-storefront-customer-tracking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics-schema-custom-storefront-customer-tracking.js","sources":["../../src/analytics-schema-custom-storefront-customer-tracking.ts"],"sourcesContent":["import {\n ShopifyAnalyticsPayload,\n ShopifyPageViewPayload,\n ShopifyAddToCartPayload,\n ShopifyMonorailPayload,\n ShopifyAnalyticsProduct,\n ShopifyMonorailEvent,\n} from './analytics-types.js';\nimport {AnalyticsPageType, ShopifySalesChannel} from './analytics-constants.js';\nimport {addDataIf, schemaWrapper, parseGid} from './analytics-utils.js';\nimport {buildUUID} from './cookies-utils.js';\n\nconst SCHEMA_ID = 'custom_storefront_customer_tracking/1.0';\nconst PAGE_RENDERED_EVENT_NAME = 'page_rendered';\nconst COLLECTION_PAGE_RENDERED_EVENT_NAME = 'collection_page_rendered';\nconst PRODUCT_PAGE_RENDERED_EVENT_NAME = 'product_page_rendered';\nconst PRODUCT_ADDED_TO_CART_EVENT_NAME = 'product_added_to_cart';\nconst SEARCH_SUBMITTED_EVENT_NAME = 'search_submitted';\n\nexport function pageView(\n payload: ShopifyPageViewPayload\n): ShopifyMonorailEvent[] {\n const pageViewPayload = payload;\n const additionalPayload = {\n canonical_url: pageViewPayload.canonicalUrl || pageViewPayload.url,\n customer_id: pageViewPayload.customerId,\n };\n const pageType = pageViewPayload.pageType;\n const pageViewEvents = [];\n\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: PAGE_RENDERED_EVENT_NAME,\n ...additionalPayload,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n\n switch (pageType) {\n case AnalyticsPageType.collection:\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: COLLECTION_PAGE_RENDERED_EVENT_NAME,\n ...additionalPayload,\n collection_name: pageViewPayload.collectionHandle,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n break;\n case AnalyticsPageType.product:\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: PRODUCT_PAGE_RENDERED_EVENT_NAME,\n ...additionalPayload,\n products: formatProductPayload(pageViewPayload.products),\n total_value: pageViewPayload.totalValue,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n break;\n case AnalyticsPageType.search:\n pageViewEvents.push(\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: SEARCH_SUBMITTED_EVENT_NAME,\n ...additionalPayload,\n search_string: pageViewPayload.searchString,\n },\n formatPayload(pageViewPayload)\n )\n )\n );\n break;\n }\n\n return pageViewEvents;\n}\n\nexport function addToCart(\n payload: ShopifyAddToCartPayload\n): ShopifyMonorailEvent[] {\n const addToCartPayload = payload;\n const cartToken = parseGid(addToCartPayload.cartId);\n const cart_token = cartToken?.id ? `${cartToken.id}` : null;\n return [\n schemaWrapper(\n SCHEMA_ID,\n addDataIf(\n {\n event_name: PRODUCT_ADDED_TO_CART_EVENT_NAME,\n customerId: addToCartPayload.customerId,\n cart_token,\n total_value: addToCartPayload.totalValue,\n products: formatProductPayload(addToCartPayload.products),\n },\n formatPayload(addToCartPayload)\n )\n ),\n ];\n}\n\nfunction formatPayload(\n payload: ShopifyAnalyticsPayload\n): ShopifyMonorailPayload {\n return {\n source: payload.shopifySalesChannel || ShopifySalesChannel.headless,\n hydrogenSubchannelId: payload.storefrontId || '0',\n\n is_persistent_cookie: payload.hasUserConsent,\n ccpa_enforced: false,\n gdpr_enforced: false,\n unique_token: payload.uniqueToken,\n event_time: Date.now(),\n event_id: buildUUID(),\n\n event_source_url: payload.url,\n referrer: payload.referrer,\n user_agent: payload.userAgent,\n navigation_type: payload.navigationType,\n navigation_api: payload.navigationApi,\n\n shop_id: parseInt(parseGid(payload.shopId).id),\n currency: payload.currency,\n };\n}\n\nfunction formatProductPayload(products?: ShopifyAnalyticsProduct[]): string[] {\n return products\n ? products.map((p: ShopifyAnalyticsProduct) => {\n const product = addDataIf(\n {\n variant_gid: p.variantGid,\n category: p.category,\n sku: p.sku,\n product_id: parseInt(parseGid(p.productGid).id),\n variant_id: parseInt(parseGid(p.variantGid).id),\n },\n {\n product_gid: p.productGid,\n name: p.name,\n variant: p.variantName || '',\n brand: p.brand,\n price: p.price,\n quantity: Number(p.quantity || 0),\n }\n );\n return JSON.stringify(product);\n })\n : [];\n}\n"],"names":["schemaWrapper","addDataIf","AnalyticsPageType","parseGid","ShopifySalesChannel","buildUUID"],"mappings":";;;;;AAYA,MAAM,YAAY;AAClB,MAAM,2BAA2B;AACjC,MAAM,sCAAsC;AAC5C,MAAM,mCAAmC;AACzC,MAAM,mCAAmC;AACzC,MAAM,8BAA8B;AAE7B,SAAS,SACd,SACwB;AACxB,QAAM,kBAAkB;AACxB,QAAM,oBAAoB;AAAA,IACxB,eAAe,gBAAgB,gBAAgB,gBAAgB;AAAA,IAC/D,aAAa,gBAAgB;AAAA,EAAA;AAE/B,QAAM,WAAW,gBAAgB;AACjC,QAAM,iBAAiB,CAAA;AAER,iBAAA;AAAA,IACbA,eAAA;AAAA,MACE;AAAA,MACAC,eAAA;AAAA,QACE;AAAA,UACE,YAAY;AAAA,UACZ,GAAG;AAAA,QACL;AAAA,QACA,cAAc,eAAe;AAAA,MAC/B;AAAA,IACF;AAAA,EAAA;AAGF,UAAQ,UAAU;AAAA,IAChB,KAAKC,mBAAkB,kBAAA;AACN,qBAAA;AAAA,QACbF,eAAA;AAAA,UACE;AAAA,UACAC,eAAA;AAAA,YACE;AAAA,cACE,YAAY;AAAA,cACZ,GAAG;AAAA,cACH,iBAAiB,gBAAgB;AAAA,YACnC;AAAA,YACA,cAAc,eAAe;AAAA,UAC/B;AAAA,QACF;AAAA,MAAA;AAEF;AAAA,IACF,KAAKC,mBAAkB,kBAAA;AACN,qBAAA;AAAA,QACbF,eAAA;AAAA,UACE;AAAA,UACAC,eAAA;AAAA,YACE;AAAA,cACE,YAAY;AAAA,cACZ,GAAG;AAAA,cACH,UAAU,qBAAqB,gBAAgB,QAAQ;AAAA,cACvD,aAAa,gBAAgB;AAAA,YAC/B;AAAA,YACA,cAAc,eAAe;AAAA,UAC/B;AAAA,QACF;AAAA,MAAA;AAEF;AAAA,IACF,KAAKC,mBAAkB,kBAAA;AACN,qBAAA;AAAA,QACbF,eAAA;AAAA,UACE;AAAA,UACAC,eAAA;AAAA,YACE;AAAA,cACE,YAAY;AAAA,cACZ,GAAG;AAAA,cACH,eAAe,gBAAgB;AAAA,YACjC;AAAA,YACA,cAAc,eAAe;AAAA,UAC/B;AAAA,QACF;AAAA,MAAA;AAEF;AAAA,EACJ;AAEO,SAAA;AACT;AAEO,SAAS,UACd,SACwB;AACxB,QAAM,mBAAmB;AACnB,QAAA,YAAYE,eAAAA,SAAS,iBAAiB,MAAM;AAClD,QAAM,cAAa,uCAAW,MAAK,GAAG,UAAU,OAAO;AAChD,SAAA;AAAA,IACLH,eAAA;AAAA,MACE;AAAA,MACAC,eAAA;AAAA,QACE;AAAA,UACE,YAAY;AAAA,UACZ,YAAY,iBAAiB;AAAA,UAC7B;AAAA,UACA,aAAa,iBAAiB;AAAA,UAC9B,UAAU,qBAAqB,iBAAiB,QAAQ;AAAA,QAC1D;AAAA,QACA,cAAc,gBAAgB;AAAA,MAChC;AAAA,IACF;AAAA,EAAA;AAEJ;AAEA,SAAS,cACP,SACwB;AACjB,SAAA;AAAA,IACL,QAAQ,QAAQ,uBAAuBG,mBAAAA,oBAAoB;AAAA,IAC3D,sBAAsB,QAAQ,gBAAgB;AAAA,IAE9C,sBAAsB,QAAQ;AAAA,IAC9B,eAAe;AAAA,IACf,eAAe;AAAA,IACf,cAAc,QAAQ;AAAA,IACtB,YAAY,KAAK,IAAI;AAAA,IACrB,UAAUC,aAAAA,UAAU;AAAA,IAEpB,kBAAkB,QAAQ;AAAA,IAC1B,UAAU,QAAQ;AAAA,IAClB,YAAY,QAAQ;AAAA,IACpB,iBAAiB,QAAQ;AAAA,IACzB,gBAAgB,QAAQ;AAAA,IAExB,SAAS,SAASF,eAAA,SAAS,QAAQ,MAAM,EAAE,EAAE;AAAA,IAC7C,UAAU,QAAQ;AAAA,EAAA;AAEtB;AAEA,SAAS,qBAAqB,UAAgD;AAC5E,SAAO,WACH,SAAS,IAAI,CAAC,MAA+B;AAC3C,UAAM,UAAUF,eAAA;AAAA,MACd;AAAA,QACE,aAAa,EAAE;AAAA,QACf,UAAU,EAAE;AAAA,QACZ,KAAK,EAAE;AAAA,QACP,YAAY,SAASE,eAAA,SAAS,EAAE,UAAU,EAAE,EAAE;AAAA,QAC9C,YAAY,SAASA,eAAA,SAAS,EAAE,UAAU,EAAE,EAAE;AAAA,MAChD;AAAA,MACA;AAAA,QACE,aAAa,EAAE;AAAA,QACf,MAAM,EAAE;AAAA,QACR,SAAS,EAAE,eAAe;AAAA,QAC1B,OAAO,EAAE;AAAA,QACT,OAAO,EAAE;AAAA,QACT,UAAU,OAAO,EAAE,YAAY,CAAC;AAAA,MAClC;AAAA,IAAA;AAEK,WAAA,KAAK,UAAU,OAAO;AAAA,EAC9B,CAAA,IACD,CAAA;AACN;;;"}