@shopify/hydrogen-react 0.0.0-next-5c16c78 → 0.0.0-next-ea3959b

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 (410) hide show
  1. package/dist/browser-dev/AddToCartButton.mjs +43 -40
  2. package/dist/browser-dev/AddToCartButton.mjs.map +1 -1
  3. package/dist/browser-dev/BaseButton.mjs +13 -15
  4. package/dist/browser-dev/BaseButton.mjs.map +1 -1
  5. package/dist/browser-dev/BuyNowButton.mjs +19 -17
  6. package/dist/browser-dev/BuyNowButton.mjs.map +1 -1
  7. package/dist/browser-dev/CartCheckoutButton.mjs +12 -15
  8. package/dist/browser-dev/CartCheckoutButton.mjs.map +1 -1
  9. package/dist/browser-dev/CartProvider.mjs +73 -67
  10. package/dist/browser-dev/CartProvider.mjs.map +1 -1
  11. package/dist/browser-dev/ExternalVideo.mjs +13 -11
  12. package/dist/browser-dev/ExternalVideo.mjs.map +1 -1
  13. package/dist/browser-dev/Image.mjs +41 -30
  14. package/dist/browser-dev/Image.mjs.map +1 -1
  15. package/dist/browser-dev/MediaFile.mjs +29 -21
  16. package/dist/browser-dev/MediaFile.mjs.map +1 -1
  17. package/dist/browser-dev/ModelViewer.mjs +138 -76
  18. package/dist/browser-dev/ModelViewer.mjs.map +1 -1
  19. package/dist/browser-dev/Money.mjs +12 -9
  20. package/dist/browser-dev/Money.mjs.map +1 -1
  21. package/dist/browser-dev/ProductPrice.mjs +12 -17
  22. package/dist/browser-dev/ProductPrice.mjs.map +1 -1
  23. package/dist/browser-dev/ProductProvider.mjs +102 -73
  24. package/dist/browser-dev/ProductProvider.mjs.map +1 -1
  25. package/dist/browser-dev/ShopPayButton.mjs +4 -14
  26. package/dist/browser-dev/ShopPayButton.mjs.map +1 -1
  27. package/dist/browser-dev/ShopifyProvider.mjs +20 -15
  28. package/dist/browser-dev/ShopifyProvider.mjs.map +1 -1
  29. package/dist/browser-dev/Video.mjs +30 -21
  30. package/dist/browser-dev/Video.mjs.map +1 -1
  31. package/dist/browser-dev/_virtual/index.mjs +11 -2
  32. package/dist/browser-dev/_virtual/index.mjs.map +1 -1
  33. package/dist/browser-dev/_virtual/with-selector.mjs +11 -2
  34. package/dist/browser-dev/_virtual/with-selector.mjs.map +1 -1
  35. package/dist/browser-dev/cart-hooks.mjs +31 -34
  36. package/dist/browser-dev/cart-hooks.mjs.map +1 -1
  37. package/dist/browser-dev/cart-queries.mjs +50 -20
  38. package/dist/browser-dev/cart-queries.mjs.map +1 -1
  39. package/dist/browser-dev/codegen.helpers.mjs +1 -0
  40. package/dist/browser-dev/codegen.helpers.mjs.map +1 -1
  41. package/dist/browser-dev/image-size.mjs +8 -8
  42. package/dist/browser-dev/image-size.mjs.map +1 -1
  43. package/dist/browser-dev/load-script.mjs.map +1 -1
  44. package/dist/browser-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  45. package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs +2 -2
  46. package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  47. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  48. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  49. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  50. package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  51. package/dist/browser-dev/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  52. package/dist/browser-dev/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  53. package/dist/browser-dev/parse-metafield.mjs +4 -5
  54. package/dist/browser-dev/parse-metafield.mjs.map +1 -1
  55. package/dist/browser-dev/storefront-client.mjs +8 -10
  56. package/dist/browser-dev/storefront-client.mjs.map +1 -1
  57. package/dist/browser-dev/useCartAPIStateMachine.mjs +111 -80
  58. package/dist/browser-dev/useCartAPIStateMachine.mjs.map +1 -1
  59. package/dist/browser-dev/useCartActions.mjs +150 -109
  60. package/dist/browser-dev/useCartActions.mjs.map +1 -1
  61. package/dist/browser-dev/useMoney.mjs +61 -36
  62. package/dist/browser-dev/useMoney.mjs.map +1 -1
  63. package/dist/browser-prod/AddToCartButton.mjs +43 -40
  64. package/dist/browser-prod/AddToCartButton.mjs.map +1 -1
  65. package/dist/browser-prod/BaseButton.mjs +13 -15
  66. package/dist/browser-prod/BaseButton.mjs.map +1 -1
  67. package/dist/browser-prod/BuyNowButton.mjs +19 -17
  68. package/dist/browser-prod/BuyNowButton.mjs.map +1 -1
  69. package/dist/browser-prod/CartCheckoutButton.mjs +12 -15
  70. package/dist/browser-prod/CartCheckoutButton.mjs.map +1 -1
  71. package/dist/browser-prod/CartProvider.mjs +73 -67
  72. package/dist/browser-prod/CartProvider.mjs.map +1 -1
  73. package/dist/browser-prod/ExternalVideo.mjs +13 -11
  74. package/dist/browser-prod/ExternalVideo.mjs.map +1 -1
  75. package/dist/browser-prod/Image.mjs +35 -28
  76. package/dist/browser-prod/Image.mjs.map +1 -1
  77. package/dist/browser-prod/MediaFile.mjs +29 -21
  78. package/dist/browser-prod/MediaFile.mjs.map +1 -1
  79. package/dist/browser-prod/ModelViewer.mjs +135 -75
  80. package/dist/browser-prod/ModelViewer.mjs.map +1 -1
  81. package/dist/browser-prod/Money.mjs +12 -9
  82. package/dist/browser-prod/Money.mjs.map +1 -1
  83. package/dist/browser-prod/ProductPrice.mjs +12 -17
  84. package/dist/browser-prod/ProductPrice.mjs.map +1 -1
  85. package/dist/browser-prod/ProductProvider.mjs +102 -73
  86. package/dist/browser-prod/ProductProvider.mjs.map +1 -1
  87. package/dist/browser-prod/ShopPayButton.mjs +4 -14
  88. package/dist/browser-prod/ShopPayButton.mjs.map +1 -1
  89. package/dist/browser-prod/ShopifyProvider.mjs +17 -14
  90. package/dist/browser-prod/ShopifyProvider.mjs.map +1 -1
  91. package/dist/browser-prod/Video.mjs +30 -21
  92. package/dist/browser-prod/Video.mjs.map +1 -1
  93. package/dist/browser-prod/_virtual/index.mjs +11 -2
  94. package/dist/browser-prod/_virtual/index.mjs.map +1 -1
  95. package/dist/browser-prod/_virtual/with-selector.mjs +11 -2
  96. package/dist/browser-prod/_virtual/with-selector.mjs.map +1 -1
  97. package/dist/browser-prod/cart-hooks.mjs +31 -34
  98. package/dist/browser-prod/cart-hooks.mjs.map +1 -1
  99. package/dist/browser-prod/cart-queries.mjs +50 -20
  100. package/dist/browser-prod/cart-queries.mjs.map +1 -1
  101. package/dist/browser-prod/codegen.helpers.mjs +1 -0
  102. package/dist/browser-prod/codegen.helpers.mjs.map +1 -1
  103. package/dist/browser-prod/image-size.mjs +8 -8
  104. package/dist/browser-prod/image-size.mjs.map +1 -1
  105. package/dist/browser-prod/load-script.mjs.map +1 -1
  106. package/dist/browser-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  107. package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs +2 -2
  108. package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  109. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  110. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  111. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  112. package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  113. package/dist/browser-prod/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  114. package/dist/browser-prod/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  115. package/dist/browser-prod/parse-metafield.mjs +4 -5
  116. package/dist/browser-prod/parse-metafield.mjs.map +1 -1
  117. package/dist/browser-prod/storefront-client.mjs +8 -10
  118. package/dist/browser-prod/storefront-client.mjs.map +1 -1
  119. package/dist/browser-prod/useCartAPIStateMachine.mjs +111 -80
  120. package/dist/browser-prod/useCartAPIStateMachine.mjs.map +1 -1
  121. package/dist/browser-prod/useCartActions.mjs +150 -109
  122. package/dist/browser-prod/useCartActions.mjs.map +1 -1
  123. package/dist/browser-prod/useMoney.mjs +61 -36
  124. package/dist/browser-prod/useMoney.mjs.map +1 -1
  125. package/dist/node-dev/AddToCartButton.js +44 -41
  126. package/dist/node-dev/AddToCartButton.js.map +1 -1
  127. package/dist/node-dev/AddToCartButton.mjs +43 -40
  128. package/dist/node-dev/AddToCartButton.mjs.map +1 -1
  129. package/dist/node-dev/BaseButton.js +14 -16
  130. package/dist/node-dev/BaseButton.js.map +1 -1
  131. package/dist/node-dev/BaseButton.mjs +13 -15
  132. package/dist/node-dev/BaseButton.mjs.map +1 -1
  133. package/dist/node-dev/BuyNowButton.js +20 -18
  134. package/dist/node-dev/BuyNowButton.js.map +1 -1
  135. package/dist/node-dev/BuyNowButton.mjs +19 -17
  136. package/dist/node-dev/BuyNowButton.mjs.map +1 -1
  137. package/dist/node-dev/CartCheckoutButton.js +13 -16
  138. package/dist/node-dev/CartCheckoutButton.js.map +1 -1
  139. package/dist/node-dev/CartCheckoutButton.mjs +12 -15
  140. package/dist/node-dev/CartCheckoutButton.mjs.map +1 -1
  141. package/dist/node-dev/CartProvider.js +74 -68
  142. package/dist/node-dev/CartProvider.js.map +1 -1
  143. package/dist/node-dev/CartProvider.mjs +73 -67
  144. package/dist/node-dev/CartProvider.mjs.map +1 -1
  145. package/dist/node-dev/ExternalVideo.js +14 -12
  146. package/dist/node-dev/ExternalVideo.js.map +1 -1
  147. package/dist/node-dev/ExternalVideo.mjs +13 -11
  148. package/dist/node-dev/ExternalVideo.mjs.map +1 -1
  149. package/dist/node-dev/Image.js +42 -31
  150. package/dist/node-dev/Image.js.map +1 -1
  151. package/dist/node-dev/Image.mjs +41 -30
  152. package/dist/node-dev/Image.mjs.map +1 -1
  153. package/dist/node-dev/MediaFile.js +30 -22
  154. package/dist/node-dev/MediaFile.js.map +1 -1
  155. package/dist/node-dev/MediaFile.mjs +29 -21
  156. package/dist/node-dev/MediaFile.mjs.map +1 -1
  157. package/dist/node-dev/ModelViewer.js +139 -77
  158. package/dist/node-dev/ModelViewer.js.map +1 -1
  159. package/dist/node-dev/ModelViewer.mjs +138 -76
  160. package/dist/node-dev/ModelViewer.mjs.map +1 -1
  161. package/dist/node-dev/Money.js +13 -10
  162. package/dist/node-dev/Money.js.map +1 -1
  163. package/dist/node-dev/Money.mjs +12 -9
  164. package/dist/node-dev/Money.mjs.map +1 -1
  165. package/dist/node-dev/ProductPrice.js +13 -18
  166. package/dist/node-dev/ProductPrice.js.map +1 -1
  167. package/dist/node-dev/ProductPrice.mjs +12 -17
  168. package/dist/node-dev/ProductPrice.mjs.map +1 -1
  169. package/dist/node-dev/ProductProvider.js +103 -74
  170. package/dist/node-dev/ProductProvider.js.map +1 -1
  171. package/dist/node-dev/ProductProvider.mjs +102 -73
  172. package/dist/node-dev/ProductProvider.mjs.map +1 -1
  173. package/dist/node-dev/ShopPayButton.js +5 -15
  174. package/dist/node-dev/ShopPayButton.js.map +1 -1
  175. package/dist/node-dev/ShopPayButton.mjs +4 -14
  176. package/dist/node-dev/ShopPayButton.mjs.map +1 -1
  177. package/dist/node-dev/ShopifyProvider.js +21 -16
  178. package/dist/node-dev/ShopifyProvider.js.map +1 -1
  179. package/dist/node-dev/ShopifyProvider.mjs +20 -15
  180. package/dist/node-dev/ShopifyProvider.mjs.map +1 -1
  181. package/dist/node-dev/Video.js +31 -22
  182. package/dist/node-dev/Video.js.map +1 -1
  183. package/dist/node-dev/Video.mjs +30 -21
  184. package/dist/node-dev/Video.mjs.map +1 -1
  185. package/dist/node-dev/_virtual/index.js +11 -3
  186. package/dist/node-dev/_virtual/index.js.map +1 -1
  187. package/dist/node-dev/_virtual/index.mjs +11 -2
  188. package/dist/node-dev/_virtual/index.mjs.map +1 -1
  189. package/dist/node-dev/_virtual/use-sync-external-store-shim.development.js +1 -1
  190. package/dist/node-dev/_virtual/use-sync-external-store-shim.production.min.js +1 -1
  191. package/dist/node-dev/_virtual/with-selector.development.js +1 -1
  192. package/dist/node-dev/_virtual/with-selector.js +11 -3
  193. package/dist/node-dev/_virtual/with-selector.js.map +1 -1
  194. package/dist/node-dev/_virtual/with-selector.mjs +11 -2
  195. package/dist/node-dev/_virtual/with-selector.mjs.map +1 -1
  196. package/dist/node-dev/_virtual/with-selector.production.min.js +1 -1
  197. package/dist/node-dev/cart-constants.js +1 -1
  198. package/dist/node-dev/cart-hooks.js +32 -35
  199. package/dist/node-dev/cart-hooks.js.map +1 -1
  200. package/dist/node-dev/cart-hooks.mjs +31 -34
  201. package/dist/node-dev/cart-hooks.mjs.map +1 -1
  202. package/dist/node-dev/cart-queries.js +51 -21
  203. package/dist/node-dev/cart-queries.js.map +1 -1
  204. package/dist/node-dev/cart-queries.mjs +50 -20
  205. package/dist/node-dev/cart-queries.mjs.map +1 -1
  206. package/dist/node-dev/codegen.helpers.js +2 -1
  207. package/dist/node-dev/codegen.helpers.js.map +1 -1
  208. package/dist/node-dev/codegen.helpers.mjs +1 -0
  209. package/dist/node-dev/codegen.helpers.mjs.map +1 -1
  210. package/dist/node-dev/flatten-connection.js +1 -1
  211. package/dist/node-dev/image-size.js +9 -9
  212. package/dist/node-dev/image-size.js.map +1 -1
  213. package/dist/node-dev/image-size.mjs +8 -8
  214. package/dist/node-dev/image-size.mjs.map +1 -1
  215. package/dist/node-dev/index.js +1 -1
  216. package/dist/node-dev/load-script.js +1 -1
  217. package/dist/node-dev/load-script.js.map +1 -1
  218. package/dist/node-dev/load-script.mjs.map +1 -1
  219. package/dist/node-dev/node_modules/@xstate/fsm/es/index.js +1 -1
  220. package/dist/node-dev/node_modules/@xstate/fsm/es/index.js.map +1 -1
  221. package/dist/node-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  222. package/dist/node-dev/node_modules/@xstate/react/es/fsm.js +2 -2
  223. package/dist/node-dev/node_modules/@xstate/react/es/fsm.js.map +1 -1
  224. package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs +2 -2
  225. package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  226. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.js +2 -4
  227. package/dist/node-dev/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  228. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +2 -4
  229. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  230. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  231. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +2 -4
  232. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
  233. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  234. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +2 -4
  235. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  236. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  237. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +2 -4
  238. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  239. package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  240. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.js +4 -4
  241. package/dist/node-dev/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  242. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.js +1 -1
  243. package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  244. package/dist/node-dev/parse-metafield.js +5 -6
  245. package/dist/node-dev/parse-metafield.js.map +1 -1
  246. package/dist/node-dev/parse-metafield.mjs +4 -5
  247. package/dist/node-dev/parse-metafield.mjs.map +1 -1
  248. package/dist/node-dev/storefront-api-constants.js +1 -1
  249. package/dist/node-dev/storefront-client.js +9 -11
  250. package/dist/node-dev/storefront-client.js.map +1 -1
  251. package/dist/node-dev/storefront-client.mjs +8 -10
  252. package/dist/node-dev/storefront-client.mjs.map +1 -1
  253. package/dist/node-dev/useCartAPIStateMachine.js +112 -81
  254. package/dist/node-dev/useCartAPIStateMachine.js.map +1 -1
  255. package/dist/node-dev/useCartAPIStateMachine.mjs +111 -80
  256. package/dist/node-dev/useCartAPIStateMachine.mjs.map +1 -1
  257. package/dist/node-dev/useCartActions.js +151 -110
  258. package/dist/node-dev/useCartActions.js.map +1 -1
  259. package/dist/node-dev/useCartActions.mjs +150 -109
  260. package/dist/node-dev/useCartActions.mjs.map +1 -1
  261. package/dist/node-dev/useMoney.js +62 -37
  262. package/dist/node-dev/useMoney.js.map +1 -1
  263. package/dist/node-dev/useMoney.mjs +61 -36
  264. package/dist/node-dev/useMoney.mjs.map +1 -1
  265. package/dist/node-prod/AddToCartButton.js +44 -41
  266. package/dist/node-prod/AddToCartButton.js.map +1 -1
  267. package/dist/node-prod/AddToCartButton.mjs +43 -40
  268. package/dist/node-prod/AddToCartButton.mjs.map +1 -1
  269. package/dist/node-prod/BaseButton.js +14 -16
  270. package/dist/node-prod/BaseButton.js.map +1 -1
  271. package/dist/node-prod/BaseButton.mjs +13 -15
  272. package/dist/node-prod/BaseButton.mjs.map +1 -1
  273. package/dist/node-prod/BuyNowButton.js +20 -18
  274. package/dist/node-prod/BuyNowButton.js.map +1 -1
  275. package/dist/node-prod/BuyNowButton.mjs +19 -17
  276. package/dist/node-prod/BuyNowButton.mjs.map +1 -1
  277. package/dist/node-prod/CartCheckoutButton.js +13 -16
  278. package/dist/node-prod/CartCheckoutButton.js.map +1 -1
  279. package/dist/node-prod/CartCheckoutButton.mjs +12 -15
  280. package/dist/node-prod/CartCheckoutButton.mjs.map +1 -1
  281. package/dist/node-prod/CartProvider.js +74 -68
  282. package/dist/node-prod/CartProvider.js.map +1 -1
  283. package/dist/node-prod/CartProvider.mjs +73 -67
  284. package/dist/node-prod/CartProvider.mjs.map +1 -1
  285. package/dist/node-prod/ExternalVideo.js +14 -12
  286. package/dist/node-prod/ExternalVideo.js.map +1 -1
  287. package/dist/node-prod/ExternalVideo.mjs +13 -11
  288. package/dist/node-prod/ExternalVideo.mjs.map +1 -1
  289. package/dist/node-prod/Image.js +36 -29
  290. package/dist/node-prod/Image.js.map +1 -1
  291. package/dist/node-prod/Image.mjs +35 -28
  292. package/dist/node-prod/Image.mjs.map +1 -1
  293. package/dist/node-prod/MediaFile.js +30 -22
  294. package/dist/node-prod/MediaFile.js.map +1 -1
  295. package/dist/node-prod/MediaFile.mjs +29 -21
  296. package/dist/node-prod/MediaFile.mjs.map +1 -1
  297. package/dist/node-prod/ModelViewer.js +136 -76
  298. package/dist/node-prod/ModelViewer.js.map +1 -1
  299. package/dist/node-prod/ModelViewer.mjs +135 -75
  300. package/dist/node-prod/ModelViewer.mjs.map +1 -1
  301. package/dist/node-prod/Money.js +13 -10
  302. package/dist/node-prod/Money.js.map +1 -1
  303. package/dist/node-prod/Money.mjs +12 -9
  304. package/dist/node-prod/Money.mjs.map +1 -1
  305. package/dist/node-prod/ProductPrice.js +13 -18
  306. package/dist/node-prod/ProductPrice.js.map +1 -1
  307. package/dist/node-prod/ProductPrice.mjs +12 -17
  308. package/dist/node-prod/ProductPrice.mjs.map +1 -1
  309. package/dist/node-prod/ProductProvider.js +103 -74
  310. package/dist/node-prod/ProductProvider.js.map +1 -1
  311. package/dist/node-prod/ProductProvider.mjs +102 -73
  312. package/dist/node-prod/ProductProvider.mjs.map +1 -1
  313. package/dist/node-prod/ShopPayButton.js +5 -15
  314. package/dist/node-prod/ShopPayButton.js.map +1 -1
  315. package/dist/node-prod/ShopPayButton.mjs +4 -14
  316. package/dist/node-prod/ShopPayButton.mjs.map +1 -1
  317. package/dist/node-prod/ShopifyProvider.js +18 -15
  318. package/dist/node-prod/ShopifyProvider.js.map +1 -1
  319. package/dist/node-prod/ShopifyProvider.mjs +17 -14
  320. package/dist/node-prod/ShopifyProvider.mjs.map +1 -1
  321. package/dist/node-prod/Video.js +31 -22
  322. package/dist/node-prod/Video.js.map +1 -1
  323. package/dist/node-prod/Video.mjs +30 -21
  324. package/dist/node-prod/Video.mjs.map +1 -1
  325. package/dist/node-prod/_virtual/index.js +11 -3
  326. package/dist/node-prod/_virtual/index.js.map +1 -1
  327. package/dist/node-prod/_virtual/index.mjs +11 -2
  328. package/dist/node-prod/_virtual/index.mjs.map +1 -1
  329. package/dist/node-prod/_virtual/use-sync-external-store-shim.development.js +1 -1
  330. package/dist/node-prod/_virtual/use-sync-external-store-shim.production.min.js +1 -1
  331. package/dist/node-prod/_virtual/with-selector.development.js +1 -1
  332. package/dist/node-prod/_virtual/with-selector.js +11 -3
  333. package/dist/node-prod/_virtual/with-selector.js.map +1 -1
  334. package/dist/node-prod/_virtual/with-selector.mjs +11 -2
  335. package/dist/node-prod/_virtual/with-selector.mjs.map +1 -1
  336. package/dist/node-prod/_virtual/with-selector.production.min.js +1 -1
  337. package/dist/node-prod/cart-constants.js +1 -1
  338. package/dist/node-prod/cart-hooks.js +32 -35
  339. package/dist/node-prod/cart-hooks.js.map +1 -1
  340. package/dist/node-prod/cart-hooks.mjs +31 -34
  341. package/dist/node-prod/cart-hooks.mjs.map +1 -1
  342. package/dist/node-prod/cart-queries.js +51 -21
  343. package/dist/node-prod/cart-queries.js.map +1 -1
  344. package/dist/node-prod/cart-queries.mjs +50 -20
  345. package/dist/node-prod/cart-queries.mjs.map +1 -1
  346. package/dist/node-prod/codegen.helpers.js +2 -1
  347. package/dist/node-prod/codegen.helpers.js.map +1 -1
  348. package/dist/node-prod/codegen.helpers.mjs +1 -0
  349. package/dist/node-prod/codegen.helpers.mjs.map +1 -1
  350. package/dist/node-prod/flatten-connection.js +1 -1
  351. package/dist/node-prod/image-size.js +9 -9
  352. package/dist/node-prod/image-size.js.map +1 -1
  353. package/dist/node-prod/image-size.mjs +8 -8
  354. package/dist/node-prod/image-size.mjs.map +1 -1
  355. package/dist/node-prod/index.js +1 -1
  356. package/dist/node-prod/load-script.js +1 -1
  357. package/dist/node-prod/load-script.js.map +1 -1
  358. package/dist/node-prod/load-script.mjs.map +1 -1
  359. package/dist/node-prod/node_modules/@xstate/fsm/es/index.js +1 -1
  360. package/dist/node-prod/node_modules/@xstate/fsm/es/index.js.map +1 -1
  361. package/dist/node-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
  362. package/dist/node-prod/node_modules/@xstate/react/es/fsm.js +2 -2
  363. package/dist/node-prod/node_modules/@xstate/react/es/fsm.js.map +1 -1
  364. package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs +2 -2
  365. package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
  366. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.js +2 -4
  367. package/dist/node-prod/node_modules/@xstate/react/es/useConstant.js.map +1 -1
  368. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +2 -4
  369. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
  370. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
  371. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +2 -4
  372. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
  373. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
  374. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +2 -4
  375. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
  376. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
  377. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +2 -4
  378. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
  379. package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
  380. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.js +4 -4
  381. package/dist/node-prod/node_modules/use-sync-external-store/shim/index.mjs +3 -3
  382. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.js +1 -1
  383. package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.mjs +1 -1
  384. package/dist/node-prod/parse-metafield.js +5 -6
  385. package/dist/node-prod/parse-metafield.js.map +1 -1
  386. package/dist/node-prod/parse-metafield.mjs +4 -5
  387. package/dist/node-prod/parse-metafield.mjs.map +1 -1
  388. package/dist/node-prod/storefront-api-constants.js +1 -1
  389. package/dist/node-prod/storefront-client.js +9 -11
  390. package/dist/node-prod/storefront-client.js.map +1 -1
  391. package/dist/node-prod/storefront-client.mjs +8 -10
  392. package/dist/node-prod/storefront-client.mjs.map +1 -1
  393. package/dist/node-prod/useCartAPIStateMachine.js +112 -81
  394. package/dist/node-prod/useCartAPIStateMachine.js.map +1 -1
  395. package/dist/node-prod/useCartAPIStateMachine.mjs +111 -80
  396. package/dist/node-prod/useCartAPIStateMachine.mjs.map +1 -1
  397. package/dist/node-prod/useCartActions.js +151 -110
  398. package/dist/node-prod/useCartActions.js.map +1 -1
  399. package/dist/node-prod/useCartActions.mjs +150 -109
  400. package/dist/node-prod/useCartActions.mjs.map +1 -1
  401. package/dist/node-prod/useMoney.js +62 -37
  402. package/dist/node-prod/useMoney.js.map +1 -1
  403. package/dist/node-prod/useMoney.mjs +61 -36
  404. package/dist/node-prod/useMoney.mjs.map +1 -1
  405. package/dist/types/parse-metafield.d.ts +1 -1
  406. package/dist/umd/hydrogen-react.dev.js +994 -880
  407. package/dist/umd/hydrogen-react.dev.js.map +1 -1
  408. package/dist/umd/hydrogen-react.prod.js +16 -16
  409. package/dist/umd/hydrogen-react.prod.js.map +1 -1
  410. package/package.json +13 -13
