@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
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { useCallback, useMemo } from "react";
|
|
2
|
+
import { CartQuery, CartCreate, CartLineAdd, CartLineUpdate, CartLineRemove, CartNoteUpdate, CartBuyerIdentityUpdate, CartAttributesUpdate, CartDiscountCodesUpdate } from "./cart-queries.js";
|
|
3
|
+
import { useCartFetch } from "./cart-hooks.js";
|
|
4
|
+
function useCartActions({
|
|
5
|
+
numCartLines,
|
|
6
|
+
cartFragment,
|
|
7
|
+
countryCode = "US"
|
|
8
|
+
}) {
|
|
9
|
+
const fetchCart = useCartFetch();
|
|
10
|
+
const cartFetch = useCallback((cartId) => {
|
|
11
|
+
return fetchCart({
|
|
12
|
+
query: CartQuery(cartFragment),
|
|
13
|
+
variables: {
|
|
14
|
+
id: cartId,
|
|
15
|
+
numCartLines,
|
|
16
|
+
country: countryCode
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
}, [fetchCart, cartFragment, numCartLines, countryCode]);
|
|
20
|
+
const cartCreate = useCallback((cart) => {
|
|
21
|
+
return fetchCart({
|
|
22
|
+
query: CartCreate(cartFragment),
|
|
23
|
+
variables: {
|
|
24
|
+
input: cart,
|
|
25
|
+
numCartLines,
|
|
26
|
+
country: countryCode
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}, [cartFragment, countryCode, fetchCart, numCartLines]);
|
|
30
|
+
const cartLineAdd = useCallback((cartId, lines) => {
|
|
31
|
+
return fetchCart({
|
|
32
|
+
query: CartLineAdd(cartFragment),
|
|
33
|
+
variables: {
|
|
34
|
+
cartId,
|
|
35
|
+
lines,
|
|
36
|
+
numCartLines,
|
|
37
|
+
country: countryCode
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
}, [cartFragment, countryCode, fetchCart, numCartLines]);
|
|
41
|
+
const cartLineUpdate = useCallback((cartId, lines) => {
|
|
42
|
+
return fetchCart({
|
|
43
|
+
query: CartLineUpdate(cartFragment),
|
|
44
|
+
variables: {
|
|
45
|
+
cartId,
|
|
46
|
+
lines,
|
|
47
|
+
numCartLines,
|
|
48
|
+
country: countryCode
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}, [cartFragment, countryCode, fetchCart, numCartLines]);
|
|
52
|
+
const cartLineRemove = useCallback((cartId, lines) => {
|
|
53
|
+
return fetchCart({
|
|
54
|
+
query: CartLineRemove(cartFragment),
|
|
55
|
+
variables: {
|
|
56
|
+
cartId,
|
|
57
|
+
lines,
|
|
58
|
+
numCartLines,
|
|
59
|
+
country: countryCode
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}, [cartFragment, countryCode, fetchCart, numCartLines]);
|
|
63
|
+
const noteUpdate = useCallback((cartId, note) => {
|
|
64
|
+
return fetchCart({
|
|
65
|
+
query: CartNoteUpdate(cartFragment),
|
|
66
|
+
variables: {
|
|
67
|
+
cartId,
|
|
68
|
+
note,
|
|
69
|
+
numCartLines,
|
|
70
|
+
country: countryCode
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
}, [fetchCart, cartFragment, numCartLines, countryCode]);
|
|
74
|
+
const buyerIdentityUpdate = useCallback((cartId, buyerIdentity) => {
|
|
75
|
+
return fetchCart({
|
|
76
|
+
query: CartBuyerIdentityUpdate(cartFragment),
|
|
77
|
+
variables: {
|
|
78
|
+
cartId,
|
|
79
|
+
buyerIdentity,
|
|
80
|
+
numCartLines,
|
|
81
|
+
country: countryCode
|
|
82
|
+
}
|
|
83
|
+
});
|
|
84
|
+
}, [cartFragment, countryCode, fetchCart, numCartLines]);
|
|
85
|
+
const cartAttributesUpdate = useCallback((cartId, attributes) => {
|
|
86
|
+
return fetchCart({
|
|
87
|
+
query: CartAttributesUpdate(cartFragment),
|
|
88
|
+
variables: {
|
|
89
|
+
cartId,
|
|
90
|
+
attributes,
|
|
91
|
+
numCartLines,
|
|
92
|
+
country: countryCode
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}, [cartFragment, countryCode, fetchCart, numCartLines]);
|
|
96
|
+
const discountCodesUpdate = useCallback((cartId, discountCodes) => {
|
|
97
|
+
return fetchCart({
|
|
98
|
+
query: CartDiscountCodesUpdate(cartFragment),
|
|
99
|
+
variables: {
|
|
100
|
+
cartId,
|
|
101
|
+
discountCodes,
|
|
102
|
+
numCartLines,
|
|
103
|
+
country: countryCode
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
}, [cartFragment, countryCode, fetchCart, numCartLines]);
|
|
107
|
+
return useMemo(() => ({
|
|
108
|
+
cartFetch,
|
|
109
|
+
cartCreate,
|
|
110
|
+
cartLineAdd,
|
|
111
|
+
cartLineUpdate,
|
|
112
|
+
cartLineRemove,
|
|
113
|
+
noteUpdate,
|
|
114
|
+
buyerIdentityUpdate,
|
|
115
|
+
cartAttributesUpdate,
|
|
116
|
+
discountCodesUpdate,
|
|
117
|
+
cartFragment
|
|
118
|
+
}), [cartFetch, cartCreate, cartLineAdd, cartLineUpdate, cartLineRemove, noteUpdate, buyerIdentityUpdate, cartAttributesUpdate, discountCodesUpdate, cartFragment]);
|
|
119
|
+
}
|
|
120
|
+
export {
|
|
121
|
+
useCartActions
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=useCartActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCartActions.js","sources":["../../src/useCartActions.tsx"],"sourcesContent":["import {useCallback, useMemo} from 'react';\nimport {\n AttributeInput,\n CartBuyerIdentityInput,\n CartInput,\n CartLineInput,\n CartLineUpdateInput,\n CountryCode,\n Cart as CartType,\n MutationCartDiscountCodesUpdateArgs,\n MutationCartNoteUpdateArgs,\n} from './storefront-api-types.js';\nimport {\n CartAttributesUpdate,\n CartBuyerIdentityUpdate,\n CartCreate,\n CartDiscountCodesUpdate,\n CartLineAdd,\n CartLineRemove,\n CartLineUpdate,\n CartNoteUpdate,\n CartQuery,\n} from './cart-queries.js';\nimport {useCartFetch} from './cart-hooks.js';\nimport {PartialDeep} from 'type-fest';\n\ntype CartResponse = PartialDeep<CartType, {recurseIntoArrays: true}>;\n\n/**\n * The `useCartActions` hook returns helper graphql functions for Storefront Cart API\n *\n * See [cart API graphql mutations](https://shopify.dev/api/storefront/2022-10/objects/Cart)\n */\nexport function useCartActions({\n numCartLines,\n cartFragment,\n countryCode = 'US',\n}: {\n /** Maximum number of cart lines to fetch. Defaults to 250 cart lines. */\n numCartLines?: number;\n /** A fragment used to query the Storefront API's [Cart object](https://shopify.dev/api/storefront/latest/objects/cart) for all queries and mutations. A default value is used if no argument is provided. */\n cartFragment: string;\n /** The ISO country code for i18n. */\n countryCode?: CountryCode;\n}) {\n const fetchCart = useCartFetch();\n\n const cartFetch = useCallback(\n (cartId: string) => {\n return fetchCart<{cart: CartResponse}>({\n query: CartQuery(cartFragment),\n variables: {\n id: cartId,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [fetchCart, cartFragment, numCartLines, countryCode]\n );\n\n const cartCreate = useCallback(\n (cart: CartInput) => {\n return fetchCart<{cartCreate: {cart: CartResponse}}>({\n query: CartCreate(cartFragment),\n variables: {\n input: cart,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\n );\n\n const cartLineAdd = useCallback(\n (cartId: string, lines: CartLineInput[]) => {\n return fetchCart<{cartLinesAdd: {cart: CartResponse}}>({\n query: CartLineAdd(cartFragment),\n variables: {\n cartId,\n lines,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\n );\n\n const cartLineUpdate = useCallback(\n (cartId: string, lines: CartLineUpdateInput[]) => {\n return fetchCart<{cartLinesUpdate: {cart: CartResponse}}>({\n query: CartLineUpdate(cartFragment),\n variables: {\n cartId,\n lines,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\n );\n\n const cartLineRemove = useCallback(\n (cartId: string, lines: string[]) => {\n return fetchCart<{cartLinesRemove: {cart: CartResponse}}>({\n query: CartLineRemove(cartFragment),\n variables: {\n cartId,\n lines,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\n );\n\n const noteUpdate = useCallback(\n (cartId: string, note: MutationCartNoteUpdateArgs['note']) => {\n return fetchCart<{cartNoteUpdate: {cart: CartResponse}}>({\n query: CartNoteUpdate(cartFragment),\n variables: {\n cartId,\n note,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [fetchCart, cartFragment, numCartLines, countryCode]\n );\n\n const buyerIdentityUpdate = useCallback(\n (cartId: string, buyerIdentity: CartBuyerIdentityInput) => {\n return fetchCart<{cartBuyerIdentityUpdate: {cart: CartResponse}}>({\n query: CartBuyerIdentityUpdate(cartFragment),\n variables: {\n cartId,\n buyerIdentity,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\n );\n\n const cartAttributesUpdate = useCallback(\n (cartId: string, attributes: AttributeInput[]) => {\n return fetchCart<{cartAttributesUpdate: {cart: CartResponse}}>({\n query: CartAttributesUpdate(cartFragment),\n variables: {\n cartId,\n attributes,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\n );\n\n const discountCodesUpdate = useCallback(\n (\n cartId: string,\n discountCodes: MutationCartDiscountCodesUpdateArgs['discountCodes']\n ) => {\n return fetchCart<{cartDiscountCodesUpdate: {cart: CartResponse}}>({\n query: CartDiscountCodesUpdate(cartFragment),\n variables: {\n cartId,\n discountCodes,\n numCartLines,\n country: countryCode,\n },\n });\n },\n [cartFragment, countryCode, fetchCart, numCartLines]\n );\n\n return useMemo(\n () => ({\n cartFetch,\n cartCreate,\n cartLineAdd,\n cartLineUpdate,\n cartLineRemove,\n noteUpdate,\n buyerIdentityUpdate,\n cartAttributesUpdate,\n discountCodesUpdate,\n cartFragment,\n }),\n [\n cartFetch,\n cartCreate,\n cartLineAdd,\n cartLineUpdate,\n cartLineRemove,\n noteUpdate,\n buyerIdentityUpdate,\n cartAttributesUpdate,\n discountCodesUpdate,\n cartFragment,\n ]\n );\n}\n"],"names":["useCartActions","numCartLines","cartFragment","countryCode","fetchCart","useCartFetch","cartFetch","useCallback","cartId","query","CartQuery","variables","id","country","cartCreate","cart","CartCreate","input","cartLineAdd","lines","CartLineAdd","cartLineUpdate","CartLineUpdate","cartLineRemove","CartLineRemove","noteUpdate","note","CartNoteUpdate","buyerIdentityUpdate","buyerIdentity","CartBuyerIdentityUpdate","cartAttributesUpdate","attributes","CartAttributesUpdate","discountCodesUpdate","discountCodes","CartDiscountCodesUpdate","useMemo"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const
|
|
4
|
-
const ShopifyProvider = require("./ShopifyProvider.
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const ShopifyProvider = require("./ShopifyProvider.cjs");
|
|
5
5
|
function useMoney(money) {
|
|
6
6
|
const {
|
|
7
7
|
locale
|
|
@@ -10,7 +10,7 @@ function useMoney(money) {
|
|
|
10
10
|
throw new Error(`useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work`);
|
|
11
11
|
}
|
|
12
12
|
const amount = parseFloat(money.amount);
|
|
13
|
-
const options =
|
|
13
|
+
const options = react.useMemo(() => ({
|
|
14
14
|
style: "currency",
|
|
15
15
|
currency: money.currencyCode
|
|
16
16
|
}), [money.currencyCode]);
|
|
@@ -34,7 +34,7 @@ function useMoney(money) {
|
|
|
34
34
|
maximumFractionDigits: 0
|
|
35
35
|
});
|
|
36
36
|
const isPartCurrency = (part) => part.type === "currency";
|
|
37
|
-
const lazyFormatters =
|
|
37
|
+
const lazyFormatters = react.useMemo(() => ({
|
|
38
38
|
original: () => money,
|
|
39
39
|
currencyCode: () => money.currencyCode,
|
|
40
40
|
localizedString: () => defaultFormatter().format(amount),
|
|
@@ -55,7 +55,7 @@ function useMoney(money) {
|
|
|
55
55
|
},
|
|
56
56
|
amount: () => defaultFormatter().formatToParts(amount).filter((part) => ["decimal", "fraction", "group", "integer", "literal"].includes(part.type)).map((part) => part.value).join("")
|
|
57
57
|
}), [money, amount, nameFormatter, defaultFormatter, narrowSymbolFormatter, withoutCurrencyFormatter, withoutTrailingZerosFormatter, withoutTrailingZerosOrCurrencyFormatter]);
|
|
58
|
-
return
|
|
58
|
+
return react.useMemo(() => new Proxy(lazyFormatters, {
|
|
59
59
|
get: (target, key) => {
|
|
60
60
|
var _a;
|
|
61
61
|
return (_a = Reflect.get(target, key)) == null ? void 0 : _a.call(null);
|
|
@@ -63,10 +63,10 @@ function useMoney(money) {
|
|
|
63
63
|
}), [lazyFormatters]);
|
|
64
64
|
}
|
|
65
65
|
function useLazyFormatter(locale, options) {
|
|
66
|
-
return
|
|
66
|
+
return react.useMemo(() => {
|
|
67
67
|
let memoized;
|
|
68
68
|
return () => memoized != null ? memoized : memoized = new Intl.NumberFormat(locale, options);
|
|
69
69
|
}, [locale, options]);
|
|
70
70
|
}
|
|
71
71
|
exports.useMoney = useMoney;
|
|
72
|
-
//# sourceMappingURL=useMoney.
|
|
72
|
+
//# sourceMappingURL=useMoney.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMoney.
|
|
1
|
+
{"version":3,"file":"useMoney.cjs","sources":["../../src/useMoney.tsx"],"sourcesContent":["import {useMemo} from 'react';\nimport {useShop} from './ShopifyProvider.js';\nimport {CurrencyCode, MoneyV2} from './storefront-api-types.js';\n\nexport type UseMoneyValue = {\n /**\n * The currency code from the `MoneyV2` object.\n */\n currencyCode: CurrencyCode;\n /**\n * The name for the currency code, returned by `Intl.NumberFormat`.\n */\n currencyName?: string;\n /**\n * The currency symbol returned by `Intl.NumberFormat`.\n */\n currencySymbol?: string;\n /**\n * The currency narrow symbol returned by `Intl.NumberFormat`.\n */\n currencyNarrowSymbol?: string;\n /**\n * The localized amount, without any currency symbols or non-number types from the `Intl.NumberFormat.formatToParts` parts.\n */\n amount: string;\n /**\n * All parts returned by `Intl.NumberFormat.formatToParts`.\n */\n parts: Intl.NumberFormatPart[];\n /**\n * A string returned by `new Intl.NumberFormat` for the amount and currency code,\n * using the `locale` value in the [`LocalizationProvider` component](https://shopify.dev/api/hydrogen/components/localization/localizationprovider).\n */\n localizedString: string;\n /**\n * The `MoneyV2` object provided as an argument to the hook.\n */\n original: MoneyV2;\n /**\n * A string with trailing zeros removed from the fractional part, if any exist. If there are no trailing zeros, then the fractional part remains.\n * For example, `$640.00` turns into `$640`.\n * `$640.42` remains `$640.42`.\n */\n withoutTrailingZeros: string;\n /**\n * A string without currency and without trailing zeros removed from the fractional part, if any exist. If there are no trailing zeros, then the fractional part remains.\n * For example, `$640.00` turns into `640`.\n * `$640.42` turns into `640.42`.\n */\n withoutTrailingZerosAndCurrency: string;\n};\n\n/**\n * The `useMoney` hook takes a [MoneyV2 object](https://shopify.dev/api/storefront/reference/common-objects/moneyv2) and returns a\n * default-formatted string of the amount with the correct currency indicator, along with some of the parts provided by\n * [Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat).\n * Uses `locale` from `ShopifyProvider`\n */\nexport function useMoney(money: MoneyV2): UseMoneyValue {\n const {locale} = useShop();\n\n if (!locale) {\n throw new Error(\n `useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work`\n );\n }\n\n const amount = parseFloat(money.amount);\n\n const options = useMemo(\n () => ({\n style: 'currency',\n currency: money.currencyCode,\n }),\n [money.currencyCode]\n );\n\n const defaultFormatter = useLazyFormatter(locale, options);\n\n const nameFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'name',\n });\n\n const narrowSymbolFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'narrowSymbol',\n });\n\n const withoutTrailingZerosFormatter = useLazyFormatter(locale, {\n ...options,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const withoutCurrencyFormatter = useLazyFormatter(locale);\n\n const withoutTrailingZerosOrCurrencyFormatter = useLazyFormatter(locale, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const isPartCurrency = (part: Intl.NumberFormatPart) =>\n part.type === 'currency';\n\n // By wrapping these properties in functions, we only\n // create formatters if they are going to be used.\n const lazyFormatters = useMemo(\n () => ({\n original: () => money,\n currencyCode: () => money.currencyCode,\n\n localizedString: () => defaultFormatter().format(amount),\n\n parts: () => defaultFormatter().formatToParts(amount),\n\n withoutTrailingZeros: () =>\n amount % 1 === 0\n ? withoutTrailingZerosFormatter().format(amount)\n : defaultFormatter().format(amount),\n\n withoutTrailingZerosAndCurrency: () =>\n amount % 1 === 0\n ? withoutTrailingZerosOrCurrencyFormatter().format(amount)\n : withoutCurrencyFormatter().format(amount),\n\n currencyName: () =>\n nameFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode, // e.g. \"US dollars\"\n\n currencySymbol: () =>\n defaultFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode, // e.g. \"USD\"\n\n currencyNarrowSymbol: () =>\n narrowSymbolFormatter().formatToParts(amount).find(isPartCurrency)\n ?.value ?? '', // e.g. \"$\"\n\n amount: () =>\n defaultFormatter()\n .formatToParts(amount)\n .filter((part) =>\n ['decimal', 'fraction', 'group', 'integer', 'literal'].includes(\n part.type\n )\n )\n .map((part) => part.value)\n .join(''),\n }),\n [\n money,\n amount,\n nameFormatter,\n defaultFormatter,\n narrowSymbolFormatter,\n withoutCurrencyFormatter,\n withoutTrailingZerosFormatter,\n withoutTrailingZerosOrCurrencyFormatter,\n ]\n );\n\n // Call functions automatically when the properties are accessed\n // to keep these functions as an implementation detail.\n return useMemo(\n () =>\n new Proxy(lazyFormatters as unknown as UseMoneyValue, {\n get: (target, key) => Reflect.get(target, key)?.call(null),\n }),\n [lazyFormatters]\n );\n}\n\nfunction useLazyFormatter(locale: string, options?: Intl.NumberFormatOptions) {\n return useMemo(() => {\n let memoized: Intl.NumberFormat;\n return () => (memoized ??= new Intl.NumberFormat(locale, options));\n }, [locale, options]);\n}\n"],"names":["useMoney","money","locale","useShop","Error","amount","parseFloat","options","useMemo","style","currency","currencyCode","defaultFormatter","useLazyFormatter","nameFormatter","currencyDisplay","narrowSymbolFormatter","withoutTrailingZerosFormatter","minimumFractionDigits","maximumFractionDigits","withoutCurrencyFormatter","withoutTrailingZerosOrCurrencyFormatter","isPartCurrency","part","type","lazyFormatters","original","localizedString","format","parts","formatToParts","withoutTrailingZeros","withoutTrailingZerosAndCurrency","currencyName","find","value","currencySymbol","currencyNarrowSymbol","filter","includes","map","join","Proxy","get","target","key","Reflect","call","memoized","Intl","NumberFormat"],"mappings":";;;;AA0DO,SAASA,SAASC,OAA+B;AAChD,QAAA;AAAA,IAACC;AAAAA,MAAUC,gBAAjB,QAAA;AAEA,MAAI,CAACD,QAAQ;AACL,UAAA,IAAIE,MACP,sKADG;AAAA,EAGP;AAEKC,QAAAA,SAASC,WAAWL,MAAMI,MAAP;AAEnBE,QAAAA,UAAUC,MAAAA,QACd,OAAO;AAAA,IACLC,OAAO;AAAA,IACPC,UAAUT,MAAMU;AAAAA,EAElB,IAAA,CAACV,MAAMU,YAAP,CALqB;AAQjBC,QAAAA,mBAAmBC,iBAAiBX,QAAQK,OAAT;AAEnCO,QAAAA,gBAAgBD,iBAAiBX,QAAQ;AAAA,IAC7C,GAAGK;AAAAA,IACHQ,iBAAiB;AAAA,EAAA,CAFmB;AAKhCC,QAAAA,wBAAwBH,iBAAiBX,QAAQ;AAAA,IACrD,GAAGK;AAAAA,IACHQ,iBAAiB;AAAA,EAAA,CAF2B;AAKxCE,QAAAA,gCAAgCJ,iBAAiBX,QAAQ;AAAA,IAC7D,GAAGK;AAAAA,IACHW,uBAAuB;AAAA,IACvBC,uBAAuB;AAAA,EAAA,CAH6B;AAMhDC,QAAAA,2BAA2BP,iBAAiBX,MAAD;AAE3CmB,QAAAA,0CAA0CR,iBAAiBX,QAAQ;AAAA,IACvEgB,uBAAuB;AAAA,IACvBC,uBAAuB;AAAA,EAAA,CAFuC;AAKhE,QAAMG,iBAAiB,CAACC,SACtBA,KAAKC,SAAS;AAIVC,QAAAA,iBAAiBjB,MAAAA,QACrB,OAAO;AAAA,IACLkB,UAAU,MAAMzB;AAAAA,IAChBU,cAAc,MAAMV,MAAMU;AAAAA,IAE1BgB,iBAAiB,MAAMf,mBAAmBgB,OAAOvB,MAA1B;AAAA,IAEvBwB,OAAO,MAAMjB,mBAAmBkB,cAAczB,MAAjC;AAAA,IAEb0B,sBAAsB,MACpB1B,SAAS,MAAM,IACXY,8BAAAA,EAAgCW,OAAOvB,MAAvC,IACAO,mBAAmBgB,OAAOvB,MAA1B;AAAA,IAEN2B,iCAAiC,MAC/B3B,SAAS,MAAM,IACXgB,wCAAAA,EAA0CO,OAAOvB,MAAjD,IACAe,2BAA2BQ,OAAOvB,MAAlC;AAAA,IAEN4B,cAAc,MACZnB;;AAAAA,yCAAgBgB,cAAczB,MAA9B,EAAsC6B,KAAKZ,cAA3C,MAAAR,mBAA4DqB,UAA5DrB,YACAb,MAAMU;AAAAA;AAAAA,IAERyB,gBAAgB,MACdxB;;AAAAA,4CAAmBkB,cAAczB,MAAjC,EAAyC6B,KAAKZ,cAA9C,MAAAV,mBAA+DuB,UAA/DvB,YACAX,MAAMU;AAAAA;AAAAA,IAER0B,sBAAsB,MAAA;;AACpBrB,+CAAwBc,EAAAA,cAAczB,MAAtC,EAA8C6B,KAAKZ,cAAnD,MAAAN,mBACImB,UADJnB,YACa;AAAA;AAAA,IAEfX,QAAQ,MACNO,mBACGkB,cAAczB,MADjB,EAEGiC,OAAQf,CAAAA,SACP,CAAC,WAAW,YAAY,SAAS,WAAW,SAA5C,EAAuDgB,SACrDhB,KAAKC,IADP,CAHJ,EAOGgB,IAAKjB,CAAAA,SAASA,KAAKY,KAPtB,EAQGM,KAAK,EARR;AAAA,EA/BG,IAyCP,CACExC,OACAI,QACAS,eACAF,kBACAI,uBACAI,0BACAH,+BACAI,uCARF,CA1C4B;AAwD9B,SAAOb,cACL,MACE,IAAIkC,MAAMjB,gBAA4C;AAAA,IACpDkB,KAAK,CAACC,QAAQC;;AAAQC,2BAAQH,IAAIC,QAAQC,GAApB,MAAAC,mBAA0BC,KAAK;AAAA;AAAA,EAA/B,CADxB,GAGF,CAACtB,cAAD,CALY;AAOf;AAED,SAASZ,iBAAiBX,QAAgBK,SAAoC;AAC5E,SAAOC,cAAQ,MAAM;AACfwC,QAAAA;AACJ,WAAO,MAAOA,yCAAa,IAAIC,KAAKC,aAAahD,QAAQK,OAA9B;AAAA,EAAA,GAC1B,CAACL,QAAQK,OAAT,CAHW;AAIf;;"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { useShop } from "./ShopifyProvider.js";
|
|
3
|
+
function useMoney(money) {
|
|
4
|
+
const {
|
|
5
|
+
locale
|
|
6
|
+
} = useShop();
|
|
7
|
+
if (!locale) {
|
|
8
|
+
throw new Error(`useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work`);
|
|
9
|
+
}
|
|
10
|
+
const amount = parseFloat(money.amount);
|
|
11
|
+
const options = useMemo(() => ({
|
|
12
|
+
style: "currency",
|
|
13
|
+
currency: money.currencyCode
|
|
14
|
+
}), [money.currencyCode]);
|
|
15
|
+
const defaultFormatter = useLazyFormatter(locale, options);
|
|
16
|
+
const nameFormatter = useLazyFormatter(locale, {
|
|
17
|
+
...options,
|
|
18
|
+
currencyDisplay: "name"
|
|
19
|
+
});
|
|
20
|
+
const narrowSymbolFormatter = useLazyFormatter(locale, {
|
|
21
|
+
...options,
|
|
22
|
+
currencyDisplay: "narrowSymbol"
|
|
23
|
+
});
|
|
24
|
+
const withoutTrailingZerosFormatter = useLazyFormatter(locale, {
|
|
25
|
+
...options,
|
|
26
|
+
minimumFractionDigits: 0,
|
|
27
|
+
maximumFractionDigits: 0
|
|
28
|
+
});
|
|
29
|
+
const withoutCurrencyFormatter = useLazyFormatter(locale);
|
|
30
|
+
const withoutTrailingZerosOrCurrencyFormatter = useLazyFormatter(locale, {
|
|
31
|
+
minimumFractionDigits: 0,
|
|
32
|
+
maximumFractionDigits: 0
|
|
33
|
+
});
|
|
34
|
+
const isPartCurrency = (part) => part.type === "currency";
|
|
35
|
+
const lazyFormatters = useMemo(() => ({
|
|
36
|
+
original: () => money,
|
|
37
|
+
currencyCode: () => money.currencyCode,
|
|
38
|
+
localizedString: () => defaultFormatter().format(amount),
|
|
39
|
+
parts: () => defaultFormatter().formatToParts(amount),
|
|
40
|
+
withoutTrailingZeros: () => amount % 1 === 0 ? withoutTrailingZerosFormatter().format(amount) : defaultFormatter().format(amount),
|
|
41
|
+
withoutTrailingZerosAndCurrency: () => amount % 1 === 0 ? withoutTrailingZerosOrCurrencyFormatter().format(amount) : withoutCurrencyFormatter().format(amount),
|
|
42
|
+
currencyName: () => {
|
|
43
|
+
var _a, _b;
|
|
44
|
+
return (_b = (_a = nameFormatter().formatToParts(amount).find(isPartCurrency)) == null ? void 0 : _a.value) != null ? _b : money.currencyCode;
|
|
45
|
+
},
|
|
46
|
+
currencySymbol: () => {
|
|
47
|
+
var _a, _b;
|
|
48
|
+
return (_b = (_a = defaultFormatter().formatToParts(amount).find(isPartCurrency)) == null ? void 0 : _a.value) != null ? _b : money.currencyCode;
|
|
49
|
+
},
|
|
50
|
+
currencyNarrowSymbol: () => {
|
|
51
|
+
var _a, _b;
|
|
52
|
+
return (_b = (_a = narrowSymbolFormatter().formatToParts(amount).find(isPartCurrency)) == null ? void 0 : _a.value) != null ? _b : "";
|
|
53
|
+
},
|
|
54
|
+
amount: () => defaultFormatter().formatToParts(amount).filter((part) => ["decimal", "fraction", "group", "integer", "literal"].includes(part.type)).map((part) => part.value).join("")
|
|
55
|
+
}), [money, amount, nameFormatter, defaultFormatter, narrowSymbolFormatter, withoutCurrencyFormatter, withoutTrailingZerosFormatter, withoutTrailingZerosOrCurrencyFormatter]);
|
|
56
|
+
return useMemo(() => new Proxy(lazyFormatters, {
|
|
57
|
+
get: (target, key) => {
|
|
58
|
+
var _a;
|
|
59
|
+
return (_a = Reflect.get(target, key)) == null ? void 0 : _a.call(null);
|
|
60
|
+
}
|
|
61
|
+
}), [lazyFormatters]);
|
|
62
|
+
}
|
|
63
|
+
function useLazyFormatter(locale, options) {
|
|
64
|
+
return useMemo(() => {
|
|
65
|
+
let memoized;
|
|
66
|
+
return () => memoized != null ? memoized : memoized = new Intl.NumberFormat(locale, options);
|
|
67
|
+
}, [locale, options]);
|
|
68
|
+
}
|
|
69
|
+
export {
|
|
70
|
+
useMoney
|
|
71
|
+
};
|
|
72
|
+
//# sourceMappingURL=useMoney.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMoney.js","sources":["../../src/useMoney.tsx"],"sourcesContent":["import {useMemo} from 'react';\nimport {useShop} from './ShopifyProvider.js';\nimport {CurrencyCode, MoneyV2} from './storefront-api-types.js';\n\nexport type UseMoneyValue = {\n /**\n * The currency code from the `MoneyV2` object.\n */\n currencyCode: CurrencyCode;\n /**\n * The name for the currency code, returned by `Intl.NumberFormat`.\n */\n currencyName?: string;\n /**\n * The currency symbol returned by `Intl.NumberFormat`.\n */\n currencySymbol?: string;\n /**\n * The currency narrow symbol returned by `Intl.NumberFormat`.\n */\n currencyNarrowSymbol?: string;\n /**\n * The localized amount, without any currency symbols or non-number types from the `Intl.NumberFormat.formatToParts` parts.\n */\n amount: string;\n /**\n * All parts returned by `Intl.NumberFormat.formatToParts`.\n */\n parts: Intl.NumberFormatPart[];\n /**\n * A string returned by `new Intl.NumberFormat` for the amount and currency code,\n * using the `locale` value in the [`LocalizationProvider` component](https://shopify.dev/api/hydrogen/components/localization/localizationprovider).\n */\n localizedString: string;\n /**\n * The `MoneyV2` object provided as an argument to the hook.\n */\n original: MoneyV2;\n /**\n * A string with trailing zeros removed from the fractional part, if any exist. If there are no trailing zeros, then the fractional part remains.\n * For example, `$640.00` turns into `$640`.\n * `$640.42` remains `$640.42`.\n */\n withoutTrailingZeros: string;\n /**\n * A string without currency and without trailing zeros removed from the fractional part, if any exist. If there are no trailing zeros, then the fractional part remains.\n * For example, `$640.00` turns into `640`.\n * `$640.42` turns into `640.42`.\n */\n withoutTrailingZerosAndCurrency: string;\n};\n\n/**\n * The `useMoney` hook takes a [MoneyV2 object](https://shopify.dev/api/storefront/reference/common-objects/moneyv2) and returns a\n * default-formatted string of the amount with the correct currency indicator, along with some of the parts provided by\n * [Intl.NumberFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat).\n * Uses `locale` from `ShopifyProvider`\n */\nexport function useMoney(money: MoneyV2): UseMoneyValue {\n const {locale} = useShop();\n\n if (!locale) {\n throw new Error(\n `useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work`\n );\n }\n\n const amount = parseFloat(money.amount);\n\n const options = useMemo(\n () => ({\n style: 'currency',\n currency: money.currencyCode,\n }),\n [money.currencyCode]\n );\n\n const defaultFormatter = useLazyFormatter(locale, options);\n\n const nameFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'name',\n });\n\n const narrowSymbolFormatter = useLazyFormatter(locale, {\n ...options,\n currencyDisplay: 'narrowSymbol',\n });\n\n const withoutTrailingZerosFormatter = useLazyFormatter(locale, {\n ...options,\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const withoutCurrencyFormatter = useLazyFormatter(locale);\n\n const withoutTrailingZerosOrCurrencyFormatter = useLazyFormatter(locale, {\n minimumFractionDigits: 0,\n maximumFractionDigits: 0,\n });\n\n const isPartCurrency = (part: Intl.NumberFormatPart) =>\n part.type === 'currency';\n\n // By wrapping these properties in functions, we only\n // create formatters if they are going to be used.\n const lazyFormatters = useMemo(\n () => ({\n original: () => money,\n currencyCode: () => money.currencyCode,\n\n localizedString: () => defaultFormatter().format(amount),\n\n parts: () => defaultFormatter().formatToParts(amount),\n\n withoutTrailingZeros: () =>\n amount % 1 === 0\n ? withoutTrailingZerosFormatter().format(amount)\n : defaultFormatter().format(amount),\n\n withoutTrailingZerosAndCurrency: () =>\n amount % 1 === 0\n ? withoutTrailingZerosOrCurrencyFormatter().format(amount)\n : withoutCurrencyFormatter().format(amount),\n\n currencyName: () =>\n nameFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode, // e.g. \"US dollars\"\n\n currencySymbol: () =>\n defaultFormatter().formatToParts(amount).find(isPartCurrency)?.value ??\n money.currencyCode, // e.g. \"USD\"\n\n currencyNarrowSymbol: () =>\n narrowSymbolFormatter().formatToParts(amount).find(isPartCurrency)\n ?.value ?? '', // e.g. \"$\"\n\n amount: () =>\n defaultFormatter()\n .formatToParts(amount)\n .filter((part) =>\n ['decimal', 'fraction', 'group', 'integer', 'literal'].includes(\n part.type\n )\n )\n .map((part) => part.value)\n .join(''),\n }),\n [\n money,\n amount,\n nameFormatter,\n defaultFormatter,\n narrowSymbolFormatter,\n withoutCurrencyFormatter,\n withoutTrailingZerosFormatter,\n withoutTrailingZerosOrCurrencyFormatter,\n ]\n );\n\n // Call functions automatically when the properties are accessed\n // to keep these functions as an implementation detail.\n return useMemo(\n () =>\n new Proxy(lazyFormatters as unknown as UseMoneyValue, {\n get: (target, key) => Reflect.get(target, key)?.call(null),\n }),\n [lazyFormatters]\n );\n}\n\nfunction useLazyFormatter(locale: string, options?: Intl.NumberFormatOptions) {\n return useMemo(() => {\n let memoized: Intl.NumberFormat;\n return () => (memoized ??= new Intl.NumberFormat(locale, options));\n }, [locale, options]);\n}\n"],"names":["useMoney","money","locale","useShop","Error","amount","parseFloat","options","useMemo","style","currency","currencyCode","defaultFormatter","useLazyFormatter","nameFormatter","currencyDisplay","narrowSymbolFormatter","withoutTrailingZerosFormatter","minimumFractionDigits","maximumFractionDigits","withoutCurrencyFormatter","withoutTrailingZerosOrCurrencyFormatter","isPartCurrency","part","type","lazyFormatters","original","localizedString","format","parts","formatToParts","withoutTrailingZeros","withoutTrailingZerosAndCurrency","currencyName","find","value","currencySymbol","currencyNarrowSymbol","filter","includes","map","join","Proxy","get","target","key","Reflect","call","memoized","Intl","NumberFormat"],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const
|
|
4
|
-
const CartProvider = require("./CartProvider.
|
|
5
|
-
const ProductProvider = require("./ProductProvider.
|
|
6
|
-
const BaseButton = require("./BaseButton.
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const CartProvider = require("./CartProvider.cjs");
|
|
5
|
+
const ProductProvider = require("./ProductProvider.cjs");
|
|
6
|
+
const BaseButton = require("./BaseButton.cjs");
|
|
7
7
|
const jsxRuntime = require("react/jsx-runtime");
|
|
8
8
|
function AddToCartButton(props) {
|
|
9
9
|
var _a;
|
|
10
|
-
const [addingItem, setAddingItem] =
|
|
10
|
+
const [addingItem, setAddingItem] = react.useState(false);
|
|
11
11
|
const {
|
|
12
12
|
variantId: explicitVariantId,
|
|
13
13
|
quantity = 1,
|
|
@@ -27,12 +27,12 @@ function AddToCartButton(props) {
|
|
|
27
27
|
} = ProductProvider.useProduct();
|
|
28
28
|
const variantId = (_a = explicitVariantId != null ? explicitVariantId : selectedVariant == null ? void 0 : selectedVariant.id) != null ? _a : "";
|
|
29
29
|
const disabled = explicitVariantId === null || variantId === "" || selectedVariant === null || addingItem || passthroughProps.disabled;
|
|
30
|
-
|
|
30
|
+
react.useEffect(() => {
|
|
31
31
|
if (addingItem && status === "idle") {
|
|
32
32
|
setAddingItem(false);
|
|
33
33
|
}
|
|
34
34
|
}, [status, addingItem]);
|
|
35
|
-
const handleAddItem =
|
|
35
|
+
const handleAddItem = react.useCallback(() => {
|
|
36
36
|
setAddingItem(true);
|
|
37
37
|
linesAdd([{
|
|
38
38
|
quantity,
|
|
@@ -67,4 +67,4 @@ function AddToCartButton(props) {
|
|
|
67
67
|
});
|
|
68
68
|
}
|
|
69
69
|
exports.AddToCartButton = AddToCartButton;
|
|
70
|
-
//# sourceMappingURL=AddToCartButton.
|
|
70
|
+
//# sourceMappingURL=AddToCartButton.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddToCartButton.
|
|
1
|
+
{"version":3,"file":"AddToCartButton.cjs","sources":["../../src/AddToCartButton.tsx"],"sourcesContent":["import {useCallback, useEffect, useState} from 'react';\n\nimport {useCart} from './CartProvider.js';\nimport {useProduct} from './ProductProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ninterface AddToCartButtonProps {\n /** An array of cart line attributes that belong to the item being added to the cart. */\n attributes?: {\n key: string;\n value: string;\n }[];\n /** The ID of the variant. */\n variantId?: string | null;\n /** The item quantity. */\n quantity?: number;\n /** The text that is announced by the screen reader when the item is being added to the cart. Used for accessibility purposes only and not displayed on the page. */\n accessibleAddingToCartLabel?: string;\n /** The selling plan ID of the subscription variant */\n sellingPlanId?: string;\n}\n\n/**\n * The `AddToCartButton` component renders a button that adds an item to the cart when pressed.\n * It must be a descendent of the `CartProvider` component.\n */\nexport function AddToCartButton<AsType extends React.ElementType = 'button'>(\n props: AddToCartButtonProps & BaseButtonProps<AsType>\n) {\n const [addingItem, setAddingItem] = useState<boolean>(false);\n const {\n variantId: explicitVariantId,\n quantity = 1,\n attributes,\n sellingPlanId,\n onClick,\n children,\n accessibleAddingToCartLabel,\n ...passthroughProps\n } = props;\n const {status, linesAdd} = useCart();\n const {selectedVariant} = useProduct();\n const variantId = explicitVariantId ?? selectedVariant?.id ?? '';\n const disabled =\n explicitVariantId === null ||\n variantId === '' ||\n selectedVariant === null ||\n addingItem ||\n passthroughProps.disabled;\n\n useEffect(() => {\n if (addingItem && status === 'idle') {\n setAddingItem(false);\n }\n }, [status, addingItem]);\n\n const handleAddItem = useCallback(() => {\n setAddingItem(true);\n linesAdd([\n {\n quantity,\n merchandiseId: variantId || '',\n attributes,\n sellingPlanId,\n },\n ]);\n }, [linesAdd, quantity, variantId, attributes, sellingPlanId]);\n\n return (\n <>\n <BaseButton\n {...passthroughProps}\n disabled={disabled}\n onClick={onClick}\n defaultOnClick={handleAddItem}\n >\n {children}\n </BaseButton>\n {accessibleAddingToCartLabel ? (\n <p\n style={{\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: '0',\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n borderWidth: '0',\n }}\n role=\"alert\"\n aria-live=\"assertive\"\n >\n {addingItem ? accessibleAddingToCartLabel : null}\n </p>\n ) : null}\n </>\n );\n}\n"],"names":["AddToCartButton","props","addingItem","setAddingItem","useState","variantId","explicitVariantId","quantity","attributes","sellingPlanId","onClick","children","accessibleAddingToCartLabel","passthroughProps","status","linesAdd","useCart","selectedVariant","useProduct","id","disabled","useEffect","handleAddItem","useCallback","merchandiseId","_Fragment","_jsx","BaseButton","position","width","height","padding","margin","overflow","clip","whiteSpace","borderWidth"],"mappings":";;;;;;;AA0BO,SAASA,gBACdC,OACA;;AACA,QAAM,CAACC,YAAYC,aAAb,IAA8BC,eAAkB,KAAV;AACtC,QAAA;AAAA,IACJC,WAAWC;AAAAA,IACXC,WAAW;AAAA,IACXC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDZ,IAAAA;AACE,QAAA;AAAA,IAACa;AAAAA,IAAQC;AAAAA,MAAYC,aAA3B,QAAA;AACM,QAAA;AAAA,IAACC;AAAAA,MAAmBC,gBAA1B,WAAA;AACMb,QAAAA,aAAYC,qDAAqBW,mDAAiBE,OAAtCb,YAA4C;AACxDc,QAAAA,WACJd,sBAAsB,QACtBD,cAAc,MACdY,oBAAoB,QACpBf,cACAW,iBAAiBO;AAEnBC,QAAAA,UAAU,MAAM;AACVnB,QAAAA,cAAcY,WAAW,QAAQ;AACnCX,oBAAc,KAAD;AAAA,IACd;AAAA,EAAA,GACA,CAACW,QAAQZ,UAAT,CAJM;AAMHoB,QAAAA,gBAAgBC,MAAAA,YAAY,MAAM;AACtCpB,kBAAc,IAAD;AACbY,aAAS,CACP;AAAA,MACER;AAAAA,MACAiB,eAAenB,aAAa;AAAA,MAC5BG;AAAAA,MACAC;AAAAA,IALK,CAAA,CAAD;AAAA,EAAA,GAQP,CAACM,UAAUR,UAAUF,WAAWG,YAAYC,aAA5C,CAV8B;AAYjC,yCACEgB,WAAAA,UAAA;AAAA,IAAA,UACE,CAAAC,2BAAA,IAACC,uBAAD;AAAA,MAAA,GACMd;AAAAA,MACJ;AAAA,MACA;AAAA,MACA,gBAAgBS;AAAAA,MAJlB;AAAA,IAAA,CADF,GASGV,8BACCc,2BAAA,IAAA,KAAA;AAAA,MACE,OAAO;AAAA,QACLE,UAAU;AAAA,QACVC,OAAO;AAAA,QACPC,QAAQ;AAAA,QACRC,SAAS;AAAA,QACTC,QAAQ;AAAA,QACRC,UAAU;AAAA,QACVC,MAAM;AAAA,QACNC,YAAY;AAAA,QACZC,aAAa;AAAA,MATR;AAAA,MAWP,MAAK;AAAA,MACL,aAAU;AAAA,MAbZ,UAeGlC,aAAaU,8BAA8B;AAAA,IAf9C,CAAA,IAiBE,IA3BN;AAAA,EAAA,CADF;AA+BD;;"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { useState, useEffect, useCallback } from "react";
|
|
2
|
+
import { useCart } from "./CartProvider.js";
|
|
3
|
+
import { useProduct } from "./ProductProvider.js";
|
|
4
|
+
import { BaseButton } from "./BaseButton.js";
|
|
5
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
6
|
+
function AddToCartButton(props) {
|
|
7
|
+
var _a;
|
|
8
|
+
const [addingItem, setAddingItem] = useState(false);
|
|
9
|
+
const {
|
|
10
|
+
variantId: explicitVariantId,
|
|
11
|
+
quantity = 1,
|
|
12
|
+
attributes,
|
|
13
|
+
sellingPlanId,
|
|
14
|
+
onClick,
|
|
15
|
+
children,
|
|
16
|
+
accessibleAddingToCartLabel,
|
|
17
|
+
...passthroughProps
|
|
18
|
+
} = props;
|
|
19
|
+
const {
|
|
20
|
+
status,
|
|
21
|
+
linesAdd
|
|
22
|
+
} = useCart();
|
|
23
|
+
const {
|
|
24
|
+
selectedVariant
|
|
25
|
+
} = useProduct();
|
|
26
|
+
const variantId = (_a = explicitVariantId != null ? explicitVariantId : selectedVariant == null ? void 0 : selectedVariant.id) != null ? _a : "";
|
|
27
|
+
const disabled = explicitVariantId === null || variantId === "" || selectedVariant === null || addingItem || passthroughProps.disabled;
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (addingItem && status === "idle") {
|
|
30
|
+
setAddingItem(false);
|
|
31
|
+
}
|
|
32
|
+
}, [status, addingItem]);
|
|
33
|
+
const handleAddItem = useCallback(() => {
|
|
34
|
+
setAddingItem(true);
|
|
35
|
+
linesAdd([{
|
|
36
|
+
quantity,
|
|
37
|
+
merchandiseId: variantId || "",
|
|
38
|
+
attributes,
|
|
39
|
+
sellingPlanId
|
|
40
|
+
}]);
|
|
41
|
+
}, [linesAdd, quantity, variantId, attributes, sellingPlanId]);
|
|
42
|
+
return /* @__PURE__ */ jsxs(Fragment, {
|
|
43
|
+
children: [/* @__PURE__ */ jsx(BaseButton, {
|
|
44
|
+
...passthroughProps,
|
|
45
|
+
disabled,
|
|
46
|
+
onClick,
|
|
47
|
+
defaultOnClick: handleAddItem,
|
|
48
|
+
children
|
|
49
|
+
}), accessibleAddingToCartLabel ? /* @__PURE__ */ jsx("p", {
|
|
50
|
+
style: {
|
|
51
|
+
position: "absolute",
|
|
52
|
+
width: "1px",
|
|
53
|
+
height: "1px",
|
|
54
|
+
padding: "0",
|
|
55
|
+
margin: "-1px",
|
|
56
|
+
overflow: "hidden",
|
|
57
|
+
clip: "rect(0, 0, 0, 0)",
|
|
58
|
+
whiteSpace: "nowrap",
|
|
59
|
+
borderWidth: "0"
|
|
60
|
+
},
|
|
61
|
+
role: "alert",
|
|
62
|
+
"aria-live": "assertive",
|
|
63
|
+
children: addingItem ? accessibleAddingToCartLabel : null
|
|
64
|
+
}) : null]
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
export {
|
|
68
|
+
AddToCartButton
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=AddToCartButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddToCartButton.js","sources":["../../src/AddToCartButton.tsx"],"sourcesContent":["import {useCallback, useEffect, useState} from 'react';\n\nimport {useCart} from './CartProvider.js';\nimport {useProduct} from './ProductProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ninterface AddToCartButtonProps {\n /** An array of cart line attributes that belong to the item being added to the cart. */\n attributes?: {\n key: string;\n value: string;\n }[];\n /** The ID of the variant. */\n variantId?: string | null;\n /** The item quantity. */\n quantity?: number;\n /** The text that is announced by the screen reader when the item is being added to the cart. Used for accessibility purposes only and not displayed on the page. */\n accessibleAddingToCartLabel?: string;\n /** The selling plan ID of the subscription variant */\n sellingPlanId?: string;\n}\n\n/**\n * The `AddToCartButton` component renders a button that adds an item to the cart when pressed.\n * It must be a descendent of the `CartProvider` component.\n */\nexport function AddToCartButton<AsType extends React.ElementType = 'button'>(\n props: AddToCartButtonProps & BaseButtonProps<AsType>\n) {\n const [addingItem, setAddingItem] = useState<boolean>(false);\n const {\n variantId: explicitVariantId,\n quantity = 1,\n attributes,\n sellingPlanId,\n onClick,\n children,\n accessibleAddingToCartLabel,\n ...passthroughProps\n } = props;\n const {status, linesAdd} = useCart();\n const {selectedVariant} = useProduct();\n const variantId = explicitVariantId ?? selectedVariant?.id ?? '';\n const disabled =\n explicitVariantId === null ||\n variantId === '' ||\n selectedVariant === null ||\n addingItem ||\n passthroughProps.disabled;\n\n useEffect(() => {\n if (addingItem && status === 'idle') {\n setAddingItem(false);\n }\n }, [status, addingItem]);\n\n const handleAddItem = useCallback(() => {\n setAddingItem(true);\n linesAdd([\n {\n quantity,\n merchandiseId: variantId || '',\n attributes,\n sellingPlanId,\n },\n ]);\n }, [linesAdd, quantity, variantId, attributes, sellingPlanId]);\n\n return (\n <>\n <BaseButton\n {...passthroughProps}\n disabled={disabled}\n onClick={onClick}\n defaultOnClick={handleAddItem}\n >\n {children}\n </BaseButton>\n {accessibleAddingToCartLabel ? (\n <p\n style={{\n position: 'absolute',\n width: '1px',\n height: '1px',\n padding: '0',\n margin: '-1px',\n overflow: 'hidden',\n clip: 'rect(0, 0, 0, 0)',\n whiteSpace: 'nowrap',\n borderWidth: '0',\n }}\n role=\"alert\"\n aria-live=\"assertive\"\n >\n {addingItem ? accessibleAddingToCartLabel : null}\n </p>\n ) : null}\n </>\n );\n}\n"],"names":["AddToCartButton","props","addingItem","setAddingItem","useState","variantId","explicitVariantId","quantity","attributes","sellingPlanId","onClick","children","accessibleAddingToCartLabel","passthroughProps","status","linesAdd","useCart","selectedVariant","useProduct","id","disabled","useEffect","handleAddItem","useCallback","merchandiseId","_Fragment","_jsx","position","width","height","padding","margin","overflow","clip","whiteSpace","borderWidth"],"mappings":";;;;;AA0BO,SAASA,gBACdC,OACA;;AACA,QAAM,CAACC,YAAYC,aAAb,IAA8BC,SAAkB,KAAV;AACtC,QAAA;AAAA,IACJC,WAAWC;AAAAA,IACXC,WAAW;AAAA,IACXC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDZ,IAAAA;AACE,QAAA;AAAA,IAACa;AAAAA,IAAQC;AAAAA,MAAYC,QAA3B;AACM,QAAA;AAAA,IAACC;AAAAA,MAAmBC,WAA1B;AACMb,QAAAA,aAAYC,qDAAqBW,mDAAiBE,OAAtCb,YAA4C;AACxDc,QAAAA,WACJd,sBAAsB,QACtBD,cAAc,MACdY,oBAAoB,QACpBf,cACAW,iBAAiBO;AAEnBC,YAAU,MAAM;AACVnB,QAAAA,cAAcY,WAAW,QAAQ;AACnCX,oBAAc,KAAD;AAAA,IACd;AAAA,EAAA,GACA,CAACW,QAAQZ,UAAT,CAJM;AAMHoB,QAAAA,gBAAgBC,YAAY,MAAM;AACtCpB,kBAAc,IAAD;AACbY,aAAS,CACP;AAAA,MACER;AAAAA,MACAiB,eAAenB,aAAa;AAAA,MAC5BG;AAAAA,MACAC;AAAAA,IALK,CAAA,CAAD;AAAA,EAAA,GAQP,CAACM,UAAUR,UAAUF,WAAWG,YAAYC,aAA5C,CAV8B;AAYjC,8BACEgB,UAAA;AAAA,IAAA,UACE,CAAAC,oBAAC,YAAD;AAAA,MAAA,GACMb;AAAAA,MACJ;AAAA,MACA;AAAA,MACA,gBAAgBS;AAAAA,MAJlB;AAAA,IAAA,CADF,GASGV,8BACCc,oBAAA,KAAA;AAAA,MACE,OAAO;AAAA,QACLC,UAAU;AAAA,QACVC,OAAO;AAAA,QACPC,QAAQ;AAAA,QACRC,SAAS;AAAA,QACTC,QAAQ;AAAA,QACRC,UAAU;AAAA,QACVC,MAAM;AAAA,QACNC,YAAY;AAAA,QACZC,aAAa;AAAA,MATR;AAAA,MAWP,MAAK;AAAA,MACL,aAAU;AAAA,MAbZ,UAeGjC,aAAaU,8BAA8B;AAAA,IAf9C,CAAA,IAiBE,IA3BN;AAAA,EAAA,CADF;AA+BD;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const
|
|
3
|
+
const react = require("react");
|
|
4
4
|
const jsxRuntime = require("react/jsx-runtime");
|
|
5
5
|
function BaseButton(props) {
|
|
6
6
|
const {
|
|
@@ -11,7 +11,7 @@ function BaseButton(props) {
|
|
|
11
11
|
buttonRef,
|
|
12
12
|
...passthroughProps
|
|
13
13
|
} = props;
|
|
14
|
-
const handleOnClick =
|
|
14
|
+
const handleOnClick = react.useCallback((event) => {
|
|
15
15
|
if (onClick) {
|
|
16
16
|
const clickShouldContinue = onClick(event);
|
|
17
17
|
if (typeof clickShouldContinue === "boolean" && clickShouldContinue === false || (event == null ? void 0 : event.defaultPrevented))
|
|
@@ -28,4 +28,4 @@ function BaseButton(props) {
|
|
|
28
28
|
});
|
|
29
29
|
}
|
|
30
30
|
exports.BaseButton = BaseButton;
|
|
31
|
-
//# sourceMappingURL=BaseButton.
|
|
31
|
+
//# sourceMappingURL=BaseButton.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseButton.
|
|
1
|
+
{"version":3,"file":"BaseButton.cjs","sources":["../../src/BaseButton.tsx"],"sourcesContent":["import {ReactNode, Ref, useCallback} from 'react';\n\nexport interface CustomBaseButtonProps<AsType> {\n /** Provide a React element or component to render as the underlying button. Note: for accessibility compliance, almost always you should use a `button` element, or a component that renders an underlying button. */\n as?: AsType;\n /** Any ReactNode elements. */\n children: ReactNode;\n /** Click event handler. Default behaviour triggers unless prevented */\n onClick?: (\n event?: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => void | boolean;\n /** A default onClick behavior */\n defaultOnClick?: (\n event?: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => void | boolean;\n /** A ref to the underlying button */\n buttonRef?: Ref<HTMLButtonElement>;\n}\n\nexport type BaseButtonProps<AsType extends React.ElementType> =\n CustomBaseButtonProps<AsType> &\n Omit<\n React.ComponentPropsWithoutRef<AsType>,\n keyof CustomBaseButtonProps<AsType>\n >;\n\nexport function BaseButton<AsType extends React.ElementType = 'button'>(\n props: BaseButtonProps<AsType>\n) {\n const {\n as,\n onClick,\n defaultOnClick,\n children,\n buttonRef,\n ...passthroughProps\n } = props;\n\n const handleOnClick = useCallback(\n (event?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n if (onClick) {\n const clickShouldContinue = onClick(event);\n if (\n (typeof clickShouldContinue === 'boolean' &&\n clickShouldContinue === false) ||\n event?.defaultPrevented\n )\n return;\n }\n\n defaultOnClick?.(event);\n },\n [defaultOnClick, onClick]\n );\n\n const Component = as || 'button';\n\n return (\n <Component ref={buttonRef} onClick={handleOnClick} {...passthroughProps}>\n {children}\n </Component>\n );\n}\n"],"names":["BaseButton","props","as","onClick","defaultOnClick","children","buttonRef","passthroughProps","handleOnClick","useCallback","event","clickShouldContinue","defaultPrevented","Component"],"mappings":";;;;AA0BO,SAASA,WACdC,OACA;AACM,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDN,IAAAA;AAEEO,QAAAA,gBAAgBC,kBACpB,CAACC,UAA4D;AAC3D,QAAIP,SAAS;AACLQ,YAAAA,sBAAsBR,QAAQO,KAAD;AACnC,UACG,OAAOC,wBAAwB,aAC9BA,wBAAwB,UAC1BD,+BAAOE;AAEP;AAAA,IACH;AAEDR,qDAAiBM;AAAAA,EAAH,GAEhB,CAACN,gBAAgBD,OAAjB,CAd+B;AAiBjC,QAAMU,YAAYX,MAAM;AAExB,wCACG,WAAD;AAAA,IAAW,KAAKI;AAAAA,IAAW,SAASE;AAAAA,IAApC,GAAuDD;AAAAA,IAAvD;AAAA,EAAA,CADF;AAKD;;"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
function BaseButton(props) {
|
|
4
|
+
const {
|
|
5
|
+
as,
|
|
6
|
+
onClick,
|
|
7
|
+
defaultOnClick,
|
|
8
|
+
children,
|
|
9
|
+
buttonRef,
|
|
10
|
+
...passthroughProps
|
|
11
|
+
} = props;
|
|
12
|
+
const handleOnClick = useCallback((event) => {
|
|
13
|
+
if (onClick) {
|
|
14
|
+
const clickShouldContinue = onClick(event);
|
|
15
|
+
if (typeof clickShouldContinue === "boolean" && clickShouldContinue === false || (event == null ? void 0 : event.defaultPrevented))
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
defaultOnClick == null ? void 0 : defaultOnClick(event);
|
|
19
|
+
}, [defaultOnClick, onClick]);
|
|
20
|
+
const Component = as || "button";
|
|
21
|
+
return /* @__PURE__ */ jsx(Component, {
|
|
22
|
+
ref: buttonRef,
|
|
23
|
+
onClick: handleOnClick,
|
|
24
|
+
...passthroughProps,
|
|
25
|
+
children
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
export {
|
|
29
|
+
BaseButton
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=BaseButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseButton.js","sources":["../../src/BaseButton.tsx"],"sourcesContent":["import {ReactNode, Ref, useCallback} from 'react';\n\nexport interface CustomBaseButtonProps<AsType> {\n /** Provide a React element or component to render as the underlying button. Note: for accessibility compliance, almost always you should use a `button` element, or a component that renders an underlying button. */\n as?: AsType;\n /** Any ReactNode elements. */\n children: ReactNode;\n /** Click event handler. Default behaviour triggers unless prevented */\n onClick?: (\n event?: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => void | boolean;\n /** A default onClick behavior */\n defaultOnClick?: (\n event?: React.MouseEvent<HTMLButtonElement, MouseEvent>\n ) => void | boolean;\n /** A ref to the underlying button */\n buttonRef?: Ref<HTMLButtonElement>;\n}\n\nexport type BaseButtonProps<AsType extends React.ElementType> =\n CustomBaseButtonProps<AsType> &\n Omit<\n React.ComponentPropsWithoutRef<AsType>,\n keyof CustomBaseButtonProps<AsType>\n >;\n\nexport function BaseButton<AsType extends React.ElementType = 'button'>(\n props: BaseButtonProps<AsType>\n) {\n const {\n as,\n onClick,\n defaultOnClick,\n children,\n buttonRef,\n ...passthroughProps\n } = props;\n\n const handleOnClick = useCallback(\n (event?: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n if (onClick) {\n const clickShouldContinue = onClick(event);\n if (\n (typeof clickShouldContinue === 'boolean' &&\n clickShouldContinue === false) ||\n event?.defaultPrevented\n )\n return;\n }\n\n defaultOnClick?.(event);\n },\n [defaultOnClick, onClick]\n );\n\n const Component = as || 'button';\n\n return (\n <Component ref={buttonRef} onClick={handleOnClick} {...passthroughProps}>\n {children}\n </Component>\n );\n}\n"],"names":["BaseButton","props","as","onClick","defaultOnClick","children","buttonRef","passthroughProps","handleOnClick","useCallback","event","clickShouldContinue","defaultPrevented","Component"],"mappings":";;AA0BO,SAASA,WACdC,OACA;AACM,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDN,IAAAA;AAEEO,QAAAA,gBAAgBC,YACpB,CAACC,UAA4D;AAC3D,QAAIP,SAAS;AACLQ,YAAAA,sBAAsBR,QAAQO,KAAD;AACnC,UACG,OAAOC,wBAAwB,aAC9BA,wBAAwB,UAC1BD,+BAAOE;AAEP;AAAA,IACH;AAEDR,qDAAiBM;AAAAA,EAAH,GAEhB,CAACN,gBAAgBD,OAAjB,CAd+B;AAiBjC,QAAMU,YAAYX,MAAM;AAExB,6BACG,WAAD;AAAA,IAAW,KAAKI;AAAAA,IAAW,SAASE;AAAAA,IAApC,GAAuDD;AAAAA,IAAvD;AAAA,EAAA,CADF;AAKD;"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const
|
|
4
|
-
const CartProvider = require("./CartProvider.
|
|
5
|
-
const BaseButton = require("./BaseButton.
|
|
3
|
+
const react = require("react");
|
|
4
|
+
const CartProvider = require("./CartProvider.cjs");
|
|
5
|
+
const BaseButton = require("./BaseButton.cjs");
|
|
6
6
|
const jsxRuntime = require("react/jsx-runtime");
|
|
7
7
|
function BuyNowButton(props) {
|
|
8
8
|
const {
|
|
9
9
|
cartCreate,
|
|
10
10
|
checkoutUrl
|
|
11
11
|
} = CartProvider.useCart();
|
|
12
|
-
const [loading, setLoading] =
|
|
12
|
+
const [loading, setLoading] = react.useState(false);
|
|
13
13
|
const {
|
|
14
14
|
quantity,
|
|
15
15
|
variantId,
|
|
@@ -18,12 +18,12 @@ function BuyNowButton(props) {
|
|
|
18
18
|
children,
|
|
19
19
|
...passthroughProps
|
|
20
20
|
} = props;
|
|
21
|
-
|
|
21
|
+
react.useEffect(() => {
|
|
22
22
|
if (checkoutUrl) {
|
|
23
23
|
window.location.href = checkoutUrl;
|
|
24
24
|
}
|
|
25
25
|
}, [checkoutUrl]);
|
|
26
|
-
const handleBuyNow =
|
|
26
|
+
const handleBuyNow = react.useCallback(() => {
|
|
27
27
|
setLoading(true);
|
|
28
28
|
cartCreate({
|
|
29
29
|
lines: [{
|
|
@@ -42,4 +42,4 @@ function BuyNowButton(props) {
|
|
|
42
42
|
});
|
|
43
43
|
}
|
|
44
44
|
exports.BuyNowButton = BuyNowButton;
|
|
45
|
-
//# sourceMappingURL=BuyNowButton.
|
|
45
|
+
//# sourceMappingURL=BuyNowButton.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuyNowButton.
|
|
1
|
+
{"version":3,"file":"BuyNowButton.cjs","sources":["../../src/BuyNowButton.tsx"],"sourcesContent":["import {useEffect, useState, useCallback} from 'react';\nimport {useCart} from './CartProvider.js';\nimport {BaseButton, BaseButtonProps} from './BaseButton.js';\n\ninterface BuyNowButtonProps {\n /** The item quantity. Defaults to 1. */\n quantity?: number;\n /** The ID of the variant. */\n variantId: string;\n /** An array of cart line attributes that belong to the item being added to the cart. */\n attributes?: {\n key: string;\n value: string;\n }[];\n}\n\n/** The `BuyNowButton` component renders a button that adds an item to the cart and redirects the customer to checkout. */\nexport function BuyNowButton<AsType extends React.ElementType = 'button'>(\n props: BuyNowButtonProps & BaseButtonProps<AsType>\n) {\n const {cartCreate, checkoutUrl} = useCart();\n const [loading, setLoading] = useState<boolean>(false);\n\n const {\n quantity,\n variantId,\n onClick,\n attributes,\n children,\n ...passthroughProps\n } = props;\n\n useEffect(() => {\n if (checkoutUrl) {\n window.location.href = checkoutUrl;\n }\n }, [checkoutUrl]);\n\n const handleBuyNow = useCallback(() => {\n setLoading(true);\n cartCreate({\n lines: [\n {\n quantity: quantity ?? 1,\n merchandiseId: variantId,\n attributes,\n },\n ],\n });\n }, [cartCreate, quantity, variantId, attributes]);\n\n return (\n <BaseButton\n disabled={loading ?? passthroughProps.disabled}\n {...passthroughProps}\n onClick={onClick}\n defaultOnClick={handleBuyNow}\n >\n {children}\n </BaseButton>\n );\n}\n"],"names":["BuyNowButton","props","cartCreate","checkoutUrl","useCart","loading","setLoading","useState","quantity","variantId","onClick","attributes","children","passthroughProps","useEffect","window","location","href","handleBuyNow","useCallback","lines","merchandiseId","BaseButton","disabled"],"mappings":";;;;;;AAiBO,SAASA,aACdC,OACA;AACM,QAAA;AAAA,IAACC;AAAAA,IAAYC;AAAAA,MAAeC,aAAlC,QAAA;AACA,QAAM,CAACC,SAASC,UAAV,IAAwBC,eAAkB,KAAV;AAEhC,QAAA;AAAA,IACJC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,IACAC;AAAAA,OACGC;AAAAA,EACDZ,IAAAA;AAEJa,QAAAA,UAAU,MAAM;AACd,QAAIX,aAAa;AACfY,aAAOC,SAASC,OAAOd;AAAAA,IACxB;AAAA,EAAA,GACA,CAACA,WAAD,CAJM;AAMHe,QAAAA,eAAeC,MAAAA,YAAY,MAAM;AACrCb,eAAW,IAAD;AACC,eAAA;AAAA,MACTc,OAAO,CACL;AAAA,QACEZ,UAAUA,8BAAY;AAAA,QACtBa,eAAeZ;AAAAA,QACfE;AAAAA,MAAAA,CAJG;AAAA,IAAA,CADC;AAAA,KAST,CAACT,YAAYM,UAAUC,WAAWE,UAAlC,CAX6B;AAahC,wCACGW,WAAAA,YAAD;AAAA,IACE,UAAUjB,4BAAWQ,iBAAiBU;AAAAA,IADxC,GAEMV;AAAAA,IACJ;AAAA,IACA,gBAAgBK;AAAAA,IAJlB;AAAA,EAAA,CADF;AAUD;;"}
|