@shopify/hydrogen-react 0.0.0-next-585a03d → 0.0.0-next-32f1381
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.
- package/dist/{dev/AddToCartButton.mjs → browser-dev/AddToCartButton.js} +4 -4
- package/dist/{dev → browser-dev}/AddToCartButton.js.map +1 -1
- package/dist/{dev/BaseButton.mjs → browser-dev/BaseButton.js} +1 -1
- package/dist/{dev → browser-dev}/BaseButton.js.map +1 -1
- package/dist/{prod/BuyNowButton.mjs → browser-dev/BuyNowButton.js} +3 -3
- package/dist/{dev → browser-dev}/BuyNowButton.js.map +1 -1
- package/dist/{dev/CartCheckoutButton.mjs → browser-dev/CartCheckoutButton.js} +3 -3
- package/dist/{dev → browser-dev}/CartCheckoutButton.js.map +1 -1
- package/dist/{prod/CartProvider.mjs → browser-dev/CartProvider.js} +3 -3
- package/dist/{prod → browser-dev}/CartProvider.js.map +1 -1
- package/dist/{prod/ExternalVideo.mjs → browser-dev/ExternalVideo.js} +1 -1
- package/dist/{dev → browser-dev}/ExternalVideo.js.map +1 -1
- package/dist/{dev/Image.mjs → browser-dev/Image.js} +2 -2
- package/dist/{dev → browser-dev}/Image.js.map +1 -1
- package/dist/{dev/MediaFile.mjs → browser-dev/MediaFile.js} +5 -5
- package/dist/{dev → browser-dev}/MediaFile.js.map +1 -1
- package/dist/{dev/Metafield.mjs → browser-dev/Metafield.js} +5 -5
- package/dist/{dev → browser-dev}/Metafield.js.map +1 -1
- package/dist/{dev/ModelViewer.mjs → browser-dev/ModelViewer.js} +2 -2
- package/dist/{dev → browser-dev}/ModelViewer.js.map +1 -1
- package/dist/{dev/Money.mjs → browser-dev/Money.js} +2 -2
- package/dist/{dev → browser-dev}/Money.js.map +1 -1
- package/dist/{dev/ProductPrice.mjs → browser-dev/ProductPrice.js} +3 -3
- package/dist/{dev → browser-dev}/ProductPrice.js.map +1 -1
- package/dist/{dev/ProductProvider.mjs → browser-dev/ProductProvider.js} +2 -2
- package/dist/{prod → browser-dev}/ProductProvider.js.map +1 -1
- package/dist/{prod/ShopPayButton.mjs → browser-dev/ShopPayButton.js} +3 -3
- package/dist/{prod → browser-dev}/ShopPayButton.js.map +1 -1
- package/dist/{dev/ShopifyProvider.mjs → browser-dev/ShopifyProvider.js} +2 -2
- package/dist/{prod → browser-dev}/ShopifyProvider.js.map +1 -1
- package/dist/{dev/Video.mjs → browser-dev/Video.js} +2 -2
- package/dist/{prod → browser-dev}/Video.js.map +1 -1
- package/dist/{dev/_virtual/index.mjs → browser-dev/_virtual/index.js} +1 -1
- package/dist/{dev → browser-dev}/_virtual/index.js.map +1 -1
- package/dist/{dev/_virtual/use-sync-external-store-shim.development.mjs → browser-dev/_virtual/use-sync-external-store-shim.development.js} +1 -1
- package/dist/{dev → browser-dev}/_virtual/use-sync-external-store-shim.development.js.map +1 -1
- package/dist/{dev/_virtual/use-sync-external-store-shim.production.min.mjs → browser-dev/_virtual/use-sync-external-store-shim.production.min.js} +1 -1
- package/dist/browser-dev/_virtual/use-sync-external-store-shim.production.min.js.map +1 -0
- package/dist/{prod/_virtual/with-selector.development.mjs → browser-dev/_virtual/with-selector.development.js} +1 -1
- package/dist/{dev → browser-dev}/_virtual/with-selector.development.js.map +1 -1
- package/dist/{prod/_virtual/with-selector.mjs → browser-dev/_virtual/with-selector.js} +1 -1
- package/dist/{dev → browser-dev}/_virtual/with-selector.js.map +1 -1
- package/dist/{dev/_virtual/with-selector.production.min.mjs → browser-dev/_virtual/with-selector.production.min.js} +1 -1
- package/dist/{dev → browser-dev}/_virtual/with-selector.production.min.js.map +1 -1
- package/dist/{prod/cart-constants.mjs → browser-dev/cart-constants.js} +1 -1
- package/dist/{dev → browser-dev}/cart-constants.js.map +1 -1
- package/dist/{dev/cart-hooks.mjs → browser-dev/cart-hooks.js} +3 -3
- package/dist/{prod → browser-dev}/cart-hooks.js.map +1 -1
- package/dist/{dev/cart-queries.mjs → browser-dev/cart-queries.js} +1 -1
- package/dist/{dev → browser-dev}/cart-queries.js.map +1 -1
- package/dist/{dev/flatten-connection.mjs → browser-dev/flatten-connection.js} +1 -1
- package/dist/{dev → browser-dev}/flatten-connection.js.map +1 -1
- package/dist/{prod/image-size.mjs → browser-dev/image-size.js} +1 -1
- package/dist/{dev → browser-dev}/image-size.js.map +1 -1
- package/dist/browser-dev/index.js +46 -0
- package/dist/browser-dev/index.js.map +1 -0
- package/dist/{prod/load-script.mjs → browser-dev/load-script.js} +1 -1
- package/dist/{dev → browser-dev}/load-script.js.map +1 -1
- package/dist/{dev/metafield-parser.mjs → browser-dev/metafield-parser.js} +3 -3
- package/dist/{dev → browser-dev}/metafield-parser.js.map +1 -1
- package/dist/{dev/node_modules/@xstate/fsm/es/index.mjs → browser-dev/node_modules/@xstate/fsm/es/index.js} +1 -1
- package/dist/browser-dev/node_modules/@xstate/fsm/es/index.js.map +1 -0
- package/dist/{prod/node_modules/@xstate/react/es/fsm.mjs → browser-dev/node_modules/@xstate/react/es/fsm.js} +6 -6
- package/dist/{prod → browser-dev}/node_modules/@xstate/react/es/fsm.js.map +1 -1
- package/dist/{dev/node_modules/@xstate/react/es/useConstant.mjs → browser-dev/node_modules/@xstate/react/es/useConstant.js} +1 -1
- package/dist/{dev → browser-dev}/node_modules/@xstate/react/es/useConstant.js.map +1 -1
- package/dist/{dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs → browser-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js} +1 -1
- package/dist/{dev → browser-dev}/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +1 -1
- package/dist/{dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs → browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js} +3 -3
- package/dist/{prod → browser-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
- package/dist/{dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs → browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js} +3 -3
- package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -0
- package/dist/{dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs → browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js} +2 -2
- package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
- package/dist/{dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs → browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js} +2 -2
- package/dist/{prod → browser-dev}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
- package/dist/{dev/node_modules/use-sync-external-store/shim/index.mjs → browser-dev/node_modules/use-sync-external-store/shim/index.js} +4 -4
- package/dist/{prod → browser-dev}/node_modules/use-sync-external-store/shim/index.js.map +1 -1
- package/dist/{prod/node_modules/use-sync-external-store/shim/with-selector.mjs → browser-dev/node_modules/use-sync-external-store/shim/with-selector.js} +4 -4
- package/dist/{dev → browser-dev}/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -1
- package/dist/{prod/storefront-api-constants.mjs → browser-dev/storefront-api-constants.js} +1 -1
- package/dist/{dev → browser-dev}/storefront-api-constants.js.map +1 -1
- package/dist/{dev/storefront-client.mjs → browser-dev/storefront-client.js} +2 -2
- package/dist/{dev → browser-dev}/storefront-client.js.map +1 -1
- package/dist/{prod/useCartAPIStateMachine.mjs → browser-dev/useCartAPIStateMachine.js} +5 -5
- package/dist/{dev → browser-dev}/useCartAPIStateMachine.js.map +1 -1
- package/dist/{dev/useCartActions.mjs → browser-dev/useCartActions.js} +3 -3
- package/dist/{prod → browser-dev}/useCartActions.js.map +1 -1
- package/dist/{dev/useMoney.mjs → browser-dev/useMoney.js} +2 -2
- package/dist/{dev → browser-dev}/useMoney.js.map +1 -1
- package/dist/{prod/AddToCartButton.mjs → browser-prod/AddToCartButton.js} +4 -4
- package/dist/{prod → browser-prod}/AddToCartButton.js.map +1 -1
- package/dist/{prod/BaseButton.mjs → browser-prod/BaseButton.js} +1 -1
- package/dist/{prod → browser-prod}/BaseButton.js.map +1 -1
- package/dist/{dev/BuyNowButton.mjs → browser-prod/BuyNowButton.js} +3 -3
- package/dist/{prod → browser-prod}/BuyNowButton.js.map +1 -1
- package/dist/{prod/CartCheckoutButton.mjs → browser-prod/CartCheckoutButton.js} +3 -3
- package/dist/{prod → browser-prod}/CartCheckoutButton.js.map +1 -1
- package/dist/{dev/CartProvider.mjs → browser-prod/CartProvider.js} +3 -3
- package/dist/{dev → browser-prod}/CartProvider.js.map +1 -1
- package/dist/{dev/ExternalVideo.mjs → browser-prod/ExternalVideo.js} +1 -1
- package/dist/{prod → browser-prod}/ExternalVideo.js.map +1 -1
- package/dist/{prod/Image.mjs → browser-prod/Image.js} +2 -2
- package/dist/{prod → browser-prod}/Image.js.map +1 -1
- package/dist/{prod/MediaFile.mjs → browser-prod/MediaFile.js} +5 -5
- package/dist/{prod → browser-prod}/MediaFile.js.map +1 -1
- package/dist/{prod/Metafield.mjs → browser-prod/Metafield.js} +5 -5
- package/dist/{prod → browser-prod}/Metafield.js.map +1 -1
- package/dist/{prod/ModelViewer.mjs → browser-prod/ModelViewer.js} +2 -2
- package/dist/{prod → browser-prod}/ModelViewer.js.map +1 -1
- package/dist/{prod/Money.mjs → browser-prod/Money.js} +2 -2
- package/dist/{prod → browser-prod}/Money.js.map +1 -1
- package/dist/{prod/ProductPrice.mjs → browser-prod/ProductPrice.js} +3 -3
- package/dist/{prod → browser-prod}/ProductPrice.js.map +1 -1
- package/dist/{prod/ProductProvider.mjs → browser-prod/ProductProvider.js} +2 -2
- package/dist/{dev → browser-prod}/ProductProvider.js.map +1 -1
- package/dist/{dev/ShopPayButton.mjs → browser-prod/ShopPayButton.js} +3 -3
- package/dist/{dev → browser-prod}/ShopPayButton.js.map +1 -1
- package/dist/{prod/ShopifyProvider.mjs → browser-prod/ShopifyProvider.js} +2 -2
- package/dist/{dev → browser-prod}/ShopifyProvider.js.map +1 -1
- package/dist/{prod/Video.mjs → browser-prod/Video.js} +2 -2
- package/dist/{dev → browser-prod}/Video.js.map +1 -1
- package/dist/{prod/_virtual/index.mjs → browser-prod/_virtual/index.js} +1 -1
- package/dist/{prod → browser-prod}/_virtual/index.js.map +1 -1
- package/dist/{prod/_virtual/use-sync-external-store-shim.development.mjs → browser-prod/_virtual/use-sync-external-store-shim.development.js} +1 -1
- package/dist/{prod → browser-prod}/_virtual/use-sync-external-store-shim.development.js.map +1 -1
- package/dist/{prod/_virtual/use-sync-external-store-shim.production.min.mjs → browser-prod/_virtual/use-sync-external-store-shim.production.min.js} +1 -1
- package/dist/browser-prod/_virtual/use-sync-external-store-shim.production.min.js.map +1 -0
- package/dist/{dev/_virtual/with-selector.development.mjs → browser-prod/_virtual/with-selector.development.js} +1 -1
- package/dist/{prod → browser-prod}/_virtual/with-selector.development.js.map +1 -1
- package/dist/{dev/_virtual/with-selector.mjs → browser-prod/_virtual/with-selector.js} +1 -1
- package/dist/{prod → browser-prod}/_virtual/with-selector.js.map +1 -1
- package/dist/{prod/_virtual/with-selector.production.min.mjs → browser-prod/_virtual/with-selector.production.min.js} +1 -1
- package/dist/{prod → browser-prod}/_virtual/with-selector.production.min.js.map +1 -1
- package/dist/{dev/cart-constants.mjs → browser-prod/cart-constants.js} +1 -1
- package/dist/{prod → browser-prod}/cart-constants.js.map +1 -1
- package/dist/{prod/cart-hooks.mjs → browser-prod/cart-hooks.js} +3 -3
- package/dist/{dev → browser-prod}/cart-hooks.js.map +1 -1
- package/dist/{prod/cart-queries.mjs → browser-prod/cart-queries.js} +1 -1
- package/dist/{prod → browser-prod}/cart-queries.js.map +1 -1
- package/dist/{prod/flatten-connection.mjs → browser-prod/flatten-connection.js} +1 -1
- package/dist/{prod → browser-prod}/flatten-connection.js.map +1 -1
- package/dist/{dev/image-size.mjs → browser-prod/image-size.js} +1 -1
- package/dist/{prod → browser-prod}/image-size.js.map +1 -1
- package/dist/browser-prod/index.js +46 -0
- package/dist/browser-prod/index.js.map +1 -0
- package/dist/{dev/load-script.mjs → browser-prod/load-script.js} +1 -1
- package/dist/{prod → browser-prod}/load-script.js.map +1 -1
- package/dist/{prod/metafield-parser.mjs → browser-prod/metafield-parser.js} +3 -3
- package/dist/{prod → browser-prod}/metafield-parser.js.map +1 -1
- package/dist/{prod/node_modules/@xstate/fsm/es/index.mjs → browser-prod/node_modules/@xstate/fsm/es/index.js} +1 -1
- package/dist/browser-prod/node_modules/@xstate/fsm/es/index.js.map +1 -0
- package/dist/{dev/node_modules/@xstate/react/es/fsm.mjs → browser-prod/node_modules/@xstate/react/es/fsm.js} +6 -6
- package/dist/{dev → browser-prod}/node_modules/@xstate/react/es/fsm.js.map +1 -1
- package/dist/{prod/node_modules/@xstate/react/es/useConstant.mjs → browser-prod/node_modules/@xstate/react/es/useConstant.js} +1 -1
- package/dist/{prod → browser-prod}/node_modules/@xstate/react/es/useConstant.js.map +1 -1
- package/dist/{prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs → browser-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js} +1 -1
- package/dist/{prod → browser-prod}/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js.map +1 -1
- package/dist/{prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs → browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js} +3 -3
- package/dist/{dev → browser-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
- package/dist/{prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs → browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js} +3 -3
- package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -0
- package/dist/{prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs → browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js} +2 -2
- package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
- package/dist/{prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs → browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js} +2 -2
- package/dist/{dev → browser-prod}/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
- package/dist/{prod/node_modules/use-sync-external-store/shim/index.mjs → browser-prod/node_modules/use-sync-external-store/shim/index.js} +4 -4
- package/dist/{dev → browser-prod}/node_modules/use-sync-external-store/shim/index.js.map +1 -1
- package/dist/{dev/node_modules/use-sync-external-store/shim/with-selector.mjs → browser-prod/node_modules/use-sync-external-store/shim/with-selector.js} +4 -4
- package/dist/{prod → browser-prod}/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -1
- package/dist/{dev/storefront-api-constants.mjs → browser-prod/storefront-api-constants.js} +1 -1
- package/dist/{prod → browser-prod}/storefront-api-constants.js.map +1 -1
- package/dist/{prod/storefront-client.mjs → browser-prod/storefront-client.js} +2 -2
- package/dist/{prod → browser-prod}/storefront-client.js.map +1 -1
- package/dist/{dev/useCartAPIStateMachine.mjs → browser-prod/useCartAPIStateMachine.js} +5 -5
- package/dist/{prod → browser-prod}/useCartAPIStateMachine.js.map +1 -1
- package/dist/{prod/useCartActions.mjs → browser-prod/useCartActions.js} +3 -3
- package/dist/{dev → browser-prod}/useCartActions.js.map +1 -1
- package/dist/{prod/useMoney.mjs → browser-prod/useMoney.js} +2 -2
- package/dist/{prod → browser-prod}/useMoney.js.map +1 -1
- package/dist/{dev/AddToCartButton.js → node-dev/AddToCartButton.cjs} +8 -8
- package/dist/{prod/AddToCartButton.mjs.map → node-dev/AddToCartButton.cjs.map} +1 -1
- package/dist/node-dev/AddToCartButton.js +70 -0
- package/dist/node-dev/AddToCartButton.js.map +1 -0
- package/dist/{dev/BaseButton.js → node-dev/BaseButton.cjs} +3 -3
- package/dist/{dev/BaseButton.mjs.map → node-dev/BaseButton.cjs.map} +1 -1
- package/dist/node-dev/BaseButton.js +31 -0
- package/dist/node-dev/BaseButton.js.map +1 -0
- package/dist/{prod/BuyNowButton.js → node-dev/BuyNowButton.cjs} +7 -7
- package/dist/{dev/BuyNowButton.mjs.map → node-dev/BuyNowButton.cjs.map} +1 -1
- package/dist/node-dev/BuyNowButton.js +45 -0
- package/dist/node-dev/BuyNowButton.js.map +1 -0
- package/dist/{prod/CartCheckoutButton.js → node-dev/CartCheckoutButton.cjs} +6 -6
- package/dist/{dev/CartCheckoutButton.mjs.map → node-dev/CartCheckoutButton.cjs.map} +1 -1
- package/dist/node-dev/CartCheckoutButton.js +30 -0
- package/dist/node-dev/CartCheckoutButton.js.map +1 -0
- package/dist/{dev/CartProvider.js → node-dev/CartProvider.cjs} +23 -23
- package/dist/{prod/CartProvider.mjs.map → node-dev/CartProvider.cjs.map} +1 -1
- package/dist/node-dev/CartProvider.js +485 -0
- package/dist/node-dev/CartProvider.js.map +1 -0
- package/dist/{dev/ExternalVideo.js → node-dev/ExternalVideo.cjs} +1 -1
- package/dist/{prod/ExternalVideo.mjs.map → node-dev/ExternalVideo.cjs.map} +1 -1
- package/dist/node-dev/ExternalVideo.js +39 -0
- package/dist/node-dev/ExternalVideo.js.map +1 -0
- package/dist/{dev/Image.js → node-dev/Image.cjs} +2 -2
- package/dist/{dev/Image.mjs.map → node-dev/Image.cjs.map} +1 -1
- package/dist/node-dev/Image.js +104 -0
- package/dist/node-dev/Image.js.map +1 -0
- package/dist/{dev/MediaFile.js → node-dev/MediaFile.cjs} +5 -5
- package/dist/{dev/MediaFile.mjs.map → node-dev/MediaFile.cjs.map} +1 -1
- package/dist/node-dev/MediaFile.js +57 -0
- package/dist/node-dev/MediaFile.js.map +1 -0
- package/dist/{dev/Metafield.js → node-dev/Metafield.cjs} +7 -7
- package/dist/{dev/Metafield.mjs.map → node-dev/Metafield.cjs.map} +1 -1
- package/dist/node-dev/Metafield.js +301 -0
- package/dist/node-dev/Metafield.js.map +1 -0
- package/dist/{dev/ModelViewer.js → node-dev/ModelViewer.cjs} +6 -6
- package/dist/{dev/ModelViewer.mjs.map → node-dev/ModelViewer.cjs.map} +1 -1
- package/dist/node-dev/ModelViewer.js +145 -0
- package/dist/node-dev/ModelViewer.js.map +1 -0
- package/dist/{prod/Money.js → node-dev/Money.cjs} +2 -2
- package/dist/{dev/Money.mjs.map → node-dev/Money.cjs.map} +1 -1
- package/dist/node-dev/Money.js +40 -0
- package/dist/node-dev/Money.js.map +1 -0
- package/dist/{prod/ProductPrice.js → node-dev/ProductPrice.cjs} +3 -3
- package/dist/{dev/ProductPrice.mjs.map → node-dev/ProductPrice.cjs.map} +1 -1
- package/dist/node-dev/ProductPrice.js +61 -0
- package/dist/node-dev/ProductPrice.js.map +1 -0
- package/dist/{prod/ProductProvider.js → node-dev/ProductProvider.cjs} +16 -16
- package/dist/{dev/ProductProvider.mjs.map → node-dev/ProductProvider.cjs.map} +1 -1
- package/dist/node-dev/ProductProvider.js +161 -0
- package/dist/node-dev/ProductProvider.js.map +1 -0
- package/dist/{dev/ShopPayButton.js → node-dev/ShopPayButton.cjs} +3 -3
- package/dist/{prod/ShopPayButton.mjs.map → node-dev/ShopPayButton.cjs.map} +1 -1
- package/dist/node-dev/ShopPayButton.js +64 -0
- package/dist/node-dev/ShopPayButton.js.map +1 -0
- package/dist/{prod/ShopifyProvider.js → node-dev/ShopifyProvider.cjs} +6 -6
- package/dist/{dev/ShopifyProvider.mjs.map → node-dev/ShopifyProvider.cjs.map} +1 -1
- package/dist/node-dev/ShopifyProvider.js +46 -0
- package/dist/node-dev/ShopifyProvider.js.map +1 -0
- package/dist/{prod/Video.js → node-dev/Video.cjs} +4 -4
- package/dist/{dev/Video.mjs.map → node-dev/Video.cjs.map} +1 -1
- package/dist/node-dev/Video.js +44 -0
- package/dist/node-dev/Video.js.map +1 -0
- package/dist/{prod/cart-constants.js → node-dev/cart-constants.cjs} +1 -1
- package/dist/{dev/cart-constants.mjs.map → node-dev/cart-constants.cjs.map} +1 -1
- package/dist/node-dev/cart-constants.js +17 -0
- package/dist/node-dev/cart-constants.js.map +1 -0
- package/dist/{dev/cart-hooks.js → node-dev/cart-hooks.cjs} +5 -5
- package/dist/{prod/cart-hooks.mjs.map → node-dev/cart-hooks.cjs.map} +1 -1
- package/dist/node-dev/cart-hooks.js +48 -0
- package/dist/node-dev/cart-hooks.js.map +1 -0
- package/dist/{dev/cart-queries.js → node-dev/cart-queries.cjs} +1 -1
- package/dist/{dev/cart-queries.mjs.map → node-dev/cart-queries.cjs.map} +1 -1
- package/dist/node-dev/cart-queries.js +114 -0
- package/dist/node-dev/cart-queries.js.map +1 -0
- package/dist/{dev/flatten-connection.js → node-dev/flatten-connection.cjs} +1 -1
- package/dist/{dev/flatten-connection.mjs.map → node-dev/flatten-connection.cjs.map} +1 -1
- package/dist/node-dev/flatten-connection.js +29 -0
- package/dist/node-dev/flatten-connection.js.map +1 -0
- package/dist/{dev/image-size.js → node-dev/image-size.cjs} +1 -1
- package/dist/{prod/image-size.mjs.map → node-dev/image-size.cjs.map} +1 -1
- package/dist/node-dev/image-size.js +80 -0
- package/dist/node-dev/image-size.js.map +1 -0
- package/dist/{prod/index.js → node-dev/index.cjs} +20 -20
- package/dist/node-dev/index.cjs.map +1 -0
- package/dist/node-dev/index.js +46 -0
- package/dist/node-dev/index.js.map +1 -0
- package/dist/{prod/load-script.js → node-dev/load-script.cjs} +4 -4
- package/dist/{dev/load-script.mjs.map → node-dev/load-script.cjs.map} +1 -1
- package/dist/node-dev/load-script.js +52 -0
- package/dist/node-dev/load-script.js.map +1 -0
- package/dist/{dev/metafield-parser.js → node-dev/metafield-parser.cjs} +3 -3
- package/dist/{dev/metafield-parser.mjs.map → node-dev/metafield-parser.cjs.map} +1 -1
- package/dist/node-dev/metafield-parser.js +103 -0
- package/dist/node-dev/metafield-parser.js.map +1 -0
- package/dist/{prod/storefront-api-constants.js → node-dev/storefront-api-constants.cjs} +1 -1
- package/dist/node-dev/storefront-api-constants.cjs.map +1 -0
- package/dist/node-dev/storefront-api-constants.js +5 -0
- package/dist/node-dev/storefront-api-constants.js.map +1 -0
- package/dist/{dev/storefront-client.js → node-dev/storefront-client.cjs} +2 -2
- package/dist/{dev/storefront-client.mjs.map → node-dev/storefront-client.cjs.map} +1 -1
- package/dist/node-dev/storefront-client.js +72 -0
- package/dist/node-dev/storefront-client.js.map +1 -0
- package/dist/{prod/useCartAPIStateMachine.js → node-dev/useCartAPIStateMachine.cjs} +15 -15
- package/dist/{prod/useCartAPIStateMachine.mjs.map → node-dev/useCartAPIStateMachine.cjs.map} +1 -1
- package/dist/node-dev/useCartAPIStateMachine.js +326 -0
- package/dist/node-dev/useCartAPIStateMachine.js.map +1 -0
- package/dist/{dev/useCartActions.js → node-dev/useCartActions.cjs} +14 -14
- package/dist/{dev/useCartActions.mjs.map → node-dev/useCartActions.cjs.map} +1 -1
- package/dist/node-dev/useCartActions.js +123 -0
- package/dist/node-dev/useCartActions.js.map +1 -0
- package/dist/{prod/useMoney.js → node-dev/useMoney.cjs} +7 -7
- package/dist/{dev/useMoney.mjs.map → node-dev/useMoney.cjs.map} +1 -1
- package/dist/node-dev/useMoney.js +72 -0
- package/dist/node-dev/useMoney.js.map +1 -0
- package/dist/{prod/AddToCartButton.js → node-prod/AddToCartButton.cjs} +8 -8
- package/dist/{dev/AddToCartButton.mjs.map → node-prod/AddToCartButton.cjs.map} +1 -1
- package/dist/node-prod/AddToCartButton.js +70 -0
- package/dist/node-prod/AddToCartButton.js.map +1 -0
- package/dist/{prod/BaseButton.js → node-prod/BaseButton.cjs} +3 -3
- package/dist/{prod/BaseButton.mjs.map → node-prod/BaseButton.cjs.map} +1 -1
- package/dist/node-prod/BaseButton.js +31 -0
- package/dist/node-prod/BaseButton.js.map +1 -0
- package/dist/{dev/BuyNowButton.js → node-prod/BuyNowButton.cjs} +7 -7
- package/dist/{prod/BuyNowButton.mjs.map → node-prod/BuyNowButton.cjs.map} +1 -1
- package/dist/node-prod/BuyNowButton.js +45 -0
- package/dist/node-prod/BuyNowButton.js.map +1 -0
- package/dist/{dev/CartCheckoutButton.js → node-prod/CartCheckoutButton.cjs} +6 -6
- package/dist/{prod/CartCheckoutButton.mjs.map → node-prod/CartCheckoutButton.cjs.map} +1 -1
- package/dist/node-prod/CartCheckoutButton.js +30 -0
- package/dist/node-prod/CartCheckoutButton.js.map +1 -0
- package/dist/{prod/CartProvider.js → node-prod/CartProvider.cjs} +23 -23
- package/dist/{dev/CartProvider.mjs.map → node-prod/CartProvider.cjs.map} +1 -1
- package/dist/node-prod/CartProvider.js +485 -0
- package/dist/node-prod/CartProvider.js.map +1 -0
- package/dist/{prod/ExternalVideo.js → node-prod/ExternalVideo.cjs} +1 -1
- package/dist/{dev/ExternalVideo.mjs.map → node-prod/ExternalVideo.cjs.map} +1 -1
- package/dist/node-prod/ExternalVideo.js +39 -0
- package/dist/node-prod/ExternalVideo.js.map +1 -0
- package/dist/{prod/Image.js → node-prod/Image.cjs} +2 -2
- package/dist/{prod/Image.mjs.map → node-prod/Image.cjs.map} +1 -1
- package/dist/node-prod/Image.js +99 -0
- package/dist/node-prod/Image.js.map +1 -0
- package/dist/{prod/MediaFile.js → node-prod/MediaFile.cjs} +5 -5
- package/dist/{prod/MediaFile.mjs.map → node-prod/MediaFile.cjs.map} +1 -1
- package/dist/node-prod/MediaFile.js +59 -0
- package/dist/node-prod/MediaFile.js.map +1 -0
- package/dist/{prod/Metafield.js → node-prod/Metafield.cjs} +7 -7
- package/dist/{prod/Metafield.mjs.map → node-prod/Metafield.cjs.map} +1 -1
- package/dist/node-prod/Metafield.js +288 -0
- package/dist/node-prod/Metafield.js.map +1 -0
- package/dist/{prod/ModelViewer.js → node-prod/ModelViewer.cjs} +6 -6
- package/dist/{prod/ModelViewer.mjs.map → node-prod/ModelViewer.cjs.map} +1 -1
- package/dist/node-prod/ModelViewer.js +143 -0
- package/dist/node-prod/ModelViewer.js.map +1 -0
- package/dist/{dev/Money.js → node-prod/Money.cjs} +2 -2
- package/dist/{prod/Money.mjs.map → node-prod/Money.cjs.map} +1 -1
- package/dist/node-prod/Money.js +40 -0
- package/dist/node-prod/Money.js.map +1 -0
- package/dist/{dev/ProductPrice.js → node-prod/ProductPrice.cjs} +3 -3
- package/dist/{prod/ProductPrice.mjs.map → node-prod/ProductPrice.cjs.map} +1 -1
- package/dist/node-prod/ProductPrice.js +61 -0
- package/dist/node-prod/ProductPrice.js.map +1 -0
- package/dist/{dev/ProductProvider.js → node-prod/ProductProvider.cjs} +16 -16
- package/dist/{prod/ProductProvider.mjs.map → node-prod/ProductProvider.cjs.map} +1 -1
- package/dist/node-prod/ProductProvider.js +161 -0
- package/dist/node-prod/ProductProvider.js.map +1 -0
- package/dist/{prod/ShopPayButton.js → node-prod/ShopPayButton.cjs} +3 -3
- package/dist/{dev/ShopPayButton.mjs.map → node-prod/ShopPayButton.cjs.map} +1 -1
- package/dist/node-prod/ShopPayButton.js +64 -0
- package/dist/node-prod/ShopPayButton.js.map +1 -0
- package/dist/{dev/ShopifyProvider.js → node-prod/ShopifyProvider.cjs} +6 -6
- package/dist/{prod/ShopifyProvider.mjs.map → node-prod/ShopifyProvider.cjs.map} +1 -1
- package/dist/node-prod/ShopifyProvider.js +46 -0
- package/dist/node-prod/ShopifyProvider.js.map +1 -0
- package/dist/{dev/Video.js → node-prod/Video.cjs} +4 -4
- package/dist/{prod/Video.mjs.map → node-prod/Video.cjs.map} +1 -1
- package/dist/node-prod/Video.js +44 -0
- package/dist/node-prod/Video.js.map +1 -0
- package/dist/{dev/cart-constants.js → node-prod/cart-constants.cjs} +1 -1
- package/dist/{prod/cart-constants.mjs.map → node-prod/cart-constants.cjs.map} +1 -1
- package/dist/node-prod/cart-constants.js +17 -0
- package/dist/node-prod/cart-constants.js.map +1 -0
- package/dist/{prod/cart-hooks.js → node-prod/cart-hooks.cjs} +5 -5
- package/dist/{dev/cart-hooks.mjs.map → node-prod/cart-hooks.cjs.map} +1 -1
- package/dist/node-prod/cart-hooks.js +48 -0
- package/dist/node-prod/cart-hooks.js.map +1 -0
- package/dist/{prod/cart-queries.js → node-prod/cart-queries.cjs} +1 -1
- package/dist/{prod/cart-queries.mjs.map → node-prod/cart-queries.cjs.map} +1 -1
- package/dist/node-prod/cart-queries.js +114 -0
- package/dist/node-prod/cart-queries.js.map +1 -0
- package/dist/{prod/flatten-connection.js → node-prod/flatten-connection.cjs} +1 -1
- package/dist/{prod/flatten-connection.mjs.map → node-prod/flatten-connection.cjs.map} +1 -1
- package/dist/node-prod/flatten-connection.js +25 -0
- package/dist/node-prod/flatten-connection.js.map +1 -0
- package/dist/{prod/image-size.js → node-prod/image-size.cjs} +1 -1
- package/dist/{dev/image-size.mjs.map → node-prod/image-size.cjs.map} +1 -1
- package/dist/node-prod/image-size.js +80 -0
- package/dist/node-prod/image-size.js.map +1 -0
- package/dist/{dev/index.js → node-prod/index.cjs} +20 -20
- package/dist/node-prod/index.cjs.map +1 -0
- package/dist/node-prod/index.js +46 -0
- package/dist/node-prod/index.js.map +1 -0
- package/dist/{dev/load-script.js → node-prod/load-script.cjs} +4 -4
- package/dist/{prod/load-script.mjs.map → node-prod/load-script.cjs.map} +1 -1
- package/dist/node-prod/load-script.js +52 -0
- package/dist/node-prod/load-script.js.map +1 -0
- package/dist/{prod/metafield-parser.js → node-prod/metafield-parser.cjs} +3 -3
- package/dist/{prod/metafield-parser.mjs.map → node-prod/metafield-parser.cjs.map} +1 -1
- package/dist/node-prod/metafield-parser.js +114 -0
- package/dist/node-prod/metafield-parser.js.map +1 -0
- package/dist/{dev/storefront-api-constants.js → node-prod/storefront-api-constants.cjs} +1 -1
- package/dist/node-prod/storefront-api-constants.cjs.map +1 -0
- package/dist/node-prod/storefront-api-constants.js +5 -0
- package/dist/node-prod/storefront-api-constants.js.map +1 -0
- package/dist/{prod/storefront-client.js → node-prod/storefront-client.cjs} +2 -2
- package/dist/{prod/storefront-client.mjs.map → node-prod/storefront-client.cjs.map} +1 -1
- package/dist/node-prod/storefront-client.js +57 -0
- package/dist/node-prod/storefront-client.js.map +1 -0
- package/dist/{dev/useCartAPIStateMachine.js → node-prod/useCartAPIStateMachine.cjs} +15 -15
- package/dist/{dev/useCartAPIStateMachine.mjs.map → node-prod/useCartAPIStateMachine.cjs.map} +1 -1
- package/dist/node-prod/useCartAPIStateMachine.js +326 -0
- package/dist/node-prod/useCartAPIStateMachine.js.map +1 -0
- package/dist/{prod/useCartActions.js → node-prod/useCartActions.cjs} +14 -14
- package/dist/{prod/useCartActions.mjs.map → node-prod/useCartActions.cjs.map} +1 -1
- package/dist/node-prod/useCartActions.js +123 -0
- package/dist/node-prod/useCartActions.js.map +1 -0
- package/dist/{dev/useMoney.js → node-prod/useMoney.cjs} +7 -7
- package/dist/{prod/useMoney.mjs.map → node-prod/useMoney.cjs.map} +1 -1
- package/dist/node-prod/useMoney.js +72 -0
- package/dist/node-prod/useMoney.js.map +1 -0
- package/package.json +35 -20
- package/dist/dev/_virtual/index.js +0 -5
- package/dist/dev/_virtual/index.mjs.map +0 -1
- package/dist/dev/_virtual/use-sync-external-store-shim.development.js +0 -5
- package/dist/dev/_virtual/use-sync-external-store-shim.development.mjs.map +0 -1
- package/dist/dev/_virtual/use-sync-external-store-shim.production.min.js +0 -5
- package/dist/dev/_virtual/use-sync-external-store-shim.production.min.js.map +0 -1
- package/dist/dev/_virtual/use-sync-external-store-shim.production.min.mjs.map +0 -1
- package/dist/dev/_virtual/with-selector.development.js +0 -5
- package/dist/dev/_virtual/with-selector.development.mjs.map +0 -1
- package/dist/dev/_virtual/with-selector.js +0 -5
- package/dist/dev/_virtual/with-selector.mjs.map +0 -1
- package/dist/dev/_virtual/with-selector.production.min.js +0 -5
- package/dist/dev/_virtual/with-selector.production.min.mjs.map +0 -1
- package/dist/dev/index.js.map +0 -1
- package/dist/dev/index.mjs +0 -46
- package/dist/dev/index.mjs.map +0 -1
- package/dist/dev/node_modules/@xstate/fsm/es/index.js +0 -158
- package/dist/dev/node_modules/@xstate/fsm/es/index.js.map +0 -1
- package/dist/dev/node_modules/@xstate/fsm/es/index.mjs.map +0 -1
- package/dist/dev/node_modules/@xstate/react/es/fsm.js +0 -94
- package/dist/dev/node_modules/@xstate/react/es/fsm.mjs.map +0 -1
- package/dist/dev/node_modules/@xstate/react/es/useConstant.js +0 -30
- package/dist/dev/node_modules/@xstate/react/es/useConstant.mjs.map +0 -1
- package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js +0 -5
- package/dist/dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +0 -107
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +0 -74
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +0 -138
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +0 -60
- package/dist/dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/shim/index.js +0 -21
- package/dist/dev/node_modules/use-sync-external-store/shim/index.mjs.map +0 -1
- package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.js +0 -12
- package/dist/dev/node_modules/use-sync-external-store/shim/with-selector.mjs.map +0 -1
- package/dist/dev/storefront-api-constants.mjs.map +0 -1
- package/dist/prod/_virtual/index.js +0 -5
- package/dist/prod/_virtual/index.mjs.map +0 -1
- package/dist/prod/_virtual/use-sync-external-store-shim.development.js +0 -5
- package/dist/prod/_virtual/use-sync-external-store-shim.development.mjs.map +0 -1
- package/dist/prod/_virtual/use-sync-external-store-shim.production.min.js +0 -5
- package/dist/prod/_virtual/use-sync-external-store-shim.production.min.js.map +0 -1
- package/dist/prod/_virtual/use-sync-external-store-shim.production.min.mjs.map +0 -1
- package/dist/prod/_virtual/with-selector.development.js +0 -5
- package/dist/prod/_virtual/with-selector.development.mjs.map +0 -1
- package/dist/prod/_virtual/with-selector.js +0 -5
- package/dist/prod/_virtual/with-selector.mjs.map +0 -1
- package/dist/prod/_virtual/with-selector.production.min.js +0 -5
- package/dist/prod/_virtual/with-selector.production.min.mjs.map +0 -1
- package/dist/prod/index.js.map +0 -1
- package/dist/prod/index.mjs +0 -46
- package/dist/prod/index.mjs.map +0 -1
- package/dist/prod/node_modules/@xstate/fsm/es/index.js +0 -158
- package/dist/prod/node_modules/@xstate/fsm/es/index.js.map +0 -1
- package/dist/prod/node_modules/@xstate/fsm/es/index.mjs.map +0 -1
- package/dist/prod/node_modules/@xstate/react/es/fsm.js +0 -94
- package/dist/prod/node_modules/@xstate/react/es/fsm.mjs.map +0 -1
- package/dist/prod/node_modules/@xstate/react/es/useConstant.js +0 -30
- package/dist/prod/node_modules/@xstate/react/es/useConstant.mjs.map +0 -1
- package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js +0 -5
- package/dist/prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js +0 -107
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js +0 -74
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js +0 -138
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js +0 -60
- package/dist/prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/shim/index.js +0 -21
- package/dist/prod/node_modules/use-sync-external-store/shim/index.mjs.map +0 -1
- package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.js +0 -12
- package/dist/prod/node_modules/use-sync-external-store/shim/with-selector.mjs.map +0 -1
- package/dist/prod/storefront-api-constants.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShopPayButton.
|
|
1
|
+
{"version":3,"file":"ShopPayButton.cjs","sources":["../../src/ShopPayButton.tsx"],"sourcesContent":["import {useShop} from './ShopifyProvider.js';\nimport {useLoadScript} from './load-script.js';\n\n// By using 'never' in the \"or\" cases below, it makes these props \"exclusive\" and means that you cannot pass both of them; you must pass either one OR the other.\ntype ShopPayButtonProps = {\n /** A string of classes to apply to the `div` that wraps the Shop Pay button. */\n className?: string;\n /** A string that's applied to the [CSS custom property (variable)](https://developer.mozilla.org/en-US/docs/Web/CSS/--*) `--shop-pay-button-width` for the [Buy with Shop Pay component](https://shopify.dev/custom-storefronts/tools/web-components#buy-with-shop-pay-component). */\n width?: string;\n} & (\n | {\n /** An array of IDs of the variants to purchase with Shop Pay. This will only ever have a quantity of 1 for each variant. If you want to use other quantities, then use 'variantIdsAndQuantities'. */\n variantIds: string[];\n /** An array of variant IDs and quantities to purchase with Shop Pay. */\n variantIdsAndQuantities?: never;\n }\n | {\n /** An array of IDs of the variants to purchase with Shop Pay. This will only ever have a quantity of 1 for each variant. If you want to use other quantities, then use 'variantIdsAndQuantities'. */\n variantIds?: never;\n /** An array of variant IDs and quantities to purchase with Shop Pay. */\n variantIdsAndQuantities: Array<{\n id: string;\n quantity: number;\n }>;\n }\n);\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n 'shop-pay-button': {\n variants: string;\n 'store-url': string;\n };\n }\n }\n}\n\nconst SHOPJS_URL =\n 'https://cdn.shopify.com/shopifycloud/shop-js/v1.0/client.js';\n\n/**\n * The `ShopPayButton` component renders a button that redirects to the Shop Pay checkout.\n * It renders a [`<shop-pay-button>`](https://shopify.dev/custom-storefronts/tools/web-components) custom element, for which it will lazy-load the source code automatically.\n * It relies on the `<ShopProvider>` context provider.\n */\nexport function ShopPayButton({\n variantIds,\n className,\n variantIdsAndQuantities,\n width,\n}: ShopPayButtonProps) {\n const {storeDomain} = useShop();\n const shopPayLoadedStatus = useLoadScript(SHOPJS_URL);\n\n let ids: string[];\n\n if (variantIds && variantIdsAndQuantities) {\n throw new Error(DoublePropsErrorMessage);\n }\n\n if (variantIds) {\n ids = variantIds.reduce<string[]>((prev, curr) => {\n const bareId = getIdFromGid(curr);\n if (bareId) {\n prev.push(bareId);\n }\n return prev;\n }, []);\n } else if (variantIdsAndQuantities) {\n ids = variantIdsAndQuantities.reduce<string[]>((prev, curr) => {\n const bareId = getIdFromGid(curr?.id);\n if (bareId) {\n prev.push(`${bareId}:${curr?.quantity ?? 1}`);\n }\n return prev;\n }, []);\n } else {\n throw new Error(MissingPropsErrorMessage);\n }\n\n const style = width\n ? ({\n '--shop-pay-button-width': width,\n } as React.CSSProperties)\n : undefined;\n\n return (\n <div className={className} style={style}>\n {shopPayLoadedStatus === 'done' && (\n <shop-pay-button\n store-url={`https://${storeDomain}`}\n variants={ids.join(',')}\n />\n )}\n </div>\n );\n}\n\n/**\n * Takes a string in the format of \"gid://shopify/ProductVariant/41007289630776\" and returns a string of the ID part at the end: \"41007289630776\"\n */\nexport function getIdFromGid(id?: string) {\n if (!id) return;\n return id.split('/').pop();\n}\n\nexport const MissingPropsErrorMessage = `You must pass in either \"variantIds\" or \"variantIdsAndQuantities\" to ShopPayButton`;\nexport const DoublePropsErrorMessage = `You must provide either a variantIds or variantIdsAndQuantities prop, but not both in the ShopPayButton component`;\n"],"names":["SHOPJS_URL","ShopPayButton","variantIds","className","variantIdsAndQuantities","width","storeDomain","useShop","shopPayLoadedStatus","useLoadScript","ids","Error","DoublePropsErrorMessage","reduce","prev","curr","bareId","getIdFromGid","push","id","quantity","MissingPropsErrorMessage","style","undefined","_jsx","join","split","pop"],"mappings":";;;;;AAuCA,MAAMA,aACJ;AAOK,SAASC,cAAc;AAAA,EAC5BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAJ4B,GAKP;AACf,QAAA;AAAA,IAACC;AAAAA,MAAeC,gBAAtB,QAAA;AACMC,QAAAA,sBAAsBC,yBAAcT,UAAD;AAErCU,MAAAA;AAEJ,MAAIR,cAAcE,yBAAyB;AACnC,UAAA,IAAIO,MAAMC,uBAAV;AAAA,EACP;AAED,MAAIV,YAAY;AACdQ,UAAMR,WAAWW,OAAiB,CAACC,MAAMC,SAAS;AAC1CC,YAAAA,SAASC,aAAaF,IAAD;AAC3B,UAAIC,QAAQ;AACVF,aAAKI,KAAKF,MAAV;AAAA,MACD;AACMF,aAAAA;AAAAA,IACR,GAAE,CANG,CAAA;AAAA,aAOGV,yBAAyB;AAClCM,UAAMN,wBAAwBS,OAAiB,CAACC,MAAMC,SAAS;;AACvDC,YAAAA,SAASC,aAAaF,6BAAMI,EAAP;AAC3B,UAAIH,QAAQ;AACVF,aAAKI,KAAM,GAAEF,WAAUD,kCAAMK,aAANL,YAAkB,GAAzC;AAAA,MACD;AACMD,aAAAA;AAAAA,IACR,GAAE,CANG,CAAA;AAAA,EAAA,OAOD;AACC,UAAA,IAAIH,MAAMU,wBAAV;AAAA,EACP;AAED,QAAMC,QAAQjB,QACT;AAAA,IACC,2BAA2BA;AAAAA,EAE7BkB,IAAAA;AAEJ,wCACE,OAAA;AAAA,IAAK;AAAA,IAAsB;AAAA,IAA3B,UACGf,wBAAwB,UACvBgB,2BAAAA,IAAA,mBAAA;AAAA,MACE,aAAY,WAAUlB;AAAAA,MACtB,UAAUI,IAAIe,KAAK,GAAT;AAAA,IAAA,CAFZ;AAAA,EAAA,CAHN;AAUD;AAKM,SAASR,aAAaE,IAAa;AACxC,MAAI,CAACA;AAAI;AACT,SAAOA,GAAGO,MAAM,GAAT,EAAcC,IAArB;AACD;AAEM,MAAMN,2BAA4B;AAClC,MAAMT,0BAA2B;;;;;"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { useShop } from "./ShopifyProvider.js";
|
|
2
|
+
import { useLoadScript } from "./load-script.js";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
const SHOPJS_URL = "https://cdn.shopify.com/shopifycloud/shop-js/v1.0/client.js";
|
|
5
|
+
function ShopPayButton({
|
|
6
|
+
variantIds,
|
|
7
|
+
className,
|
|
8
|
+
variantIdsAndQuantities,
|
|
9
|
+
width
|
|
10
|
+
}) {
|
|
11
|
+
const {
|
|
12
|
+
storeDomain
|
|
13
|
+
} = useShop();
|
|
14
|
+
const shopPayLoadedStatus = useLoadScript(SHOPJS_URL);
|
|
15
|
+
let ids;
|
|
16
|
+
if (variantIds && variantIdsAndQuantities) {
|
|
17
|
+
throw new Error(DoublePropsErrorMessage);
|
|
18
|
+
}
|
|
19
|
+
if (variantIds) {
|
|
20
|
+
ids = variantIds.reduce((prev, curr) => {
|
|
21
|
+
const bareId = getIdFromGid(curr);
|
|
22
|
+
if (bareId) {
|
|
23
|
+
prev.push(bareId);
|
|
24
|
+
}
|
|
25
|
+
return prev;
|
|
26
|
+
}, []);
|
|
27
|
+
} else if (variantIdsAndQuantities) {
|
|
28
|
+
ids = variantIdsAndQuantities.reduce((prev, curr) => {
|
|
29
|
+
var _a;
|
|
30
|
+
const bareId = getIdFromGid(curr == null ? void 0 : curr.id);
|
|
31
|
+
if (bareId) {
|
|
32
|
+
prev.push(`${bareId}:${(_a = curr == null ? void 0 : curr.quantity) != null ? _a : 1}`);
|
|
33
|
+
}
|
|
34
|
+
return prev;
|
|
35
|
+
}, []);
|
|
36
|
+
} else {
|
|
37
|
+
throw new Error(MissingPropsErrorMessage);
|
|
38
|
+
}
|
|
39
|
+
const style = width ? {
|
|
40
|
+
"--shop-pay-button-width": width
|
|
41
|
+
} : void 0;
|
|
42
|
+
return /* @__PURE__ */ jsx("div", {
|
|
43
|
+
className,
|
|
44
|
+
style,
|
|
45
|
+
children: shopPayLoadedStatus === "done" && /* @__PURE__ */ jsx("shop-pay-button", {
|
|
46
|
+
"store-url": `https://${storeDomain}`,
|
|
47
|
+
variants: ids.join(",")
|
|
48
|
+
})
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
function getIdFromGid(id) {
|
|
52
|
+
if (!id)
|
|
53
|
+
return;
|
|
54
|
+
return id.split("/").pop();
|
|
55
|
+
}
|
|
56
|
+
const MissingPropsErrorMessage = `You must pass in either "variantIds" or "variantIdsAndQuantities" to ShopPayButton`;
|
|
57
|
+
const DoublePropsErrorMessage = `You must provide either a variantIds or variantIdsAndQuantities prop, but not both in the ShopPayButton component`;
|
|
58
|
+
export {
|
|
59
|
+
DoublePropsErrorMessage,
|
|
60
|
+
MissingPropsErrorMessage,
|
|
61
|
+
ShopPayButton,
|
|
62
|
+
getIdFromGid
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=ShopPayButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShopPayButton.js","sources":["../../src/ShopPayButton.tsx"],"sourcesContent":["import {useShop} from './ShopifyProvider.js';\nimport {useLoadScript} from './load-script.js';\n\n// By using 'never' in the \"or\" cases below, it makes these props \"exclusive\" and means that you cannot pass both of them; you must pass either one OR the other.\ntype ShopPayButtonProps = {\n /** A string of classes to apply to the `div` that wraps the Shop Pay button. */\n className?: string;\n /** A string that's applied to the [CSS custom property (variable)](https://developer.mozilla.org/en-US/docs/Web/CSS/--*) `--shop-pay-button-width` for the [Buy with Shop Pay component](https://shopify.dev/custom-storefronts/tools/web-components#buy-with-shop-pay-component). */\n width?: string;\n} & (\n | {\n /** An array of IDs of the variants to purchase with Shop Pay. This will only ever have a quantity of 1 for each variant. If you want to use other quantities, then use 'variantIdsAndQuantities'. */\n variantIds: string[];\n /** An array of variant IDs and quantities to purchase with Shop Pay. */\n variantIdsAndQuantities?: never;\n }\n | {\n /** An array of IDs of the variants to purchase with Shop Pay. This will only ever have a quantity of 1 for each variant. If you want to use other quantities, then use 'variantIdsAndQuantities'. */\n variantIds?: never;\n /** An array of variant IDs and quantities to purchase with Shop Pay. */\n variantIdsAndQuantities: Array<{\n id: string;\n quantity: number;\n }>;\n }\n);\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/no-namespace\n namespace JSX {\n interface IntrinsicElements {\n 'shop-pay-button': {\n variants: string;\n 'store-url': string;\n };\n }\n }\n}\n\nconst SHOPJS_URL =\n 'https://cdn.shopify.com/shopifycloud/shop-js/v1.0/client.js';\n\n/**\n * The `ShopPayButton` component renders a button that redirects to the Shop Pay checkout.\n * It renders a [`<shop-pay-button>`](https://shopify.dev/custom-storefronts/tools/web-components) custom element, for which it will lazy-load the source code automatically.\n * It relies on the `<ShopProvider>` context provider.\n */\nexport function ShopPayButton({\n variantIds,\n className,\n variantIdsAndQuantities,\n width,\n}: ShopPayButtonProps) {\n const {storeDomain} = useShop();\n const shopPayLoadedStatus = useLoadScript(SHOPJS_URL);\n\n let ids: string[];\n\n if (variantIds && variantIdsAndQuantities) {\n throw new Error(DoublePropsErrorMessage);\n }\n\n if (variantIds) {\n ids = variantIds.reduce<string[]>((prev, curr) => {\n const bareId = getIdFromGid(curr);\n if (bareId) {\n prev.push(bareId);\n }\n return prev;\n }, []);\n } else if (variantIdsAndQuantities) {\n ids = variantIdsAndQuantities.reduce<string[]>((prev, curr) => {\n const bareId = getIdFromGid(curr?.id);\n if (bareId) {\n prev.push(`${bareId}:${curr?.quantity ?? 1}`);\n }\n return prev;\n }, []);\n } else {\n throw new Error(MissingPropsErrorMessage);\n }\n\n const style = width\n ? ({\n '--shop-pay-button-width': width,\n } as React.CSSProperties)\n : undefined;\n\n return (\n <div className={className} style={style}>\n {shopPayLoadedStatus === 'done' && (\n <shop-pay-button\n store-url={`https://${storeDomain}`}\n variants={ids.join(',')}\n />\n )}\n </div>\n );\n}\n\n/**\n * Takes a string in the format of \"gid://shopify/ProductVariant/41007289630776\" and returns a string of the ID part at the end: \"41007289630776\"\n */\nexport function getIdFromGid(id?: string) {\n if (!id) return;\n return id.split('/').pop();\n}\n\nexport const MissingPropsErrorMessage = `You must pass in either \"variantIds\" or \"variantIdsAndQuantities\" to ShopPayButton`;\nexport const DoublePropsErrorMessage = `You must provide either a variantIds or variantIdsAndQuantities prop, but not both in the ShopPayButton component`;\n"],"names":["SHOPJS_URL","ShopPayButton","variantIds","className","variantIdsAndQuantities","width","storeDomain","useShop","shopPayLoadedStatus","useLoadScript","ids","Error","DoublePropsErrorMessage","reduce","prev","curr","bareId","getIdFromGid","push","id","quantity","MissingPropsErrorMessage","style","undefined","_jsx","join","split","pop"],"mappings":";;;AAuCA,MAAMA,aACJ;AAOK,SAASC,cAAc;AAAA,EAC5BC;AAAAA,EACAC;AAAAA,EACAC;AAAAA,EACAC;AAJ4B,GAKP;AACf,QAAA;AAAA,IAACC;AAAAA,MAAeC,QAAtB;AACMC,QAAAA,sBAAsBC,cAAcT,UAAD;AAErCU,MAAAA;AAEJ,MAAIR,cAAcE,yBAAyB;AACnC,UAAA,IAAIO,MAAMC,uBAAV;AAAA,EACP;AAED,MAAIV,YAAY;AACdQ,UAAMR,WAAWW,OAAiB,CAACC,MAAMC,SAAS;AAC1CC,YAAAA,SAASC,aAAaF,IAAD;AAC3B,UAAIC,QAAQ;AACVF,aAAKI,KAAKF,MAAV;AAAA,MACD;AACMF,aAAAA;AAAAA,IACR,GAAE,CANG,CAAA;AAAA,aAOGV,yBAAyB;AAClCM,UAAMN,wBAAwBS,OAAiB,CAACC,MAAMC,SAAS;;AACvDC,YAAAA,SAASC,aAAaF,6BAAMI,EAAP;AAC3B,UAAIH,QAAQ;AACVF,aAAKI,KAAM,GAAEF,WAAUD,kCAAMK,aAANL,YAAkB,GAAzC;AAAA,MACD;AACMD,aAAAA;AAAAA,IACR,GAAE,CANG,CAAA;AAAA,EAAA,OAOD;AACC,UAAA,IAAIH,MAAMU,wBAAV;AAAA,EACP;AAED,QAAMC,QAAQjB,QACT;AAAA,IACC,2BAA2BA;AAAAA,EAE7BkB,IAAAA;AAEJ,6BACE,OAAA;AAAA,IAAK;AAAA,IAAsB;AAAA,IAA3B,UACGf,wBAAwB,UACvBgB,oBAAA,mBAAA;AAAA,MACE,aAAY,WAAUlB;AAAAA,MACtB,UAAUI,IAAIe,KAAK,GAAT;AAAA,IAAA,CAFZ;AAAA,EAAA,CAHN;AAUD;AAKM,SAASR,aAAaE,IAAa;AACxC,MAAI,CAACA;AAAI;AACT,SAAOA,GAAGO,MAAM,GAAT,EAAcC,IAArB;AACD;AAEM,MAAMN,2BAA4B;AAClC,MAAMT,0BAA2B;"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const
|
|
4
|
-
const storefrontApiConstants = require("./storefront-api-constants.
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const storefrontApiConstants = require("./storefront-api-constants.cjs");
|
|
5
5
|
const jsxRuntime = require("react/jsx-runtime");
|
|
6
|
-
const ShopifyContext =
|
|
6
|
+
const ShopifyContext = react.createContext({
|
|
7
7
|
storeDomain: "test.myshopify.com",
|
|
8
8
|
storefrontToken: "abc123",
|
|
9
9
|
storefrontApiVersion: storefrontApiConstants.SFAPI_VERSION,
|
|
@@ -25,7 +25,7 @@ function ShopifyProvider({
|
|
|
25
25
|
if (shopifyConfig.storefrontApiVersion !== storefrontApiConstants.SFAPI_VERSION) {
|
|
26
26
|
console.warn(`This version of Hydrogen-UI is built for Shopify's Storefront API version ${storefrontApiConstants.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.`);
|
|
27
27
|
}
|
|
28
|
-
const finalConfig =
|
|
28
|
+
const finalConfig = react.useMemo(() => ({
|
|
29
29
|
...shopifyConfig,
|
|
30
30
|
storeDomain: shopifyConfig.storeDomain.replace(/^https?:\/\//, "")
|
|
31
31
|
}), [shopifyConfig]);
|
|
@@ -35,7 +35,7 @@ function ShopifyProvider({
|
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
function useShop() {
|
|
38
|
-
const shopContext =
|
|
38
|
+
const shopContext = react.useContext(ShopifyContext);
|
|
39
39
|
if (!shopContext) {
|
|
40
40
|
throw new Error(`'useShop()' must be a descendent of <ShopifyProvider/>`);
|
|
41
41
|
}
|
|
@@ -43,4 +43,4 @@ function useShop() {
|
|
|
43
43
|
}
|
|
44
44
|
exports.ShopifyProvider = ShopifyProvider;
|
|
45
45
|
exports.useShop = useShop;
|
|
46
|
-
//# sourceMappingURL=ShopifyProvider.
|
|
46
|
+
//# sourceMappingURL=ShopifyProvider.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ShopifyProvider.
|
|
1
|
+
{"version":3,"file":"ShopifyProvider.cjs","sources":["../../src/ShopifyProvider.tsx"],"sourcesContent":["import {createContext, useContext, useMemo, type ReactNode} from 'react';\nimport type {LanguageCode, CountryCode, Shop} from './storefront-api-types.js';\nimport {SFAPI_VERSION} from './storefront-api-constants.js';\n\nconst ShopifyContext = createContext<ShopifyContextValue>({\n storeDomain: 'test.myshopify.com',\n storefrontToken: 'abc123',\n storefrontApiVersion: SFAPI_VERSION,\n country: {\n isoCode: 'US',\n },\n language: {\n isoCode: 'EN',\n },\n locale: 'EN-US',\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: ShopifyContextValue;\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 `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 () => ({\n ...shopifyConfig,\n storeDomain: shopifyConfig.storeDomain.replace(/^https?:\\/\\//, ''),\n }),\n [shopifyConfig]\n );\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 ShopifyContextValue = {\n /** The globally-unique identifier for the Shop */\n storefrontId?: string;\n /** The host name of the domain (eg: `{shop}.myshopify.com`). If a URL with a scheme (for example `https://`) is passed in, then the scheme is removed. */\n storeDomain: Shop['primaryDomain']['host'];\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"],"names":["ShopifyContext","createContext","storeDomain","storefrontToken","storefrontApiVersion","SFAPI_VERSION","country","isoCode","language","locale","ShopifyProvider","children","shopifyConfig","Error","console","warn","finalConfig","useMemo","replace","_jsx","useShop","shopContext","useContext"],"mappings":";;;;;AAIA,MAAMA,iBAAiBC,MAAAA,cAAmC;AAAA,EACxDC,aAAa;AAAA,EACbC,iBAAiB;AAAA,EACjBC,sBAAsBC,uBAAAA;AAAAA,EACtBC,SAAS;AAAA,IACPC,SAAS;AAAA,EADF;AAAA,EAGTC,UAAU;AAAA,IACRD,SAAS;AAAA,EADD;AAAA,EAGVE,QAAQ;AAVgD,CAAtB;AAgB7B,SAASC,gBAAgB;AAAA,EAC9BC;AAAAA,EACAC;AAF8B,GAM7B;AACD,MAAI,CAACA,eAAe;AACZ,UAAA,IAAIC,MACP,iEADG;AAAA,EAGP;AAEGD,MAAAA,cAAcR,yBAAyBC,sCAAe;AACxDS,YAAQC,KACL,6EAA4EV,uBAAyDO,yDAAAA,cAAcR,0HADtJ;AAAA,EAGD;AAEKY,QAAAA,cAAcC,MAAAA,QAClB,OAAO;AAAA,IACL,GAAGL;AAAAA,IACHV,aAAaU,cAAcV,YAAYgB,QAAQ,gBAAgB,EAAlD;AAAA,EAAA,IAEf,CAACN,aAAD,CALyB;AASzB,SAAAO,2BAAA,IAAC,eAAe,UAAhB;AAAA,IAAyB,OAAOH;AAAAA,IAAhC;AAAA,EAAA,CADF;AAKD;AAKM,SAASI,UAAU;AAClBC,QAAAA,cAAcC,iBAAWtB,cAAD;AAC9B,MAAI,CAACqB,aAAa;AACV,UAAA,IAAIR,MAAO,wDAAX;AAAA,EACP;AACMQ,SAAAA;AACR;;;"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { createContext, useMemo, useContext } from "react";
|
|
2
|
+
import { SFAPI_VERSION } from "./storefront-api-constants.js";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
const ShopifyContext = createContext({
|
|
5
|
+
storeDomain: "test.myshopify.com",
|
|
6
|
+
storefrontToken: "abc123",
|
|
7
|
+
storefrontApiVersion: SFAPI_VERSION,
|
|
8
|
+
country: {
|
|
9
|
+
isoCode: "US"
|
|
10
|
+
},
|
|
11
|
+
language: {
|
|
12
|
+
isoCode: "EN"
|
|
13
|
+
},
|
|
14
|
+
locale: "EN-US"
|
|
15
|
+
});
|
|
16
|
+
function ShopifyProvider({
|
|
17
|
+
children,
|
|
18
|
+
shopifyConfig
|
|
19
|
+
}) {
|
|
20
|
+
if (!shopifyConfig) {
|
|
21
|
+
throw new Error(`The 'shopifyConfig' prop must be passed to '<ShopifyProvider/>'`);
|
|
22
|
+
}
|
|
23
|
+
if (shopifyConfig.storefrontApiVersion !== SFAPI_VERSION) {
|
|
24
|
+
console.warn(`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.`);
|
|
25
|
+
}
|
|
26
|
+
const finalConfig = useMemo(() => ({
|
|
27
|
+
...shopifyConfig,
|
|
28
|
+
storeDomain: shopifyConfig.storeDomain.replace(/^https?:\/\//, "")
|
|
29
|
+
}), [shopifyConfig]);
|
|
30
|
+
return /* @__PURE__ */ jsx(ShopifyContext.Provider, {
|
|
31
|
+
value: finalConfig,
|
|
32
|
+
children
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
function useShop() {
|
|
36
|
+
const shopContext = useContext(ShopifyContext);
|
|
37
|
+
if (!shopContext) {
|
|
38
|
+
throw new Error(`'useShop()' must be a descendent of <ShopifyProvider/>`);
|
|
39
|
+
}
|
|
40
|
+
return shopContext;
|
|
41
|
+
}
|
|
42
|
+
export {
|
|
43
|
+
ShopifyProvider,
|
|
44
|
+
useShop
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=ShopifyProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ShopifyProvider.js","sources":["../../src/ShopifyProvider.tsx"],"sourcesContent":["import {createContext, useContext, useMemo, type ReactNode} from 'react';\nimport type {LanguageCode, CountryCode, Shop} from './storefront-api-types.js';\nimport {SFAPI_VERSION} from './storefront-api-constants.js';\n\nconst ShopifyContext = createContext<ShopifyContextValue>({\n storeDomain: 'test.myshopify.com',\n storefrontToken: 'abc123',\n storefrontApiVersion: SFAPI_VERSION,\n country: {\n isoCode: 'US',\n },\n language: {\n isoCode: 'EN',\n },\n locale: 'EN-US',\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: ShopifyContextValue;\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 `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 () => ({\n ...shopifyConfig,\n storeDomain: shopifyConfig.storeDomain.replace(/^https?:\\/\\//, ''),\n }),\n [shopifyConfig]\n );\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 ShopifyContextValue = {\n /** The globally-unique identifier for the Shop */\n storefrontId?: string;\n /** The host name of the domain (eg: `{shop}.myshopify.com`). If a URL with a scheme (for example `https://`) is passed in, then the scheme is removed. */\n storeDomain: Shop['primaryDomain']['host'];\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"],"names":["ShopifyContext","createContext","storeDomain","storefrontToken","storefrontApiVersion","SFAPI_VERSION","country","isoCode","language","locale","ShopifyProvider","children","shopifyConfig","Error","console","warn","finalConfig","useMemo","replace","_jsx","useShop","shopContext","useContext"],"mappings":";;;AAIA,MAAMA,iBAAiBC,cAAmC;AAAA,EACxDC,aAAa;AAAA,EACbC,iBAAiB;AAAA,EACjBC,sBAAsBC;AAAAA,EACtBC,SAAS;AAAA,IACPC,SAAS;AAAA,EADF;AAAA,EAGTC,UAAU;AAAA,IACRD,SAAS;AAAA,EADD;AAAA,EAGVE,QAAQ;AAVgD,CAAtB;AAgB7B,SAASC,gBAAgB;AAAA,EAC9BC;AAAAA,EACAC;AAF8B,GAM7B;AACD,MAAI,CAACA,eAAe;AACZ,UAAA,IAAIC,MACP,iEADG;AAAA,EAGP;AAEGD,MAAAA,cAAcR,yBAAyBC,eAAe;AACxDS,YAAQC,KACL,6EAA4EV,yDAAyDO,cAAcR,0HADtJ;AAAA,EAGD;AAEKY,QAAAA,cAAcC,QAClB,OAAO;AAAA,IACL,GAAGL;AAAAA,IACHV,aAAaU,cAAcV,YAAYgB,QAAQ,gBAAgB,EAAlD;AAAA,EAAA,IAEf,CAACN,aAAD,CALyB;AASzB,SAAAO,oBAAC,eAAe,UAAhB;AAAA,IAAyB,OAAOH;AAAAA,IAAhC;AAAA,EAAA,CADF;AAKD;AAKM,SAASI,UAAU;AAClBC,QAAAA,cAAcC,WAAWtB,cAAD;AAC9B,MAAI,CAACqB,aAAa;AACV,UAAA,IAAIR,MAAO,wDAAX;AAAA,EACP;AACMQ,SAAAA;AACR;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const imageSize = require("./image-size.
|
|
4
|
-
const
|
|
3
|
+
const imageSize = require("./image-size.cjs");
|
|
4
|
+
const react = require("react");
|
|
5
5
|
const jsxRuntime = require("react/jsx-runtime");
|
|
6
6
|
function Video(props) {
|
|
7
7
|
var _a, _b;
|
|
@@ -31,7 +31,7 @@ function Video(props) {
|
|
|
31
31
|
if (!((source == null ? void 0 : source.url) && (source == null ? void 0 : source.mimeType))) {
|
|
32
32
|
throw new Error(`<Video/> needs 'source.url' and 'source.mimeType'`);
|
|
33
33
|
}
|
|
34
|
-
return /* @__PURE__ */
|
|
34
|
+
return /* @__PURE__ */ react.createElement("source", {
|
|
35
35
|
...sourceProps,
|
|
36
36
|
key: source.url,
|
|
37
37
|
src: source.url,
|
|
@@ -41,4 +41,4 @@ function Video(props) {
|
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
exports.Video = Video;
|
|
44
|
-
//# sourceMappingURL=Video.
|
|
44
|
+
//# sourceMappingURL=Video.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Video.
|
|
1
|
+
{"version":3,"file":"Video.cjs","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,CANV;AAAA,OAODC;AAAAA,EACDP,IAAAA;AAEJ,QAAMQ,YAAYC,UAAAA,mBAAmB;AAAA,IACnCC,MAAKT,gBAAKU,iBAALV,mBAAmBW,QAAnBX,YAA0B;AAAA,IAC/B,GAAGC;AAAAA,EAAAA,CAF+B;AAKhC,MAAA,CAACD,KAAKY,SAAS;AACX,UAAA,IAAIC,MAAO,0CAAX;AAAA,EACP;AAED,wCAEE,SAAA;AAAA,IAAA,GACMP;AAAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQC;AAAAA,IALV,UAOGP,KAAKY,QAAQE,IAAKC,CAAW,WAAA;AAC5B,UAAI,GAAEA,iCAAQJ,SAAOI,iCAAQC,YAAW;AAChC,cAAA,IAAIH,MAAO,mDAAX;AAAA,MACP;AACD;WAEQR;AAAAA,QACJ,KAAKU,OAAOJ;AAAAA,QACZ,KAAKI,OAAOJ;AAAAA,QACZ,MAAMI,OAAOC;AAAAA,MAAAA,CALjB;AAAA,IAAA,CAJD;AAAA,EAAA,CAPH;AAsBH;;"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { shopifyImageLoader } from "./image-size.js";
|
|
2
|
+
import { createElement } from "react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
function Video(props) {
|
|
5
|
+
var _a, _b;
|
|
6
|
+
const {
|
|
7
|
+
data,
|
|
8
|
+
previewImageOptions,
|
|
9
|
+
id = data.id,
|
|
10
|
+
playsInline = true,
|
|
11
|
+
controls = true,
|
|
12
|
+
sourceProps = {},
|
|
13
|
+
...passthroughProps
|
|
14
|
+
} = props;
|
|
15
|
+
const posterUrl = shopifyImageLoader({
|
|
16
|
+
src: (_b = (_a = data.previewImage) == null ? void 0 : _a.url) != null ? _b : "",
|
|
17
|
+
...previewImageOptions
|
|
18
|
+
});
|
|
19
|
+
if (!data.sources) {
|
|
20
|
+
throw new Error(`<Video/> requires a 'data.sources' array`);
|
|
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'`);
|
|
31
|
+
}
|
|
32
|
+
return /* @__PURE__ */ createElement("source", {
|
|
33
|
+
...sourceProps,
|
|
34
|
+
key: source.url,
|
|
35
|
+
src: source.url,
|
|
36
|
+
type: source.mimeType
|
|
37
|
+
});
|
|
38
|
+
})
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
export {
|
|
42
|
+
Video
|
|
43
|
+
};
|
|
44
|
+
//# sourceMappingURL=Video.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Video.js","sources":["../../src/Video.tsx"],"sourcesContent":["import {type HTMLAttributes} from 'react';\nimport {shopifyImageLoader} from './image-size.js';\nimport type {Video as VideoType} from './storefront-api-types.js';\nimport type {PartialDeep} from 'type-fest';\n\nexport interface VideoProps {\n /** An object with fields that correspond to the Storefront API's [Video object](https://shopify.dev/api/storefront/latest/objects/video). */\n data: PartialDeep<VideoType, {recurseIntoArrays: true}>;\n /** An object of image size options for the video's `previewImage`. Uses `shopifyImageLoader` to generate the `poster` URL. */\n previewImageOptions?: Parameters<typeof shopifyImageLoader>[0];\n /** Props that will be passed to the `video` element's `source` children elements. */\n sourceProps?: HTMLAttributes<HTMLSourceElement> & {\n 'data-testid'?: string;\n };\n}\n\n/**\n * The `Video` component renders a `video` for the Storefront API's [Video object](https://shopify.dev/api/storefront/reference/products/video).\n */\nexport function Video(props: JSX.IntrinsicElements['video'] & VideoProps) {\n const {\n data,\n previewImageOptions,\n id = data.id,\n playsInline = true,\n controls = true,\n sourceProps = {},\n ...passthroughProps\n } = props;\n\n const posterUrl = shopifyImageLoader({\n src: data.previewImage?.url ?? '',\n ...previewImageOptions,\n });\n\n if (!data.sources) {\n throw new Error(`<Video/> requires a 'data.sources' array`);\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/media-has-caption\n <video\n {...passthroughProps}\n id={id}\n playsInline={playsInline}\n controls={controls}\n poster={posterUrl}\n >\n {data.sources.map((source) => {\n if (!(source?.url && source?.mimeType)) {\n throw new Error(`<Video/> needs 'source.url' and 'source.mimeType'`);\n }\n return (\n <source\n {...sourceProps}\n key={source.url}\n src={source.url}\n type={source.mimeType}\n />\n );\n })}\n </video>\n );\n}\n"],"names":["Video","props","data","previewImageOptions","id","playsInline","controls","sourceProps","passthroughProps","posterUrl","shopifyImageLoader","src","previewImage","url","sources","Error","map","source","mimeType"],"mappings":";;;AAmBO,SAASA,MAAMC,OAAoD;;AAClE,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC,KAAKF,KAAKE;AAAAA,IACVC,cAAc;AAAA,IACdC,WAAW;AAAA,IACXC,cAAc,CANV;AAAA,OAODC;AAAAA,EACDP,IAAAA;AAEJ,QAAMQ,YAAYC,mBAAmB;AAAA,IACnCC,MAAKT,gBAAKU,iBAALV,mBAAmBW,QAAnBX,YAA0B;AAAA,IAC/B,GAAGC;AAAAA,EAAAA,CAF+B;AAKhC,MAAA,CAACD,KAAKY,SAAS;AACX,UAAA,IAAIC,MAAO,0CAAX;AAAA,EACP;AAED,6BAEE,SAAA;AAAA,IAAA,GACMP;AAAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA,QAAQC;AAAAA,IALV,UAOGP,KAAKY,QAAQE,IAAKC,CAAW,WAAA;AAC5B,UAAI,GAAEA,iCAAQJ,SAAOI,iCAAQC,YAAW;AAChC,cAAA,IAAIH,MAAO,mDAAX;AAAA,MACP;AACD;WAEQR;AAAAA,QACJ,KAAKU,OAAOJ;AAAAA,QACZ,KAAKI,OAAOJ;AAAAA,QACZ,MAAMI,OAAOC;AAAAA,MAAAA,CALjB;AAAA,IAAA,CAJD;AAAA,EAAA,CAPH;AAsBH;"}
|
|
@@ -14,4 +14,4 @@ exports.SHOPIFY_STOREFRONT_S_HEADER = SHOPIFY_STOREFRONT_S_HEADER;
|
|
|
14
14
|
exports.SHOPIFY_STOREFRONT_Y_HEADER = SHOPIFY_STOREFRONT_Y_HEADER;
|
|
15
15
|
exports.SHOPIFY_Y = SHOPIFY_Y;
|
|
16
16
|
exports.STOREFRONT_API_PUBLIC_TOKEN_HEADER = STOREFRONT_API_PUBLIC_TOKEN_HEADER;
|
|
17
|
-
//# sourceMappingURL=cart-constants.
|
|
17
|
+
//# sourceMappingURL=cart-constants.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cart-constants.
|
|
1
|
+
{"version":3,"file":"cart-constants.cjs","sources":["../../src/cart-constants.ts"],"sourcesContent":["export const CART_ID_STORAGE_KEY = 'shopifyCartId';\nexport const CART_COOKIE_TTL_DAYS = 14;\n\n// Needed for cart analytics within Shopify\nexport const STOREFRONT_API_PUBLIC_TOKEN_HEADER =\n 'X-Shopify-Storefront-Access-Token';\nexport const SHOPIFY_STOREFRONT_ID_HEADER = 'Shopify-Storefront-Id';\nexport const SHOPIFY_STOREFRONT_Y_HEADER = 'Shopify-Storefront-Y';\nexport const SHOPIFY_STOREFRONT_S_HEADER = 'Shopify-Storefront-S';\nexport const SHOPIFY_Y = '_shopify_y';\nexport const SHOPIFY_S = '_shopify_s';\n"],"names":[],"mappings":";;AAAO,MAAM,sBAAsB;AAI5B,MAAM,qCACX;AACK,MAAM,+BAA+B;AACrC,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AACpC,MAAM,YAAY;AAClB,MAAM,YAAY;;;;;;;;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const CART_ID_STORAGE_KEY = "shopifyCartId";
|
|
2
|
+
const STOREFRONT_API_PUBLIC_TOKEN_HEADER = "X-Shopify-Storefront-Access-Token";
|
|
3
|
+
const SHOPIFY_STOREFRONT_ID_HEADER = "Shopify-Storefront-Id";
|
|
4
|
+
const SHOPIFY_STOREFRONT_Y_HEADER = "Shopify-Storefront-Y";
|
|
5
|
+
const SHOPIFY_STOREFRONT_S_HEADER = "Shopify-Storefront-S";
|
|
6
|
+
const SHOPIFY_Y = "_shopify_y";
|
|
7
|
+
const SHOPIFY_S = "_shopify_s";
|
|
8
|
+
export {
|
|
9
|
+
CART_ID_STORAGE_KEY,
|
|
10
|
+
SHOPIFY_S,
|
|
11
|
+
SHOPIFY_STOREFRONT_ID_HEADER,
|
|
12
|
+
SHOPIFY_STOREFRONT_S_HEADER,
|
|
13
|
+
SHOPIFY_STOREFRONT_Y_HEADER,
|
|
14
|
+
SHOPIFY_Y,
|
|
15
|
+
STOREFRONT_API_PUBLIC_TOKEN_HEADER
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=cart-constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cart-constants.js","sources":["../../src/cart-constants.ts"],"sourcesContent":["export const CART_ID_STORAGE_KEY = 'shopifyCartId';\nexport const CART_COOKIE_TTL_DAYS = 14;\n\n// Needed for cart analytics within Shopify\nexport const STOREFRONT_API_PUBLIC_TOKEN_HEADER =\n 'X-Shopify-Storefront-Access-Token';\nexport const SHOPIFY_STOREFRONT_ID_HEADER = 'Shopify-Storefront-Id';\nexport const SHOPIFY_STOREFRONT_Y_HEADER = 'Shopify-Storefront-Y';\nexport const SHOPIFY_STOREFRONT_S_HEADER = 'Shopify-Storefront-S';\nexport const SHOPIFY_Y = '_shopify_y';\nexport const SHOPIFY_S = '_shopify_s';\n"],"names":[],"mappings":"AAAO,MAAM,sBAAsB;AAI5B,MAAM,qCACX;AACK,MAAM,+BAA+B;AACrC,MAAM,8BAA8B;AACpC,MAAM,8BAA8B;AACpC,MAAM,YAAY;AAClB,MAAM,YAAY;"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const
|
|
4
|
-
const ShopifyProvider = require("./ShopifyProvider.
|
|
5
|
-
const cartConstants = require("./cart-constants.
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const ShopifyProvider = require("./ShopifyProvider.cjs");
|
|
5
|
+
const cartConstants = require("./cart-constants.cjs");
|
|
6
6
|
const cookie = require("worktop/cookie");
|
|
7
7
|
function useCartFetch() {
|
|
8
8
|
const {
|
|
@@ -11,7 +11,7 @@ function useCartFetch() {
|
|
|
11
11
|
storefrontToken,
|
|
12
12
|
storefrontId
|
|
13
13
|
} = ShopifyProvider.useShop();
|
|
14
|
-
return
|
|
14
|
+
return react.useCallback(({
|
|
15
15
|
query,
|
|
16
16
|
variables
|
|
17
17
|
}) => {
|
|
@@ -45,4 +45,4 @@ function useCartFetch() {
|
|
|
45
45
|
}, [storeDomain, storefrontApiVersion, storefrontToken, storefrontId]);
|
|
46
46
|
}
|
|
47
47
|
exports.useCartFetch = useCartFetch;
|
|
48
|
-
//# sourceMappingURL=cart-hooks.
|
|
48
|
+
//# sourceMappingURL=cart-hooks.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cart-hooks.
|
|
1
|
+
{"version":3,"file":"cart-hooks.cjs","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 STOREFRONT_API_PUBLIC_TOKEN_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 {storeDomain, storefrontApiVersion, storefrontToken, storefrontId} =\n 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: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'X-SDK-Variant': 'hydrogen',\n 'X-SDK-Version': storefrontApiVersion,\n [STOREFRONT_API_PUBLIC_TOKEN_HEADER]: storefrontToken,\n };\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(\n `https://${storeDomain}/api/${storefrontApiVersion}/graphql.json`,\n {\n method: 'POST',\n headers,\n body: JSON.stringify({\n query: query.toString(),\n variables,\n }),\n }\n )\n .then((res) => res.json())\n .catch((error) => {\n return {\n data: undefined,\n errors: error.toString(),\n };\n });\n },\n [storeDomain, storefrontApiVersion, storefrontToken, storefrontId]\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","storeDomain","storefrontApiVersion","storefrontToken","storefrontId","useShop","useCallback","query","variables","headers","STOREFRONT_API_PUBLIC_TOKEN_HEADER","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":";;;;;;AAiBO,SAASA,eAAe;AACvB,QAAA;AAAA,IAACC;AAAAA,IAAaC;AAAAA,IAAsBC;AAAAA,IAAiBC;AAAAA,MACzDC,gBADF,QAAA;AAGA,SAAOC,kBACL,CAAqB;AAAA,IACnBC;AAAAA,IACAC;AAAAA,EAAAA,MAIgE;AAChE,UAAMC,UAAkC;AAAA,MACtC,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,iBAAiBP;AAAAA,MACjB,CAACQ,cAAqCP,qCAAAA;AAAAA,IAAAA;AAGxC,QAAIC,cAAc;AAChBK,cAAQE,cAAAA,gCAAgCP;AAAAA,IACzC;AAGKQ,UAAAA,aAAaC,OAAAA,MAAMC,SAASC,MAAV;AACpBH,QAAAA,WAAWI,cAAcJ,cAAAA,WAAWK,cAAY,YAAA;AAClDR,cAAQS,6CAA+BN,WAAWI,cAAAA;AAClDP,cAAQU,6CAA+BP,WAAWK,cAAAA;AAAAA,IACnD;AAEMG,WAAAA,MACJ,WAAUnB,mBAAmBC,qCAC9B;AAAA,MACEmB,QAAQ;AAAA,MACRZ;AAAAA,MACAa,MAAMC,KAAKC,UAAU;AAAA,QACnBjB,OAAOA,MAAMkB,SADM;AAAA,QAEnBjB;AAAAA,MAAAA,CAFI;AAAA,IAAA,CALE,EAWTkB,KAAMC,CAAAA,QAAQA,IAAIC,MAXd,EAYJC,MAAOC,CAAU,UAAA;AACT,aAAA;AAAA,QACLC,MAAMC;AAAAA,QACNC,QAAQH,MAAML,SAAN;AAAA,MAAA;AAAA,IAFH,CAbJ;AAAA,KAmBT,CAACxB,aAAaC,sBAAsBC,iBAAiBC,YAArD,CA7CgB;AA+CnB;;"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { useShop } from "./ShopifyProvider.js";
|
|
3
|
+
import { SHOPIFY_Y, SHOPIFY_S, STOREFRONT_API_PUBLIC_TOKEN_HEADER, SHOPIFY_STOREFRONT_ID_HEADER, SHOPIFY_STOREFRONT_Y_HEADER, SHOPIFY_STOREFRONT_S_HEADER } from "./cart-constants.js";
|
|
4
|
+
import { parse } from "worktop/cookie";
|
|
5
|
+
function useCartFetch() {
|
|
6
|
+
const {
|
|
7
|
+
storeDomain,
|
|
8
|
+
storefrontApiVersion,
|
|
9
|
+
storefrontToken,
|
|
10
|
+
storefrontId
|
|
11
|
+
} = useShop();
|
|
12
|
+
return useCallback(({
|
|
13
|
+
query,
|
|
14
|
+
variables
|
|
15
|
+
}) => {
|
|
16
|
+
const headers = {
|
|
17
|
+
"Content-Type": "application/json",
|
|
18
|
+
"X-SDK-Variant": "hydrogen",
|
|
19
|
+
"X-SDK-Version": storefrontApiVersion,
|
|
20
|
+
[STOREFRONT_API_PUBLIC_TOKEN_HEADER]: storefrontToken
|
|
21
|
+
};
|
|
22
|
+
if (storefrontId) {
|
|
23
|
+
headers[SHOPIFY_STOREFRONT_ID_HEADER] = storefrontId;
|
|
24
|
+
}
|
|
25
|
+
const cookieData = parse(document.cookie);
|
|
26
|
+
if (cookieData[SHOPIFY_Y] && cookieData[SHOPIFY_S]) {
|
|
27
|
+
headers[SHOPIFY_STOREFRONT_Y_HEADER] = cookieData[SHOPIFY_Y];
|
|
28
|
+
headers[SHOPIFY_STOREFRONT_S_HEADER] = cookieData[SHOPIFY_S];
|
|
29
|
+
}
|
|
30
|
+
return fetch(`https://${storeDomain}/api/${storefrontApiVersion}/graphql.json`, {
|
|
31
|
+
method: "POST",
|
|
32
|
+
headers,
|
|
33
|
+
body: JSON.stringify({
|
|
34
|
+
query: query.toString(),
|
|
35
|
+
variables
|
|
36
|
+
})
|
|
37
|
+
}).then((res) => res.json()).catch((error) => {
|
|
38
|
+
return {
|
|
39
|
+
data: void 0,
|
|
40
|
+
errors: error.toString()
|
|
41
|
+
};
|
|
42
|
+
});
|
|
43
|
+
}, [storeDomain, storefrontApiVersion, storefrontToken, storefrontId]);
|
|
44
|
+
}
|
|
45
|
+
export {
|
|
46
|
+
useCartFetch
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=cart-hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cart-hooks.js","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 STOREFRONT_API_PUBLIC_TOKEN_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 {storeDomain, storefrontApiVersion, storefrontToken, storefrontId} =\n 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: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'X-SDK-Variant': 'hydrogen',\n 'X-SDK-Version': storefrontApiVersion,\n [STOREFRONT_API_PUBLIC_TOKEN_HEADER]: storefrontToken,\n };\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(\n `https://${storeDomain}/api/${storefrontApiVersion}/graphql.json`,\n {\n method: 'POST',\n headers,\n body: JSON.stringify({\n query: query.toString(),\n variables,\n }),\n }\n )\n .then((res) => res.json())\n .catch((error) => {\n return {\n data: undefined,\n errors: error.toString(),\n };\n });\n },\n [storeDomain, storefrontApiVersion, storefrontToken, storefrontId]\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","storeDomain","storefrontApiVersion","storefrontToken","storefrontId","useShop","useCallback","query","variables","headers","STOREFRONT_API_PUBLIC_TOKEN_HEADER","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":";;;;AAiBO,SAASA,eAAe;AACvB,QAAA;AAAA,IAACC;AAAAA,IAAaC;AAAAA,IAAsBC;AAAAA,IAAiBC;AAAAA,MACzDC,QADF;AAGA,SAAOC,YACL,CAAqB;AAAA,IACnBC;AAAAA,IACAC;AAAAA,EAAAA,MAIgE;AAChE,UAAMC,UAAkC;AAAA,MACtC,gBAAgB;AAAA,MAChB,iBAAiB;AAAA,MACjB,iBAAiBP;AAAAA,MACjB,CAACQ,qCAAqCP;AAAAA,IAAAA;AAGxC,QAAIC,cAAc;AAChBK,cAAQE,gCAAgCP;AAAAA,IACzC;AAGKQ,UAAAA,aAAaC,MAAMC,SAASC,MAAV;AACpBH,QAAAA,WAAWI,cAAcJ,WAAWK,YAAY;AAClDR,cAAQS,+BAA+BN,WAAWI;AAClDP,cAAQU,+BAA+BP,WAAWK;AAAAA,IACnD;AAEMG,WAAAA,MACJ,WAAUnB,mBAAmBC,qCAC9B;AAAA,MACEmB,QAAQ;AAAA,MACRZ;AAAAA,MACAa,MAAMC,KAAKC,UAAU;AAAA,QACnBjB,OAAOA,MAAMkB,SADM;AAAA,QAEnBjB;AAAAA,MAAAA,CAFI;AAAA,IAAA,CALE,EAWTkB,KAAMC,CAAAA,QAAQA,IAAIC,MAXd,EAYJC,MAAOC,CAAU,UAAA;AACT,aAAA;AAAA,QACLC,MAAMC;AAAAA,QACNC,QAAQH,MAAML,SAAN;AAAA,MAAA;AAAA,IAFH,CAbJ;AAAA,KAmBT,CAACxB,aAAaC,sBAAsBC,iBAAiBC,YAArD,CA7CgB;AA+CnB;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cart-queries.
|
|
1
|
+
{"version":3,"file":"cart-queries.cjs","sources":["../../src/cart-queries.ts"],"sourcesContent":["export const CartLineAdd = (cartFragment: string) => `\nmutation CartLineAdd($cartId: ID!, $lines: [CartLineInput!]!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @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) => `\nmutation CartCreate($input: CartInput!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {\n cartCreate(input: $input) {\n cart {\n ...CartFragment\n }\n }\n}\n\n${cartFragment}\n`;\n\nexport const CartLineRemove = (cartFragment: string) => `\nmutation CartLineRemove($cartId: ID!, $lines: [ID!]!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @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) => `\nmutation CartLineUpdate($cartId: ID!, $lines: [CartLineUpdateInput!]!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @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) => `\nmutation CartNoteUpdate($cartId: ID!, $note: String, $numCartLines: Int = 250, $country: CountryCode = ZZ) @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) => `\nmutation 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) => `\nmutation CartAttributesUpdate($attributes: [AttributeInput!]!, $cartId: ID!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @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) => `\nmutation CartDiscountCodesUpdate($cartId: ID!, $discountCodes: [String!], $numCartLines: Int = 250, $country: CountryCode = ZZ) @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) => `\nquery CartQuery($id: ID!, $numCartLines: Int = 250, $country: CountryCode = ZZ) @inContext(country: $country) {\n cart(id: $id) {\n ...CartFragment\n }\n}\n\n${cartFragment}\n`;\n\nexport const defaultCartFragment = `\nfragment 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 compareAtPriceV2 {\n ...MoneyFragment\n }\n priceV2 {\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\nfragment MoneyFragment on MoneyV2 {\n currencyCode\n amount\n}\nfragment ImageFragment on Image {\n id\n url\n altText\n width\n height\n}\n`;\n"],"names":[],"mappings":";;AAAa,MAAA,cAAc,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASnD;AAAA;AAGW,MAAA,aAAa,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASlD;AAAA;AAGW,MAAA,iBAAiB,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAStD;AAAA;AAGW,MAAA,iBAAiB,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAStD;AAAA;AAGW,MAAA,iBAAiB,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAStD;AAAA;AAGW,MAAA,0BAA0B,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAc/D;AAAA;AAGW,MAAA,uBAAuB,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS5D;AAAA;AAGW,MAAA,0BAA0B,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAS/D;AAAA;AAGW,MAAA,YAAY,CAAC,iBAAyB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjD;AAAA;;;;;;;;;;"}
|