@@ -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 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 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 ?? shopifyConfig.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 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-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","overrideProps","getPublicTokenHeadersRaw","contentType","includes","_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,aAASR,iBAAiBS,eAAwC;;AACzDA,cAAAA,oDAAenB,gBAAfmB,YAA8BN,cAAcb;AAAAA,IACrD;AAEO,WAAA;AAAA,MACL,GAAGa;AAAAA,MACHJ,sBAAsBU,eAAe;;AAC5BC,eAAAA,yBACLD,cAAcE,aACdR,cAAcX,uBACdiB,mBAAclB,oBAAdkB,YAAiCN,cAAcZ,eAAe;AAAA,MAElE;AAAA,MACAS;AAAAA,MACAF,oBAAoBW,eAAe;;AACjC,aAAIA,oDAAenB,gBAAfmB,mBAA4BG,SAAS;AAAmB;AAO5D,eAAQ,GAAEZ,iBAAiB;AAAA,UACzBV,cAAamB,oDAAenB,gBAAfmB,YAA8BN,cAAcb;AAAAA,QAAAA,CAC1D,UACCmB,oDAAejB,yBAAfiB,YACAN,cAAcX;AAAAA,MAElB;AAAA,IAAA;AAAA,EACF,GACC,CAACW,aAAa,CAAC;AAGhB,SAAAU,oBAAC,eAAe,UAAQ;AAAA,IAAC,OAAON;AAAAA,IAAY;AAAA,EAAA,CAElB;AAE9B;AAKO,SAASO,UAAU;AAClBC,QAAAA,cAAcC,WAAW5B,cAAc;AAC7C,MAAI,CAAC2B,aAAa;AACV,UAAA,IAAIX,MAAO,wDAAuD;AAAA,EAC1E;AACOW,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 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 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 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 ?? shopifyConfig.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 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-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":[],"mappings":";;;;AAKA,MAAM,iBAAiB,cAAmC;AAAA,EACxD,aAAa;AAAA,EACb,iBAAiB;AAAA,EACjB,sBAAsB;AAAA,EACtB,SAAS;AAAA,IACP,SAAS;AAAA,EACX;AAAA,EACA,UAAU;AAAA,IACR,SAAS;AAAA,EACX;AAAA,EACA,QAAQ;AAAA,EACR,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;AACF,GAGG;AACD,MAAI,CAAC,eAAe;AAClB,UAAM,IAAI;AAAA,MACR;AAAA,IAAA;AAAA,EAEJ;AAEI,MAAA,cAAc,yBAAyB,eAAe;AAChD,YAAA;AAAA,MACN,iGAAiG,yDAAyD,cAAc;AAAA,IAAA;AAAA,EAE5K;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,aAAI,oDAAe,gBAAf,mBAA4B,SAAS;AAAmB;AAO5D,eAAO,GAAG,iBAAiB;AAAA,UACzB,cAAa,+CAAe,gBAAe,cAAc;AAAA,QAAA,CAC1D,UACC,+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,UAAU;AAClB,QAAA,cAAc,WAAW,cAAc;AAC7C,MAAI,CAAC,aAAa;AACV,UAAA,IAAI,MAAM,wDAAwD;AAAA,EAC1E;AACO,SAAA;AACT;"}
@@ -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,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,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":";;;;;;;;;"}
@@ -3,40 +3,37 @@ import { useShop } from "./ShopifyProvider.mjs";
3
3
  import { SHOPIFY_STOREFRONT_ID_HEADER, SHOPIFY_Y, SHOPIFY_S, SHOPIFY_STOREFRONT_Y_HEADER, SHOPIFY_STOREFRONT_S_HEADER } from "./cart-constants.mjs";
4
4
  import { parse } from "worktop/cookie";
5
5
  function useCartFetch() {
6
- const {
7
- storefrontId,
8
- getPublicTokenHeaders,
9
- getStorefrontApiUrl
10
- } = useShop();
11
- return useCallback(({
12
- query,
13
- variables
14
- }) => {
15
- const headers = getPublicTokenHeaders({
16
- contentType: "json"
17
- });
18
- if (storefrontId) {
19
- headers[SHOPIFY_STOREFRONT_ID_HEADER] = storefrontId;
20
- }
21
- const cookieData = parse(document.cookie);
22
- if (cookieData[SHOPIFY_Y] && cookieData[SHOPIFY_S]) {
23
- headers[SHOPIFY_STOREFRONT_Y_HEADER] = cookieData[SHOPIFY_Y];
24
- headers[SHOPIFY_STOREFRONT_S_HEADER] = cookieData[SHOPIFY_S];
25
- }
26
- return fetch(getStorefrontApiUrl(), {
27
- method: "POST",
28
- headers,
29
- body: JSON.stringify({
30
- query: query.toString(),
31
- variables
32
- })
33
- }).then((res) => res.json()).catch((error) => {
34
- return {
35
- data: void 0,
36
- errors: error.toString()
37
- };
38
- });
39
- }, [getPublicTokenHeaders, storefrontId, getStorefrontApiUrl]);
6
+ const { storefrontId, getPublicTokenHeaders, getStorefrontApiUrl } = useShop();
7
+ return useCallback(
8
+ ({
9
+ query,
10
+ variables
11
+ }) => {
12
+ const headers = getPublicTokenHeaders({ contentType: "json" });
13
+ if (storefrontId) {
14
+ headers[SHOPIFY_STOREFRONT_ID_HEADER] = storefrontId;
15
+ }
16
+ const cookieData = parse(document.cookie);
17
+ if (cookieData[SHOPIFY_Y] && cookieData[SHOPIFY_S]) {
18
+ headers[SHOPIFY_STOREFRONT_Y_HEADER] = cookieData[SHOPIFY_Y];
19
+ headers[SHOPIFY_STOREFRONT_S_HEADER] = cookieData[SHOPIFY_S];
20
+ }
21
+ return fetch(getStorefrontApiUrl(), {
22
+ method: "POST",
23
+ headers,
24
+ body: JSON.stringify({
25
+ query: query.toString(),
26
+ variables
27
+ })
28
+ }).then((res) => res.json()).catch((error) => {
29
+ return {
30
+ data: void 0,
31
+ errors: error.toString()
32
+ };
33
+ });
34
+ },
35
+ [getPublicTokenHeaders, storefrontId, getStorefrontApiUrl]
36
+ );
40
37
  }
41
38
  export {
42
39
  useCartFetch
@@ -1 +1 @@
1
- {"version":3,"file":"cart-hooks.mjs","sources":["../../src/cart-hooks.tsx"],"sourcesContent":["import {useState, useCallback} from 'react';\nimport {useShop} from './ShopifyProvider.js';\nimport {flattenConnection} from './flatten-connection.js';\nimport {CartInput, Cart as CartType} from './storefront-api-types.js';\nimport {CartCreate, defaultCartFragment} from './cart-queries.js';\nimport {Cart} from './cart-types.js';\nimport {\n SHOPIFY_STOREFRONT_ID_HEADER,\n SHOPIFY_STOREFRONT_Y_HEADER,\n SHOPIFY_STOREFRONT_S_HEADER,\n SHOPIFY_Y,\n SHOPIFY_S,\n} from './cart-constants.js';\nimport {parse} from 'worktop/cookie';\nimport type {StorefrontApiResponseOkPartial} from './storefront-api-response.types.js';\n\nexport function useCartFetch() {\n const {storefrontId, getPublicTokenHeaders, getStorefrontApiUrl} = useShop();\n\n return useCallback(\n <ReturnDataGeneric,>({\n query,\n variables,\n }: {\n query: string;\n variables: Record<string, unknown>;\n }): Promise<StorefrontApiResponseOkPartial<ReturnDataGeneric>> => {\n const headers = getPublicTokenHeaders({contentType: 'json'});\n\n if (storefrontId) {\n headers[SHOPIFY_STOREFRONT_ID_HEADER] = storefrontId;\n }\n\n // Find Shopify cookies\n const cookieData = parse(document.cookie);\n if (cookieData[SHOPIFY_Y] && cookieData[SHOPIFY_S]) {\n headers[SHOPIFY_STOREFRONT_Y_HEADER] = cookieData[SHOPIFY_Y];\n headers[SHOPIFY_STOREFRONT_S_HEADER] = cookieData[SHOPIFY_S];\n }\n\n return fetch(getStorefrontApiUrl(), {\n method: 'POST',\n headers,\n body: JSON.stringify({\n query: query.toString(),\n variables,\n }),\n })\n .then((res) => res.json())\n .catch((error) => {\n return {\n data: undefined,\n errors: error.toString(),\n };\n });\n },\n [getPublicTokenHeaders, storefrontId, getStorefrontApiUrl]\n );\n}\n\nexport function useInstantCheckout() {\n const [cart, updateCart] = useState<Cart | undefined>();\n const [checkoutUrl, updateCheckoutUrl] = useState<Cart['checkoutUrl']>();\n const [error, updateError] = useState<string | undefined>();\n\n const fetch = useCartFetch();\n\n const createInstantCheckout = useCallback(\n async (cartInput: CartInput) => {\n const {data, errors} = await fetch<{\n cartCreate: {cart: CartType};\n }>({\n query: CartCreate(defaultCartFragment),\n variables: {\n input: cartInput,\n },\n });\n\n if (errors) {\n updateError(errors.toString());\n updateCart(undefined);\n updateCheckoutUrl(undefined);\n }\n\n if (data?.cartCreate?.cart) {\n const dataCart = data.cartCreate.cart;\n updateCart({\n ...dataCart,\n lines: flattenConnection(dataCart.lines),\n note: dataCart.note ?? undefined,\n });\n updateCheckoutUrl(dataCart.checkoutUrl);\n }\n },\n [fetch]\n );\n\n return {cart, checkoutUrl, error, createInstantCheckout};\n}\n"],"names":["useCartFetch","storefrontId","getPublicTokenHeaders","getStorefrontApiUrl","useShop","useCallback","query","variables","headers","contentType","SHOPIFY_STOREFRONT_ID_HEADER","cookieData","parse","document","cookie","SHOPIFY_Y","SHOPIFY_S","SHOPIFY_STOREFRONT_Y_HEADER","SHOPIFY_STOREFRONT_S_HEADER","fetch","method","body","JSON","stringify","toString","then","res","json","catch","error","data","undefined","errors"],"mappings":";;;;AAgBO,SAASA,eAAe;AACvB,QAAA;AAAA,IAACC;AAAAA,IAAcC;AAAAA,IAAuBC;AAAAA,MAAuBC,QAAS;AAE5E,SAAOC,YACL,CAAqB;AAAA,IACnBC;AAAAA,IACAC;AAAAA,EAAAA,MAIgE;AAChE,UAAMC,UAAUN,sBAAsB;AAAA,MAACO,aAAa;AAAA,IAAA,CAAO;AAE3D,QAAIR,cAAc;AAChBO,cAAQE,gCAAgCT;AAAAA,IAC1C;AAGMU,UAAAA,aAAaC,MAAMC,SAASC,MAAM;AACpCH,QAAAA,WAAWI,cAAcJ,WAAWK,YAAY;AAClDR,cAAQS,+BAA+BN,WAAWI;AAClDP,cAAQU,+BAA+BP,WAAWK;AAAAA,IACpD;AAEOG,WAAAA,MAAMhB,uBAAuB;AAAA,MAClCiB,QAAQ;AAAA,MACRZ;AAAAA,MACAa,MAAMC,KAAKC,UAAU;AAAA,QACnBjB,OAAOA,MAAMkB,SAAU;AAAA,QACvBjB;AAAAA,MAAAA,CACD;AAAA,IAAA,CACF,EACEkB,KAAMC,CAAAA,QAAQA,IAAIC,MAAM,EACxBC,MAAOC,CAAU,UAAA;AACT,aAAA;AAAA,QACLC,MAAMC;AAAAA,QACNC,QAAQH,MAAML,SAAQ;AAAA,MAAA;AAAA,IACxB,CACD;AAAA,EAEL,GAAA,CAACtB,uBAAuBD,cAAcE,mBAAmB,CAAC;AAE9D;"}
1
+ {"version":3,"file":"cart-hooks.mjs","sources":["../../src/cart-hooks.tsx"],"sourcesContent":["import {useState, useCallback} from 'react';\nimport {useShop} from './ShopifyProvider.js';\nimport {flattenConnection} from './flatten-connection.js';\nimport {CartInput, Cart as CartType} from './storefront-api-types.js';\nimport {CartCreate, defaultCartFragment} from './cart-queries.js';\nimport {Cart} from './cart-types.js';\nimport {\n SHOPIFY_STOREFRONT_ID_HEADER,\n SHOPIFY_STOREFRONT_Y_HEADER,\n SHOPIFY_STOREFRONT_S_HEADER,\n SHOPIFY_Y,\n SHOPIFY_S,\n} from './cart-constants.js';\nimport {parse} from 'worktop/cookie';\nimport type {StorefrontApiResponseOkPartial} from './storefront-api-response.types.js';\n\nexport function useCartFetch() {\n const {storefrontId, getPublicTokenHeaders, getStorefrontApiUrl} = useShop();\n\n return useCallback(\n <ReturnDataGeneric,>({\n query,\n variables,\n }: {\n query: string;\n variables: Record<string, unknown>;\n }): Promise<StorefrontApiResponseOkPartial<ReturnDataGeneric>> => {\n const headers = getPublicTokenHeaders({contentType: 'json'});\n\n if (storefrontId) {\n headers[SHOPIFY_STOREFRONT_ID_HEADER] = storefrontId;\n }\n\n // Find Shopify cookies\n const cookieData = parse(document.cookie);\n if (cookieData[SHOPIFY_Y] && cookieData[SHOPIFY_S]) {\n headers[SHOPIFY_STOREFRONT_Y_HEADER] = cookieData[SHOPIFY_Y];\n headers[SHOPIFY_STOREFRONT_S_HEADER] = cookieData[SHOPIFY_S];\n }\n\n return fetch(getStorefrontApiUrl(), {\n method: 'POST',\n headers,\n body: JSON.stringify({\n query: query.toString(),\n variables,\n }),\n })\n .then((res) => res.json())\n .catch((error) => {\n return {\n data: undefined,\n errors: error.toString(),\n };\n });\n },\n [getPublicTokenHeaders, storefrontId, getStorefrontApiUrl]\n );\n}\n\nexport function useInstantCheckout() {\n const [cart, updateCart] = useState<Cart | undefined>();\n const [checkoutUrl, updateCheckoutUrl] = useState<Cart['checkoutUrl']>();\n const [error, updateError] = useState<string | undefined>();\n\n const fetch = useCartFetch();\n\n const createInstantCheckout = useCallback(\n async (cartInput: CartInput) => {\n const {data, errors} = await fetch<{\n cartCreate: {cart: CartType};\n }>({\n query: CartCreate(defaultCartFragment),\n variables: {\n input: cartInput,\n },\n });\n\n if (errors) {\n updateError(errors.toString());\n updateCart(undefined);\n updateCheckoutUrl(undefined);\n }\n\n if (data?.cartCreate?.cart) {\n const dataCart = data.cartCreate.cart;\n updateCart({\n ...dataCart,\n lines: flattenConnection(dataCart.lines),\n note: dataCart.note ?? undefined,\n });\n updateCheckoutUrl(dataCart.checkoutUrl);\n }\n },\n [fetch]\n );\n\n return {cart, checkoutUrl, error, createInstantCheckout};\n}\n"],"names":[],"mappings":";;;;AAgBO,SAAS,eAAe;AAC7B,QAAM,EAAC,cAAc,uBAAuB,wBAAuB,QAAQ;AAEpE,SAAA;AAAA,IACL,CAAqB;AAAA,MACnB;AAAA,MACA;AAAA,IAAA,MAIgE;AAChE,YAAM,UAAU,sBAAsB,EAAC,aAAa,OAAO,CAAA;AAE3D,UAAI,cAAc;AAChB,gBAAQ,4BAA4B,IAAI;AAAA,MAC1C;AAGM,YAAA,aAAa,MAAM,SAAS,MAAM;AACxC,UAAI,WAAW,SAAS,KAAK,WAAW,SAAS,GAAG;AAC1C,gBAAA,2BAA2B,IAAI,WAAW,SAAS;AACnD,gBAAA,2BAA2B,IAAI,WAAW,SAAS;AAAA,MAC7D;AAEO,aAAA,MAAM,uBAAuB;AAAA,QAClC,QAAQ;AAAA,QACR;AAAA,QACA,MAAM,KAAK,UAAU;AAAA,UACnB,OAAO,MAAM,SAAS;AAAA,UACtB;AAAA,QAAA,CACD;AAAA,MAAA,CACF,EACE,KAAK,CAAC,QAAQ,IAAI,MAAM,EACxB,MAAM,CAAC,UAAU;AACT,eAAA;AAAA,UACL,MAAM;AAAA,UACN,QAAQ,MAAM,SAAS;AAAA,QAAA;AAAA,MACzB,CACD;AAAA,IACL;AAAA,IACA,CAAC,uBAAuB,cAAc,mBAAmB;AAAA,EAAA;AAE7D;"}
@@ -1,4 +1,6 @@
1
- const CartLineAdd = (cartFragment) => `
1
+ const CartLineAdd = (cartFragment) => (
2
+ /* GraphQL */
3
+ `
2
4
  mutation CartLineAdd(
3
5
  $cartId: ID!
4
6
  $lines: [CartLineInput!]!
@@ -13,8 +15,11 @@ const CartLineAdd = (cartFragment) => `
13
15
  }
14
16
 
15
17
  ${cartFragment}
16
- `;
17
- const CartCreate = (cartFragment) => `
18
+ `
19
+ );
20
+ const CartCreate = (cartFragment) => (
21
+ /* GraphQL */
22
+ `
18
23
  mutation CartCreate(
19
24
  $input: CartInput!
20
25
  $numCartLines: Int = 250
@@ -28,8 +33,11 @@ const CartCreate = (cartFragment) => `
28
33
  }
29
34
 
30
35
  ${cartFragment}
31
- `;
32
- const CartLineRemove = (cartFragment) => `
36
+ `
37
+ );
38
+ const CartLineRemove = (cartFragment) => (
39
+ /* GraphQL */
40
+ `
33
41
  mutation CartLineRemove(
34
42
  $cartId: ID!
35
43
  $lines: [ID!]!
@@ -44,8 +52,11 @@ const CartLineRemove = (cartFragment) => `
44
52
  }
45
53
 
46
54
  ${cartFragment}
47
- `;
48
- const CartLineUpdate = (cartFragment) => `
55
+ `
56
+ );
57
+ const CartLineUpdate = (cartFragment) => (
58
+ /* GraphQL */
59
+ `
49
60
  mutation CartLineUpdate(
50
61
  $cartId: ID!
51
62
  $lines: [CartLineUpdateInput!]!
@@ -60,8 +71,11 @@ const CartLineUpdate = (cartFragment) => `
60
71
  }
61
72
 
62
73
  ${cartFragment}
63
- `;
64
- const CartNoteUpdate = (cartFragment) => `
74
+ `
75
+ );
76
+ const CartNoteUpdate = (cartFragment) => (
77
+ /* GraphQL */
78
+ `
65
79
  mutation CartNoteUpdate(
66
80
  $cartId: ID!
67
81
  $note: String
@@ -76,8 +90,11 @@ const CartNoteUpdate = (cartFragment) => `
76
90
  }
77
91
 
78
92
  ${cartFragment}
79
- `;
80
- const CartBuyerIdentityUpdate = (cartFragment) => `
93
+ `
94
+ );
95
+ const CartBuyerIdentityUpdate = (cartFragment) => (
96
+ /* GraphQL */
97
+ `
81
98
  mutation CartBuyerIdentityUpdate(
82
99
  $cartId: ID!
83
100
  $buyerIdentity: CartBuyerIdentityInput!
@@ -92,8 +109,11 @@ const CartBuyerIdentityUpdate = (cartFragment) => `
92
109
  }
93
110
 
94
111
  ${cartFragment}
95
- `;
96
- const CartAttributesUpdate = (cartFragment) => `
112
+ `
113
+ );
114
+ const CartAttributesUpdate = (cartFragment) => (
115
+ /* GraphQL */
116
+ `
97
117
  mutation CartAttributesUpdate(
98
118
  $attributes: [AttributeInput!]!
99
119
  $cartId: ID!
@@ -108,8 +128,11 @@ const CartAttributesUpdate = (cartFragment) => `
108
128
  }
109
129
 
110
130
  ${cartFragment}
111
- `;
112
- const CartDiscountCodesUpdate = (cartFragment) => `
131
+ `
132
+ );
133
+ const CartDiscountCodesUpdate = (cartFragment) => (
134
+ /* GraphQL */
135
+ `
113
136
  mutation CartDiscountCodesUpdate(
114
137
  $cartId: ID!
115
138
  $discountCodes: [String!]
@@ -124,8 +147,11 @@ const CartDiscountCodesUpdate = (cartFragment) => `
124
147
  }
125
148
 
126
149
  ${cartFragment}
127
- `;
128
- const CartQuery = (cartFragment) => `
150
+ `
151
+ );
152
+ const CartQuery = (cartFragment) => (
153
+ /* GraphQL */
154
+ `
129
155
  query CartQuery(
130
156
  $id: ID!
131
157
  $numCartLines: Int = 250
@@ -137,8 +163,11 @@ const CartQuery = (cartFragment) => `
137
163
  }
138
164
 
139
165
  ${cartFragment}
140
- `;
141
- const defaultCartFragment = `
166
+ `
167
+ );
168
+ const defaultCartFragment = (
169
+ /* GraphQL */
170
+ `
142
171
  fragment CartFragment on Cart {
143
172
  id
144
173
  checkoutUrl
@@ -238,7 +267,8 @@ const defaultCartFragment = `
238
267
  width
239
268
  height
240
269
  }
241
- `;
270
+ `
271
+ );
242
272
  export {
243
273
  CartAttributesUpdate,
244
274
  CartBuyerIdentityUpdate,
@@ -1 +1 @@
1
- {"version":3,"file":"cart-queries.mjs","sources":["../../src/cart-queries.ts"],"sourcesContent":["export const CartLineAdd = (cartFragment: string) => /* GraphQL */ `\n mutation CartLineAdd(\n $cartId: ID!\n $lines: [CartLineInput!]!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartLinesAdd(cartId: $cartId, lines: $lines) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartCreate = (cartFragment: string) => /* GraphQL */ `\n mutation CartCreate(\n $input: CartInput!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartCreate(input: $input) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartLineRemove = (cartFragment: string) => /* GraphQL */ `\n mutation CartLineRemove(\n $cartId: ID!\n $lines: [ID!]!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartLinesRemove(cartId: $cartId, lineIds: $lines) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartLineUpdate = (cartFragment: string) => /* GraphQL */ `\n mutation CartLineUpdate(\n $cartId: ID!\n $lines: [CartLineUpdateInput!]!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartLinesUpdate(cartId: $cartId, lines: $lines) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartNoteUpdate = (cartFragment: string) => /* GraphQL */ `\n mutation CartNoteUpdate(\n $cartId: ID!\n $note: String\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartNoteUpdate(cartId: $cartId, note: $note) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartBuyerIdentityUpdate = (cartFragment: string) => /* GraphQL */ `\n mutation CartBuyerIdentityUpdate(\n $cartId: ID!\n $buyerIdentity: CartBuyerIdentityInput!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartBuyerIdentityUpdate(cartId: $cartId, buyerIdentity: $buyerIdentity) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartAttributesUpdate = (cartFragment: string) => /* GraphQL */ `\n mutation CartAttributesUpdate(\n $attributes: [AttributeInput!]!\n $cartId: ID!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartAttributesUpdate(attributes: $attributes, cartId: $cartId) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartDiscountCodesUpdate = (cartFragment: string) => /* GraphQL */ `\n mutation CartDiscountCodesUpdate(\n $cartId: ID!\n $discountCodes: [String!]\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartDiscountCodesUpdate(cartId: $cartId, discountCodes: $discountCodes) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartQuery = (cartFragment: string) => /* GraphQL */ `\n query CartQuery(\n $id: ID!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cart(id: $id) {\n ...CartFragment\n }\n }\n\n ${cartFragment}\n`;\n\nexport const defaultCartFragment = /* GraphQL */ `\n fragment CartFragment on Cart {\n id\n checkoutUrl\n totalQuantity\n buyerIdentity {\n countryCode\n customer {\n id\n email\n firstName\n lastName\n displayName\n }\n email\n phone\n }\n lines(first: $numCartLines) {\n edges {\n node {\n id\n quantity\n attributes {\n key\n value\n }\n cost {\n totalAmount {\n amount\n currencyCode\n }\n compareAtAmountPerQuantity {\n amount\n currencyCode\n }\n }\n merchandise {\n ... on ProductVariant {\n id\n availableForSale\n compareAtPrice {\n ...MoneyFragment\n }\n price {\n ...MoneyFragment\n }\n requiresShipping\n title\n image {\n ...ImageFragment\n }\n product {\n handle\n title\n id\n }\n selectedOptions {\n name\n value\n }\n }\n }\n }\n }\n }\n cost {\n subtotalAmount {\n ...MoneyFragment\n }\n totalAmount {\n ...MoneyFragment\n }\n totalDutyAmount {\n ...MoneyFragment\n }\n totalTaxAmount {\n ...MoneyFragment\n }\n }\n note\n attributes {\n key\n value\n }\n discountCodes {\n code\n }\n }\n\n fragment MoneyFragment on MoneyV2 {\n currencyCode\n amount\n }\n fragment ImageFragment on Image {\n id\n url\n altText\n width\n height\n }\n`;\n"],"names":[],"mappings":"AAAa,MAAA,cAAc,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAc/D;AAAA;AAGS,MAAA,aAAa,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAa9D;AAAA;AAGS,MAAA,iBAAiB,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAclE;AAAA;AAGS,MAAA,iBAAiB,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAclE;AAAA;AAGS,MAAA,iBAAiB,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAclE;AAAA;AAGS,MAAA,0BAA0B,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAc3E;AAAA;AAGS,MAAA,uBAAuB,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcxE;AAAA;AAGS,MAAA,0BAA0B,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAc3E;AAAA;AAGS,MAAA,YAAY,CAAC,iBAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAW7D;AAAA;AAGG,MAAM,sBAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
1
+ {"version":3,"file":"cart-queries.mjs","sources":["../../src/cart-queries.ts"],"sourcesContent":["export const CartLineAdd = (cartFragment: string) => /* GraphQL */ `\n mutation CartLineAdd(\n $cartId: ID!\n $lines: [CartLineInput!]!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartLinesAdd(cartId: $cartId, lines: $lines) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartCreate = (cartFragment: string) => /* GraphQL */ `\n mutation CartCreate(\n $input: CartInput!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartCreate(input: $input) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartLineRemove = (cartFragment: string) => /* GraphQL */ `\n mutation CartLineRemove(\n $cartId: ID!\n $lines: [ID!]!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartLinesRemove(cartId: $cartId, lineIds: $lines) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartLineUpdate = (cartFragment: string) => /* GraphQL */ `\n mutation CartLineUpdate(\n $cartId: ID!\n $lines: [CartLineUpdateInput!]!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartLinesUpdate(cartId: $cartId, lines: $lines) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartNoteUpdate = (cartFragment: string) => /* GraphQL */ `\n mutation CartNoteUpdate(\n $cartId: ID!\n $note: String\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartNoteUpdate(cartId: $cartId, note: $note) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartBuyerIdentityUpdate = (cartFragment: string) => /* GraphQL */ `\n mutation CartBuyerIdentityUpdate(\n $cartId: ID!\n $buyerIdentity: CartBuyerIdentityInput!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartBuyerIdentityUpdate(cartId: $cartId, buyerIdentity: $buyerIdentity) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartAttributesUpdate = (cartFragment: string) => /* GraphQL */ `\n mutation CartAttributesUpdate(\n $attributes: [AttributeInput!]!\n $cartId: ID!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartAttributesUpdate(attributes: $attributes, cartId: $cartId) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartDiscountCodesUpdate = (cartFragment: string) => /* GraphQL */ `\n mutation CartDiscountCodesUpdate(\n $cartId: ID!\n $discountCodes: [String!]\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cartDiscountCodesUpdate(cartId: $cartId, discountCodes: $discountCodes) {\n cart {\n ...CartFragment\n }\n }\n }\n\n ${cartFragment}\n`;\n\nexport const CartQuery = (cartFragment: string) => /* GraphQL */ `\n query CartQuery(\n $id: ID!\n $numCartLines: Int = 250\n $country: CountryCode = ZZ\n ) @inContext(country: $country) {\n cart(id: $id) {\n ...CartFragment\n }\n }\n\n ${cartFragment}\n`;\n\nexport const defaultCartFragment = /* GraphQL */ `\n fragment CartFragment on Cart {\n id\n checkoutUrl\n totalQuantity\n buyerIdentity {\n countryCode\n customer {\n id\n email\n firstName\n lastName\n displayName\n }\n email\n phone\n }\n lines(first: $numCartLines) {\n edges {\n node {\n id\n quantity\n attributes {\n key\n value\n }\n cost {\n totalAmount {\n amount\n currencyCode\n }\n compareAtAmountPerQuantity {\n amount\n currencyCode\n }\n }\n merchandise {\n ... on ProductVariant {\n id\n availableForSale\n compareAtPrice {\n ...MoneyFragment\n }\n price {\n ...MoneyFragment\n }\n requiresShipping\n title\n image {\n ...ImageFragment\n }\n product {\n handle\n title\n id\n }\n selectedOptions {\n name\n value\n }\n }\n }\n }\n }\n }\n cost {\n subtotalAmount {\n ...MoneyFragment\n }\n totalAmount {\n ...MoneyFragment\n }\n totalDutyAmount {\n ...MoneyFragment\n }\n totalTaxAmount {\n ...MoneyFragment\n }\n }\n note\n attributes {\n key\n value\n }\n discountCodes {\n code\n }\n }\n\n fragment MoneyFragment on MoneyV2 {\n currencyCode\n amount\n }\n fragment ImageFragment on Image {\n id\n url\n altText\n width\n height\n }\n`;\n"],"names":[],"mappings":"AAAO,MAAM,cAAc,CAAC;AAAA;AAAA,EAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAc/D;AAAA;AAAA;AAGG,MAAM,aAAa,CAAC;AAAA;AAAA,EAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAa9D;AAAA;AAAA;AAGG,MAAM,iBAAiB,CAAC;AAAA;AAAA,EAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAclE;AAAA;AAAA;AAGG,MAAM,iBAAiB,CAAC;AAAA;AAAA,EAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAclE;AAAA;AAAA;AAGG,MAAM,iBAAiB,CAAC;AAAA;AAAA,EAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAclE;AAAA;AAAA;AAGG,MAAM,0BAA0B,CAAC;AAAA;AAAA,EAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAc3E;AAAA;AAAA;AAGG,MAAM,uBAAuB,CAAC;AAAA;AAAA,EAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAcxE;AAAA;AAAA;AAGG,MAAM,0BAA0B,CAAC;AAAA;AAAA,EAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAc3E;AAAA;AAAA;AAGG,MAAM,YAAY,CAAC;AAAA;AAAA,EAAuC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAW7D;AAAA;AAAA;AAGS,MAAA;AAAA;AAAA,EAAoC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1,4 +1,5 @@
1
1
  const storefrontApiCustomScalars = {
2
+ // Keep in sync with the definitions in the app/nextjs/codegen.ts!
2
3
  DateTime: "string",
3
4
  Decimal: "string",
4
5
  HTML: "string",
@@ -1 +1 @@
1
- {"version":3,"file":"codegen.helpers.mjs","sources":["../../src/codegen.helpers.ts"],"sourcesContent":["/** Meant to be used with GraphQL CodeGen to type the Storefront API's custom scalars correctly */\nexport const storefrontApiCustomScalars = {\n // Keep in sync with the definitions in the app/nextjs/codegen.ts!\n DateTime: 'string',\n Decimal: 'string',\n HTML: 'string',\n URL: 'string',\n Color: 'string',\n UnsignedInt64: 'string',\n};\n"],"names":[],"mappings":"AACO,MAAM,6BAA6B;AAAA,EAExC,UAAU;AAAA,EACV,SAAS;AAAA,EACT,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,eAAe;AACjB;"}
1
+ {"version":3,"file":"codegen.helpers.mjs","sources":["../../src/codegen.helpers.ts"],"sourcesContent":["/** Meant to be used with GraphQL CodeGen to type the Storefront API's custom scalars correctly */\nexport const storefrontApiCustomScalars = {\n // Keep in sync with the definitions in the app/nextjs/codegen.ts!\n DateTime: 'string',\n Decimal: 'string',\n HTML: 'string',\n URL: 'string',\n Color: 'string',\n UnsignedInt64: 'string',\n};\n"],"names":[],"mappings":"AACO,MAAM,6BAA6B;AAAA;AAAA,EAExC,UAAU;AAAA,EACV,SAAS;AAAA,EACT,MAAM;AAAA,EACN,KAAK;AAAA,EACL,OAAO;AAAA,EACP,eAAe;AACjB;"}
@@ -15,7 +15,7 @@ function addImageSizeParametersToUrl({
15
15
  scale
16
16
  }) {
17
17
  const newUrl = new URL(src);
18
- const multipliedScale = scale != null ? scale : 1;
18
+ const multipliedScale = scale ?? 1;
19
19
  if (width) {
20
20
  let finalWidth;
21
21
  if (typeof width === "string") {
@@ -46,27 +46,27 @@ function getShopifyImageDimensions({
46
46
  loaderOptions,
47
47
  elementProps
48
48
  }) {
49
- var _a, _b, _c, _d, _e, _f;
50
49
  let aspectRatio = null;
51
50
  if ((sfapiImage == null ? void 0 : sfapiImage.width) && (sfapiImage == null ? void 0 : sfapiImage.height)) {
52
51
  aspectRatio = (sfapiImage == null ? void 0 : sfapiImage.width) / (sfapiImage == null ? void 0 : sfapiImage.height);
53
52
  }
54
53
  if ((loaderOptions == null ? void 0 : loaderOptions.width) || (loaderOptions == null ? void 0 : loaderOptions.height)) {
55
54
  return {
56
- width: (_a = loaderOptions == null ? void 0 : loaderOptions.width) != null ? _a : aspectRatio && typeof loaderOptions.height === "number" ? Math.round(aspectRatio * loaderOptions.height) : null,
57
- height: (_b = loaderOptions == null ? void 0 : loaderOptions.height) != null ? _b : aspectRatio && typeof loaderOptions.width === "number" ? Math.round(aspectRatio * loaderOptions.width) : null
55
+ width: (loaderOptions == null ? void 0 : loaderOptions.width) ?? (aspectRatio && typeof loaderOptions.height === "number" ? Math.round(aspectRatio * loaderOptions.height) : null),
56
+ height: (loaderOptions == null ? void 0 : loaderOptions.height) ?? (aspectRatio && typeof loaderOptions.width === "number" ? Math.round(aspectRatio * loaderOptions.width) : null)
58
57
  };
59
58
  }
60
59
  if ((elementProps == null ? void 0 : elementProps.width) || (elementProps == null ? void 0 : elementProps.height)) {
61
60
  return {
62
- width: (_c = elementProps == null ? void 0 : elementProps.width) != null ? _c : aspectRatio && typeof elementProps.height === "number" ? Math.round(aspectRatio * elementProps.height) : null,
63
- height: (_d = elementProps == null ? void 0 : elementProps.height) != null ? _d : aspectRatio && typeof elementProps.width === "number" ? Math.round(aspectRatio * elementProps.width) : null
61
+ width: (elementProps == null ? void 0 : elementProps.width) ?? (aspectRatio && typeof elementProps.height === "number" ? Math.round(aspectRatio * elementProps.height) : null),
62
+ height: (elementProps == null ? void 0 : elementProps.height) ?? (aspectRatio && typeof elementProps.width === "number" ? Math.round(aspectRatio * elementProps.width) : null)
64
63
  };
65
64
  }
66
65
  if ((sfapiImage == null ? void 0 : sfapiImage.width) || (sfapiImage == null ? void 0 : sfapiImage.height)) {
67
66
  return {
68
- width: (_e = sfapiImage == null ? void 0 : sfapiImage.width) != null ? _e : null,
69
- height: (_f = sfapiImage == null ? void 0 : sfapiImage.height) != null ? _f : null
67
+ // can't calculate the aspect ratio here
68
+ width: (sfapiImage == null ? void 0 : sfapiImage.width) ?? null,
69
+ height: (sfapiImage == null ? void 0 : sfapiImage.height) ?? null
70
70
  };
71
71
  }
72
72
  return { width: null, height: null };
@@ -1 +1 @@
1
- {"version":3,"file":"image-size.mjs","sources":["../../src/image-size.ts"],"sourcesContent":["import type {Image as ImageType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\nimport type {ShopifyLoaderOptions, ShopifyLoaderParams} from './Image.js';\n\n// TODO: Are there other CDNs missing from here?\nconst PRODUCTION_CDN_HOSTNAMES = [\n 'cdn.shopify.com',\n 'cdn.shopifycdn.net',\n 'shopify-assets.shopifycdn.com',\n 'shopify-assets.shopifycdn.net',\n];\nconst LOCAL_CDN_HOSTNAMES = ['spin.dev'];\nconst ALL_CDN_HOSTNAMES = [...PRODUCTION_CDN_HOSTNAMES, ...LOCAL_CDN_HOSTNAMES];\n\n// based on the default width sizes used by the Shopify liquid HTML tag img_tag plus a 2560 width to account for 2k resolutions\n// reference: https://shopify.dev/api/liquid/filters/html-filters#image_tag\nexport const IMG_SRC_SET_SIZES = [352, 832, 1200, 1920, 2560];\n\n/**\n * Adds image size parameters to an image URL hosted by Shopify's CDN\n */\nexport function addImageSizeParametersToUrl({\n src,\n width,\n height,\n crop,\n scale,\n}: ShopifyLoaderParams) {\n const newUrl = new URL(src);\n\n const multipliedScale = scale ?? 1;\n\n if (width) {\n let finalWidth: string;\n\n if (typeof width === 'string') {\n finalWidth = (IMG_SRC_SET_SIZES[0] * multipliedScale).toString();\n } else {\n finalWidth = (Number(width) * multipliedScale).toString();\n }\n\n newUrl.searchParams.append('width', finalWidth);\n }\n\n if (height && typeof height === 'number') {\n newUrl.searchParams.append('height', (height * multipliedScale).toString());\n }\n\n crop && newUrl.searchParams.append('crop', crop);\n\n // for now we intentionally leave off the scale param, and instead multiple width & height by scale instead\n // scale && newUrl.searchParams.append('scale', scale.toString());\n\n return newUrl.toString();\n}\n\nexport function shopifyImageLoader(params: ShopifyLoaderParams) {\n const newSrc = new URL(params.src);\n const isShopifyServedImage = ALL_CDN_HOSTNAMES.some((allowedHostname) =>\n newSrc.hostname.endsWith(allowedHostname)\n );\n\n if (\n !isShopifyServedImage ||\n (!params.width && !params.height && !params.crop && !params.scale)\n ) {\n return params.src;\n }\n\n return addImageSizeParametersToUrl(params);\n}\n\ntype HtmlImageProps = React.ImgHTMLAttributes<HTMLImageElement>;\n\nexport type GetShopifyImageDimensionsProps = {\n data: Pick<\n PartialDeep<ImageType, {recurseIntoArrays: true}>,\n 'altText' | 'url' | 'id' | 'width' | 'height'\n >;\n loaderOptions?: ShopifyLoaderOptions;\n elementProps?: {\n width?: HtmlImageProps['width'];\n height?: HtmlImageProps['height'];\n };\n};\n\ntype GetShopifyImageDimensionsPropsReturn = {\n width: number | string | null;\n height: number | string | null;\n};\n\n/**\n * Width and height are determined using the followiing priority list:\n * 1. `loaderOptions`'s width/height\n * 2. `elementProps`'s width/height\n * 3. `data`'s width/height\n *\n * If only one of `width` or `height` are defined, then the other will attempt to be calculated based on the Image's aspect ratio,\n * provided that both `data.width` and `data.height` are available. If not, then the aspect ratio cannot be determined and the missing\n * value will reamin as `null`\n */\nexport function getShopifyImageDimensions({\n data: sfapiImage,\n loaderOptions,\n elementProps,\n}: GetShopifyImageDimensionsProps): GetShopifyImageDimensionsPropsReturn {\n let aspectRatio: number | null = null;\n\n if (sfapiImage?.width && sfapiImage?.height) {\n aspectRatio = sfapiImage?.width / sfapiImage?.height;\n }\n\n // * 1. `loaderOptions`'s width/height\n if (loaderOptions?.width || loaderOptions?.height) {\n return {\n width:\n loaderOptions?.width ??\n (aspectRatio && typeof loaderOptions.height === 'number'\n ? Math.round(aspectRatio * loaderOptions.height)\n : null),\n height:\n loaderOptions?.height ??\n (aspectRatio && typeof loaderOptions.width === 'number'\n ? Math.round(aspectRatio * loaderOptions.width)\n : null),\n };\n }\n\n // * 2. `elementProps`'s width/height\n if (elementProps?.width || elementProps?.height) {\n return {\n width:\n elementProps?.width ??\n (aspectRatio && typeof elementProps.height === 'number'\n ? Math.round(aspectRatio * elementProps.height)\n : null),\n height:\n elementProps?.height ??\n (aspectRatio && typeof elementProps.width === 'number'\n ? Math.round(aspectRatio * elementProps.width)\n : null),\n };\n }\n\n // * 3. `data`'s width/height\n if (sfapiImage?.width || sfapiImage?.height) {\n return {\n // can't calculate the aspect ratio here\n width: sfapiImage?.width ?? null,\n height: sfapiImage?.height ?? null,\n };\n }\n\n return {width: null, height: null};\n}\n"],"names":[],"mappings":"AAKA,MAAM,2BAA2B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,MAAM,sBAAsB,CAAC,UAAU;AACvC,MAAM,oBAAoB,CAAC,GAAG,0BAA0B,GAAG,mBAAmB;AAIvE,MAAM,oBAAoB,CAAC,KAAK,KAAK,MAAM,MAAM,IAAI;AAKrD,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AAChB,QAAA,SAAS,IAAI,IAAI,GAAG;AAE1B,QAAM,kBAAkB,wBAAS;AAEjC,MAAI,OAAO;AACL,QAAA;AAEA,QAAA,OAAO,UAAU,UAAU;AACf,oBAAA,kBAAkB,KAAK,iBAAiB,SAAS;AAAA,IAAA,OAC1D;AACL,oBAAc,OAAO,KAAK,IAAI,iBAAiB,SAAS;AAAA,IAC1D;AAEO,WAAA,aAAa,OAAO,SAAS,UAAU;AAAA,EAChD;AAEI,MAAA,UAAU,OAAO,WAAW,UAAU;AACxC,WAAO,aAAa,OAAO,WAAW,SAAS,iBAAiB,UAAU;AAAA,EAC5E;AAEA,UAAQ,OAAO,aAAa,OAAO,QAAQ,IAAI;AAK/C,SAAO,OAAO;AAChB;AAEO,SAAS,mBAAmB,QAA6B;AAC9D,QAAM,SAAS,IAAI,IAAI,OAAO,GAAG;AACjC,QAAM,uBAAuB,kBAAkB;AAAA,IAAK,CAAC,oBACnD,OAAO,SAAS,SAAS,eAAe;AAAA,EAAA;AAG1C,MACE,CAAC,wBACA,CAAC,OAAO,SAAS,CAAC,OAAO,UAAU,CAAC,OAAO,QAAQ,CAAC,OAAO,OAC5D;AACA,WAAO,OAAO;AAAA,EAChB;AAEA,SAAO,4BAA4B,MAAM;AAC3C;AA+BO,SAAS,0BAA0B;AAAA,EACxC,MAAM;AAAA,EACN;AAAA,EACA;AACF,GAAyE;AApGzE;AAqGE,MAAI,cAA6B;AAE7B,OAAA,yCAAY,WAAS,yCAAY,SAAQ;AAC7B,mBAAA,yCAAY,UAAQ,yCAAY;AAAA,EAChD;AAGI,OAAA,+CAAe,WAAS,+CAAe,SAAQ;AAC1C,WAAA;AAAA,MACL,QACE,oDAAe,UAAf,YACC,eAAe,OAAO,cAAc,WAAW,WAC5C,KAAK,MAAM,cAAc,cAAc,MAAM,IAC7C;AAAA,MACN,SACE,oDAAe,WAAf,YACC,eAAe,OAAO,cAAc,UAAU,WAC3C,KAAK,MAAM,cAAc,cAAc,KAAK,IAC5C;AAAA,IAAA;AAAA,EAEV;AAGI,OAAA,6CAAc,WAAS,6CAAc,SAAQ;AACxC,WAAA;AAAA,MACL,QACE,kDAAc,UAAd,YACC,eAAe,OAAO,aAAa,WAAW,WAC3C,KAAK,MAAM,cAAc,aAAa,MAAM,IAC5C;AAAA,MACN,SACE,kDAAc,WAAd,YACC,eAAe,OAAO,aAAa,UAAU,WAC1C,KAAK,MAAM,cAAc,aAAa,KAAK,IAC3C;AAAA,IAAA;AAAA,EAEV;AAGI,OAAA,yCAAY,WAAS,yCAAY,SAAQ;AACpC,WAAA;AAAA,MAEL,QAAO,8CAAY,UAAZ,YAAqB;AAAA,MAC5B,SAAQ,8CAAY,WAAZ,YAAsB;AAAA,IAAA;AAAA,EAElC;AAEA,SAAO,EAAC,OAAO,MAAM,QAAQ,KAAI;AACnC;"}
1
+ {"version":3,"file":"image-size.mjs","sources":["../../src/image-size.ts"],"sourcesContent":["import type {Image as ImageType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\nimport type {ShopifyLoaderOptions, ShopifyLoaderParams} from './Image.js';\n\n// TODO: Are there other CDNs missing from here?\nconst PRODUCTION_CDN_HOSTNAMES = [\n 'cdn.shopify.com',\n 'cdn.shopifycdn.net',\n 'shopify-assets.shopifycdn.com',\n 'shopify-assets.shopifycdn.net',\n];\nconst LOCAL_CDN_HOSTNAMES = ['spin.dev'];\nconst ALL_CDN_HOSTNAMES = [...PRODUCTION_CDN_HOSTNAMES, ...LOCAL_CDN_HOSTNAMES];\n\n// based on the default width sizes used by the Shopify liquid HTML tag img_tag plus a 2560 width to account for 2k resolutions\n// reference: https://shopify.dev/api/liquid/filters/html-filters#image_tag\nexport const IMG_SRC_SET_SIZES = [352, 832, 1200, 1920, 2560];\n\n/**\n * Adds image size parameters to an image URL hosted by Shopify's CDN\n */\nexport function addImageSizeParametersToUrl({\n src,\n width,\n height,\n crop,\n scale,\n}: ShopifyLoaderParams) {\n const newUrl = new URL(src);\n\n const multipliedScale = scale ?? 1;\n\n if (width) {\n let finalWidth: string;\n\n if (typeof width === 'string') {\n finalWidth = (IMG_SRC_SET_SIZES[0] * multipliedScale).toString();\n } else {\n finalWidth = (Number(width) * multipliedScale).toString();\n }\n\n newUrl.searchParams.append('width', finalWidth);\n }\n\n if (height && typeof height === 'number') {\n newUrl.searchParams.append('height', (height * multipliedScale).toString());\n }\n\n crop && newUrl.searchParams.append('crop', crop);\n\n // for now we intentionally leave off the scale param, and instead multiple width & height by scale instead\n // scale && newUrl.searchParams.append('scale', scale.toString());\n\n return newUrl.toString();\n}\n\nexport function shopifyImageLoader(params: ShopifyLoaderParams) {\n const newSrc = new URL(params.src);\n const isShopifyServedImage = ALL_CDN_HOSTNAMES.some((allowedHostname) =>\n newSrc.hostname.endsWith(allowedHostname)\n );\n\n if (\n !isShopifyServedImage ||\n (!params.width && !params.height && !params.crop && !params.scale)\n ) {\n return params.src;\n }\n\n return addImageSizeParametersToUrl(params);\n}\n\ntype HtmlImageProps = React.ImgHTMLAttributes<HTMLImageElement>;\n\nexport type GetShopifyImageDimensionsProps = {\n data: Pick<\n PartialDeep<ImageType, {recurseIntoArrays: true}>,\n 'altText' | 'url' | 'id' | 'width' | 'height'\n >;\n loaderOptions?: ShopifyLoaderOptions;\n elementProps?: {\n width?: HtmlImageProps['width'];\n height?: HtmlImageProps['height'];\n };\n};\n\ntype GetShopifyImageDimensionsPropsReturn = {\n width: number | string | null;\n height: number | string | null;\n};\n\n/**\n * Width and height are determined using the followiing priority list:\n * 1. `loaderOptions`'s width/height\n * 2. `elementProps`'s width/height\n * 3. `data`'s width/height\n *\n * If only one of `width` or `height` are defined, then the other will attempt to be calculated based on the Image's aspect ratio,\n * provided that both `data.width` and `data.height` are available. If not, then the aspect ratio cannot be determined and the missing\n * value will reamin as `null`\n */\nexport function getShopifyImageDimensions({\n data: sfapiImage,\n loaderOptions,\n elementProps,\n}: GetShopifyImageDimensionsProps): GetShopifyImageDimensionsPropsReturn {\n let aspectRatio: number | null = null;\n\n if (sfapiImage?.width && sfapiImage?.height) {\n aspectRatio = sfapiImage?.width / sfapiImage?.height;\n }\n\n // * 1. `loaderOptions`'s width/height\n if (loaderOptions?.width || loaderOptions?.height) {\n return {\n width:\n loaderOptions?.width ??\n (aspectRatio && typeof loaderOptions.height === 'number'\n ? Math.round(aspectRatio * loaderOptions.height)\n : null),\n height:\n loaderOptions?.height ??\n (aspectRatio && typeof loaderOptions.width === 'number'\n ? Math.round(aspectRatio * loaderOptions.width)\n : null),\n };\n }\n\n // * 2. `elementProps`'s width/height\n if (elementProps?.width || elementProps?.height) {\n return {\n width:\n elementProps?.width ??\n (aspectRatio && typeof elementProps.height === 'number'\n ? Math.round(aspectRatio * elementProps.height)\n : null),\n height:\n elementProps?.height ??\n (aspectRatio && typeof elementProps.width === 'number'\n ? Math.round(aspectRatio * elementProps.width)\n : null),\n };\n }\n\n // * 3. `data`'s width/height\n if (sfapiImage?.width || sfapiImage?.height) {\n return {\n // can't calculate the aspect ratio here\n width: sfapiImage?.width ?? null,\n height: sfapiImage?.height ?? null,\n };\n }\n\n return {width: null, height: null};\n}\n"],"names":[],"mappings":"AAKA,MAAM,2BAA2B;AAAA,EAC/B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AACA,MAAM,sBAAsB,CAAC,UAAU;AACvC,MAAM,oBAAoB,CAAC,GAAG,0BAA0B,GAAG,mBAAmB;AAIvE,MAAM,oBAAoB,CAAC,KAAK,KAAK,MAAM,MAAM,IAAI;AAKrD,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AAChB,QAAA,SAAS,IAAI,IAAI,GAAG;AAE1B,QAAM,kBAAkB,SAAS;AAEjC,MAAI,OAAO;AACL,QAAA;AAEA,QAAA,OAAO,UAAU,UAAU;AAC7B,oBAAc,kBAAkB,CAAC,IAAI,iBAAiB,SAAS;AAAA,IAAA,OAC1D;AACL,oBAAc,OAAO,KAAK,IAAI,iBAAiB,SAAS;AAAA,IAC1D;AAEO,WAAA,aAAa,OAAO,SAAS,UAAU;AAAA,EAChD;AAEI,MAAA,UAAU,OAAO,WAAW,UAAU;AACxC,WAAO,aAAa,OAAO,WAAW,SAAS,iBAAiB,UAAU;AAAA,EAC5E;AAEA,UAAQ,OAAO,aAAa,OAAO,QAAQ,IAAI;AAK/C,SAAO,OAAO;AAChB;AAEO,SAAS,mBAAmB,QAA6B;AAC9D,QAAM,SAAS,IAAI,IAAI,OAAO,GAAG;AACjC,QAAM,uBAAuB,kBAAkB;AAAA,IAAK,CAAC,oBACnD,OAAO,SAAS,SAAS,eAAe;AAAA,EAAA;AAG1C,MACE,CAAC,wBACA,CAAC,OAAO,SAAS,CAAC,OAAO,UAAU,CAAC,OAAO,QAAQ,CAAC,OAAO,OAC5D;AACA,WAAO,OAAO;AAAA,EAChB;AAEA,SAAO,4BAA4B,MAAM;AAC3C;AA+BO,SAAS,0BAA0B;AAAA,EACxC,MAAM;AAAA,EACN;AAAA,EACA;AACF,GAAyE;AACvE,MAAI,cAA6B;AAE7B,OAAA,yCAAY,WAAS,yCAAY,SAAQ;AAC7B,mBAAA,yCAAY,UAAQ,yCAAY;AAAA,EAChD;AAGI,OAAA,+CAAe,WAAS,+CAAe,SAAQ;AAC1C,WAAA;AAAA,MACL,QACE,+CAAe,WACd,eAAe,OAAO,cAAc,WAAW,WAC5C,KAAK,MAAM,cAAc,cAAc,MAAM,IAC7C;AAAA,MACN,SACE,+CAAe,YACd,eAAe,OAAO,cAAc,UAAU,WAC3C,KAAK,MAAM,cAAc,cAAc,KAAK,IAC5C;AAAA,IAAA;AAAA,EAEV;AAGI,OAAA,6CAAc,WAAS,6CAAc,SAAQ;AACxC,WAAA;AAAA,MACL,QACE,6CAAc,WACb,eAAe,OAAO,aAAa,WAAW,WAC3C,KAAK,MAAM,cAAc,aAAa,MAAM,IAC5C;AAAA,MACN,SACE,6CAAc,YACb,eAAe,OAAO,aAAa,UAAU,WAC1C,KAAK,MAAM,cAAc,aAAa,KAAK,IAC3C;AAAA,IAAA;AAAA,EAEV;AAGI,OAAA,yCAAY,WAAS,yCAAY,SAAQ;AACpC,WAAA;AAAA;AAAA,MAEL,QAAO,yCAAY,UAAS;AAAA,MAC5B,SAAQ,yCAAY,WAAU;AAAA,IAAA;AAAA,EAElC;AAEA,SAAO,EAAC,OAAO,MAAM,QAAQ,KAAI;AACnC;"}
@@ -1 +1 @@
1
- {"version":3,"file":"load-script.mjs","sources":["../../src/load-script.tsx"],"sourcesContent":["import {useState, useEffect} from 'react';\n\nconst SCRIPTS_LOADED: Record<string, Promise<boolean>> = {};\n\nexport function loadScript(\n src: string,\n options?: {module?: boolean; in?: 'head' | 'body'}\n): Promise<boolean> {\n const isScriptLoaded: Promise<boolean> = SCRIPTS_LOADED[src];\n\n if (isScriptLoaded) {\n return isScriptLoaded;\n }\n\n const promise = new Promise<boolean>((resolve, reject) => {\n const script = document.createElement('script');\n if (options?.module) {\n script.type = 'module';\n } else {\n script.type = 'text/javascript';\n }\n script.src = src;\n script.onload = () => {\n resolve(true);\n };\n script.onerror = () => {\n reject(false);\n };\n if (options?.in === 'head') {\n document.head.appendChild(script);\n } else {\n document.body.appendChild(script);\n }\n });\n\n SCRIPTS_LOADED[src] = promise;\n\n return promise;\n}\n\ntype LoadScriptParams = Parameters<typeof loadScript>;\n\n/**\n * The `useLoadScript` hook loads an external script tag in the browser. It allows React components to lazy-load large third-party dependencies.\n */\nexport function useLoadScript(\n url: LoadScriptParams[0],\n options?: LoadScriptParams[1]\n): ScriptState {\n const [status, setStatus] = useState<ScriptState>('loading');\n const stringifiedOptions = JSON.stringify(options);\n\n useEffect(() => {\n async function loadScriptWrapper() {\n try {\n setStatus('loading');\n await loadScript(url, options);\n setStatus('done');\n } catch (error) {\n setStatus('error');\n }\n }\n\n loadScriptWrapper();\n }, [url, stringifiedOptions, options]);\n\n return status;\n}\n\ntype ScriptState = 'loading' | 'done' | 'error';\n"],"names":["SCRIPTS_LOADED","loadScript","src","options","isScriptLoaded","promise","Promise","resolve","reject","script","document","createElement","module","type","onload","onerror","in","head","appendChild","body","useLoadScript","url","status","setStatus","useState","stringifiedOptions","JSON","stringify","useEffect","loadScriptWrapper","error"],"mappings":";AAEA,MAAMA,iBAAmD,CAAA;AAEzCC,SAAAA,WACdC,KACAC,SACkB;AAClB,QAAMC,iBAAmCJ,eAAeE;AAExD,MAAIE,gBAAgB;AACXA,WAAAA;AAAAA,EACT;AAEA,QAAMC,UAAU,IAAIC,QAAiB,CAACC,SAASC,WAAW;AAClDC,UAAAA,SAASC,SAASC,cAAc,QAAQ;AAC9C,QAAIR,mCAASS,QAAQ;AACnBH,aAAOI,OAAO;AAAA,IAAA,OACT;AACLJ,aAAOI,OAAO;AAAA,IAChB;AACAJ,WAAOP,MAAMA;AACbO,WAAOK,SAAS,MAAM;AACpBP,cAAQ,IAAI;AAAA,IAAA;AAEdE,WAAOM,UAAU,MAAM;AACrBP,aAAO,KAAK;AAAA,IAAA;AAEVL,SAAAA,mCAASa,QAAO,QAAQ;AACjBC,eAAAA,KAAKC,YAAYT,MAAM;AAAA,IAAA,OAC3B;AACIU,eAAAA,KAAKD,YAAYT,MAAM;AAAA,IAClC;AAAA,EAAA,CACD;AAEDT,iBAAeE,OAAOG;AAEfA,SAAAA;AACT;AAOgBe,SAAAA,cACdC,KACAlB,SACa;AACb,QAAM,CAACmB,QAAQC,SAAS,IAAIC,SAAsB,SAAS;AACrDC,QAAAA,qBAAqBC,KAAKC,UAAUxB,OAAO;AAEjDyB,YAAU,MAAM;AACd,mBAAeC,oBAAoB;AAC7B,UAAA;AACFN,kBAAU,SAAS;AACbtB,cAAAA,WAAWoB,KAAKlB,OAAO;AAC7BoB,kBAAU,MAAM;AAAA,eACTO;AACPP,kBAAU,OAAO;AAAA,MACnB;AAAA,IACF;AAEmB;EAClB,GAAA,CAACF,KAAKI,oBAAoBtB,OAAO,CAAC;AAE9BmB,SAAAA;AACT;"}
1
+ {"version":3,"file":"load-script.mjs","sources":["../../src/load-script.tsx"],"sourcesContent":["import {useState, useEffect} from 'react';\n\nconst SCRIPTS_LOADED: Record<string, Promise<boolean>> = {};\n\nexport function loadScript(\n src: string,\n options?: {module?: boolean; in?: 'head' | 'body'}\n): Promise<boolean> {\n const isScriptLoaded: Promise<boolean> = SCRIPTS_LOADED[src];\n\n if (isScriptLoaded) {\n return isScriptLoaded;\n }\n\n const promise = new Promise<boolean>((resolve, reject) => {\n const script = document.createElement('script');\n if (options?.module) {\n script.type = 'module';\n } else {\n script.type = 'text/javascript';\n }\n script.src = src;\n script.onload = () => {\n resolve(true);\n };\n script.onerror = () => {\n reject(false);\n };\n if (options?.in === 'head') {\n document.head.appendChild(script);\n } else {\n document.body.appendChild(script);\n }\n });\n\n SCRIPTS_LOADED[src] = promise;\n\n return promise;\n}\n\ntype LoadScriptParams = Parameters<typeof loadScript>;\n\n/**\n * The `useLoadScript` hook loads an external script tag in the browser. It allows React components to lazy-load large third-party dependencies.\n */\nexport function useLoadScript(\n url: LoadScriptParams[0],\n options?: LoadScriptParams[1]\n): ScriptState {\n const [status, setStatus] = useState<ScriptState>('loading');\n const stringifiedOptions = JSON.stringify(options);\n\n useEffect(() => {\n async function loadScriptWrapper() {\n try {\n setStatus('loading');\n await loadScript(url, options);\n setStatus('done');\n } catch (error) {\n setStatus('error');\n }\n }\n\n loadScriptWrapper();\n }, [url, stringifiedOptions, options]);\n\n return status;\n}\n\ntype ScriptState = 'loading' | 'done' | 'error';\n"],"names":[],"mappings":";AAEA,MAAM,iBAAmD,CAAA;AAEzC,SAAA,WACd,KACA,SACkB;AACZ,QAAA,iBAAmC,eAAe,GAAG;AAE3D,MAAI,gBAAgB;AACX,WAAA;AAAA,EACT;AAEA,QAAM,UAAU,IAAI,QAAiB,CAAC,SAAS,WAAW;AAClD,UAAA,SAAS,SAAS,cAAc,QAAQ;AAC9C,QAAI,mCAAS,QAAQ;AACnB,aAAO,OAAO;AAAA,IAAA,OACT;AACL,aAAO,OAAO;AAAA,IAChB;AACA,WAAO,MAAM;AACb,WAAO,SAAS,MAAM;AACpB,cAAQ,IAAI;AAAA,IAAA;AAEd,WAAO,UAAU,MAAM;AACrB,aAAO,KAAK;AAAA,IAAA;AAEV,SAAA,mCAAS,QAAO,QAAQ;AACjB,eAAA,KAAK,YAAY,MAAM;AAAA,IAAA,OAC3B;AACI,eAAA,KAAK,YAAY,MAAM;AAAA,IAClC;AAAA,EAAA,CACD;AAED,iBAAe,GAAG,IAAI;AAEf,SAAA;AACT;AAOgB,SAAA,cACd,KACA,SACa;AACb,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAsB,SAAS;AACrD,QAAA,qBAAqB,KAAK,UAAU,OAAO;AAEjD,YAAU,MAAM;AACd,mBAAe,oBAAoB;AAC7B,UAAA;AACF,kBAAU,SAAS;AACb,cAAA,WAAW,KAAK,OAAO;AAC7B,kBAAU,MAAM;AAAA,eACT;AACP,kBAAU,OAAO;AAAA,MACnB;AAAA,IACF;AAEkB;EACjB,GAAA,CAAC,KAAK,oBAAoB,OAAO,CAAC;AAE9B,SAAA;AACT;"}