@shopify/hydrogen-react 2025.5.0 → 2025.7.1
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/customer-account.schema.json +1 -1
- package/dist/browser-dev/AddToCartButton.mjs.map +1 -1
- package/dist/browser-dev/BaseButton.mjs.map +1 -1
- package/dist/browser-dev/BuyNowButton.mjs.map +1 -1
- package/dist/browser-dev/CartCheckoutButton.mjs.map +1 -1
- package/dist/browser-dev/CartCost.mjs.map +1 -1
- package/dist/browser-dev/CartLineProvider.mjs.map +1 -1
- package/dist/browser-dev/CartLineQuantity.mjs.map +1 -1
- package/dist/browser-dev/CartLineQuantityAdjustButton.mjs.map +1 -1
- package/dist/browser-dev/CartProvider.mjs.map +1 -1
- package/dist/browser-dev/ExternalVideo.mjs.map +1 -1
- package/dist/browser-dev/Image.mjs.map +1 -1
- package/dist/browser-dev/MediaFile.mjs.map +1 -1
- package/dist/browser-dev/ModelViewer.mjs.map +1 -1
- package/dist/browser-dev/Money.mjs.map +1 -1
- package/dist/browser-dev/ProductPrice.mjs.map +1 -1
- package/dist/browser-dev/ProductProvider.mjs.map +1 -1
- package/dist/browser-dev/RichText.components.mjs.map +1 -1
- package/dist/browser-dev/RichText.mjs.map +1 -1
- package/dist/browser-dev/ShopPayButton.mjs.map +1 -1
- package/dist/browser-dev/ShopifyProvider.mjs +18 -1
- package/dist/browser-dev/ShopifyProvider.mjs.map +1 -1
- package/dist/browser-dev/Video.mjs.map +1 -1
- package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs +4 -3
- package/dist/browser-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
- package/dist/browser-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
- package/dist/browser-dev/analytics-utils.mjs.map +1 -1
- package/dist/browser-dev/analytics.mjs +4 -5
- package/dist/browser-dev/analytics.mjs.map +1 -1
- package/dist/browser-dev/cart-hooks.mjs +25 -7
- package/dist/browser-dev/cart-hooks.mjs.map +1 -1
- package/dist/browser-dev/cart-queries.mjs.map +1 -1
- package/dist/browser-dev/codegen.helpers.mjs.map +1 -1
- package/dist/browser-dev/cookies-utils.mjs +4 -4
- package/dist/browser-dev/cookies-utils.mjs.map +1 -1
- package/dist/browser-dev/flatten-connection.mjs.map +1 -1
- package/dist/browser-dev/getProductOptions.mjs.map +1 -1
- package/dist/browser-dev/index.mjs +4 -0
- package/dist/browser-dev/index.mjs.map +1 -1
- package/dist/browser-dev/load-script.mjs.map +1 -1
- package/dist/browser-dev/node_modules/@xstate/fsm/es/index.mjs +17 -17
- package/dist/browser-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
- package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs +2 -2
- package/dist/browser-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
- package/dist/browser-dev/node_modules/@xstate/react/es/useConstant.mjs.map +1 -1
- package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
- package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
- package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
- package/dist/browser-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
- package/dist/browser-dev/node_modules/use-sync-external-store/shim/index.mjs.map +1 -1
- package/dist/browser-dev/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -1
- package/dist/browser-dev/optionValueDecoder.mjs.map +1 -1
- package/dist/browser-dev/packages/hydrogen-react/package.json.mjs +1 -1
- package/dist/browser-dev/parse-metafield.mjs +26 -1
- package/dist/browser-dev/parse-metafield.mjs.map +1 -1
- package/dist/browser-dev/storefront-api-constants.mjs +1 -1
- package/dist/browser-dev/storefront-api-constants.mjs.map +1 -1
- package/dist/browser-dev/storefront-client.mjs.map +1 -1
- package/dist/browser-dev/tracking-utils.mjs +92 -0
- package/dist/browser-dev/tracking-utils.mjs.map +1 -0
- package/dist/browser-dev/useCartAPIStateMachine.mjs.map +1 -1
- package/dist/browser-dev/useCartActions.mjs.map +1 -1
- package/dist/browser-dev/useMoney.mjs +53 -7
- package/dist/browser-dev/useMoney.mjs.map +1 -1
- package/dist/browser-dev/useSelectedOptionInUrlParam.mjs.map +1 -1
- package/dist/browser-dev/useShopifyCookies.mjs +96 -9
- package/dist/browser-dev/useShopifyCookies.mjs.map +1 -1
- package/dist/browser-prod/AddToCartButton.mjs.map +1 -1
- package/dist/browser-prod/BaseButton.mjs.map +1 -1
- package/dist/browser-prod/BuyNowButton.mjs.map +1 -1
- package/dist/browser-prod/CartCheckoutButton.mjs.map +1 -1
- package/dist/browser-prod/CartCost.mjs.map +1 -1
- package/dist/browser-prod/CartLineProvider.mjs.map +1 -1
- package/dist/browser-prod/CartLineQuantity.mjs.map +1 -1
- package/dist/browser-prod/CartLineQuantityAdjustButton.mjs.map +1 -1
- package/dist/browser-prod/CartProvider.mjs.map +1 -1
- package/dist/browser-prod/ExternalVideo.mjs.map +1 -1
- package/dist/browser-prod/Image.mjs.map +1 -1
- package/dist/browser-prod/MediaFile.mjs.map +1 -1
- package/dist/browser-prod/ModelViewer.mjs.map +1 -1
- package/dist/browser-prod/Money.mjs.map +1 -1
- package/dist/browser-prod/ProductPrice.mjs.map +1 -1
- package/dist/browser-prod/ProductProvider.mjs.map +1 -1
- package/dist/browser-prod/RichText.components.mjs.map +1 -1
- package/dist/browser-prod/RichText.mjs.map +1 -1
- package/dist/browser-prod/ShopPayButton.mjs.map +1 -1
- package/dist/browser-prod/ShopifyProvider.mjs +18 -1
- package/dist/browser-prod/ShopifyProvider.mjs.map +1 -1
- package/dist/browser-prod/Video.mjs.map +1 -1
- package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs +4 -3
- package/dist/browser-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
- package/dist/browser-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
- package/dist/browser-prod/analytics-utils.mjs.map +1 -1
- package/dist/browser-prod/analytics.mjs +4 -5
- package/dist/browser-prod/analytics.mjs.map +1 -1
- package/dist/browser-prod/cart-hooks.mjs +25 -7
- package/dist/browser-prod/cart-hooks.mjs.map +1 -1
- package/dist/browser-prod/cart-queries.mjs.map +1 -1
- package/dist/browser-prod/codegen.helpers.mjs.map +1 -1
- package/dist/browser-prod/cookies-utils.mjs +4 -4
- package/dist/browser-prod/cookies-utils.mjs.map +1 -1
- package/dist/browser-prod/flatten-connection.mjs.map +1 -1
- package/dist/browser-prod/getProductOptions.mjs.map +1 -1
- package/dist/browser-prod/index.mjs +4 -0
- package/dist/browser-prod/index.mjs.map +1 -1
- package/dist/browser-prod/load-script.mjs.map +1 -1
- package/dist/browser-prod/node_modules/@xstate/fsm/es/index.mjs +17 -17
- package/dist/browser-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
- package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs +2 -2
- package/dist/browser-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
- package/dist/browser-prod/node_modules/@xstate/react/es/useConstant.mjs.map +1 -1
- package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
- package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
- package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
- package/dist/browser-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
- package/dist/browser-prod/node_modules/use-sync-external-store/shim/index.mjs.map +1 -1
- package/dist/browser-prod/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -1
- package/dist/browser-prod/optionValueDecoder.mjs.map +1 -1
- package/dist/browser-prod/packages/hydrogen-react/package.json.mjs +1 -1
- package/dist/browser-prod/parse-metafield.mjs +27 -1
- package/dist/browser-prod/parse-metafield.mjs.map +1 -1
- package/dist/browser-prod/storefront-api-constants.mjs +1 -1
- package/dist/browser-prod/storefront-api-constants.mjs.map +1 -1
- package/dist/browser-prod/storefront-client.mjs.map +1 -1
- package/dist/browser-prod/tracking-utils.mjs +92 -0
- package/dist/browser-prod/tracking-utils.mjs.map +1 -0
- package/dist/browser-prod/useCartAPIStateMachine.mjs.map +1 -1
- package/dist/browser-prod/useCartActions.mjs.map +1 -1
- package/dist/browser-prod/useMoney.mjs +53 -7
- package/dist/browser-prod/useMoney.mjs.map +1 -1
- package/dist/browser-prod/useSelectedOptionInUrlParam.mjs.map +1 -1
- package/dist/browser-prod/useShopifyCookies.mjs +96 -9
- package/dist/browser-prod/useShopifyCookies.mjs.map +1 -1
- package/dist/node-dev/AddToCartButton.js.map +1 -1
- package/dist/node-dev/AddToCartButton.mjs.map +1 -1
- package/dist/node-dev/BaseButton.js.map +1 -1
- package/dist/node-dev/BaseButton.mjs.map +1 -1
- package/dist/node-dev/BuyNowButton.js.map +1 -1
- package/dist/node-dev/BuyNowButton.mjs.map +1 -1
- package/dist/node-dev/CartCheckoutButton.js.map +1 -1
- package/dist/node-dev/CartCheckoutButton.mjs.map +1 -1
- package/dist/node-dev/CartCost.js.map +1 -1
- package/dist/node-dev/CartCost.mjs.map +1 -1
- package/dist/node-dev/CartLineProvider.js.map +1 -1
- package/dist/node-dev/CartLineProvider.mjs.map +1 -1
- package/dist/node-dev/CartLineQuantity.js.map +1 -1
- package/dist/node-dev/CartLineQuantity.mjs.map +1 -1
- package/dist/node-dev/CartLineQuantityAdjustButton.js.map +1 -1
- package/dist/node-dev/CartLineQuantityAdjustButton.mjs.map +1 -1
- package/dist/node-dev/CartProvider.js.map +1 -1
- package/dist/node-dev/CartProvider.mjs.map +1 -1
- package/dist/node-dev/ExternalVideo.js.map +1 -1
- package/dist/node-dev/ExternalVideo.mjs.map +1 -1
- package/dist/node-dev/Image.js.map +1 -1
- package/dist/node-dev/Image.mjs.map +1 -1
- package/dist/node-dev/MediaFile.js.map +1 -1
- package/dist/node-dev/MediaFile.mjs.map +1 -1
- package/dist/node-dev/ModelViewer.js.map +1 -1
- package/dist/node-dev/ModelViewer.mjs.map +1 -1
- package/dist/node-dev/Money.js.map +1 -1
- package/dist/node-dev/Money.mjs.map +1 -1
- package/dist/node-dev/ProductPrice.js.map +1 -1
- package/dist/node-dev/ProductPrice.mjs.map +1 -1
- package/dist/node-dev/ProductProvider.js.map +1 -1
- package/dist/node-dev/ProductProvider.mjs.map +1 -1
- package/dist/node-dev/RichText.components.js.map +1 -1
- package/dist/node-dev/RichText.components.mjs.map +1 -1
- package/dist/node-dev/RichText.js.map +1 -1
- package/dist/node-dev/RichText.mjs.map +1 -1
- package/dist/node-dev/ShopPayButton.js.map +1 -1
- package/dist/node-dev/ShopPayButton.mjs.map +1 -1
- package/dist/node-dev/ShopifyProvider.js +18 -1
- package/dist/node-dev/ShopifyProvider.js.map +1 -1
- package/dist/node-dev/ShopifyProvider.mjs +18 -1
- package/dist/node-dev/ShopifyProvider.mjs.map +1 -1
- package/dist/node-dev/Video.js.map +1 -1
- package/dist/node-dev/Video.mjs.map +1 -1
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js +4 -3
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.js.map +1 -1
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs +4 -3
- package/dist/node-dev/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
- package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.js.map +1 -1
- package/dist/node-dev/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
- package/dist/node-dev/analytics-utils.js.map +1 -1
- package/dist/node-dev/analytics-utils.mjs.map +1 -1
- package/dist/node-dev/analytics.js +4 -5
- package/dist/node-dev/analytics.js.map +1 -1
- package/dist/node-dev/analytics.mjs +4 -5
- package/dist/node-dev/analytics.mjs.map +1 -1
- package/dist/node-dev/cart-hooks.js +24 -6
- package/dist/node-dev/cart-hooks.js.map +1 -1
- package/dist/node-dev/cart-hooks.mjs +25 -7
- package/dist/node-dev/cart-hooks.mjs.map +1 -1
- package/dist/node-dev/cart-queries.js.map +1 -1
- package/dist/node-dev/cart-queries.mjs.map +1 -1
- package/dist/node-dev/codegen.helpers.js.map +1 -1
- package/dist/node-dev/codegen.helpers.mjs.map +1 -1
- package/dist/node-dev/cookies-utils.js +4 -4
- package/dist/node-dev/cookies-utils.js.map +1 -1
- package/dist/node-dev/cookies-utils.mjs +4 -4
- package/dist/node-dev/cookies-utils.mjs.map +1 -1
- package/dist/node-dev/flatten-connection.js.map +1 -1
- package/dist/node-dev/flatten-connection.mjs.map +1 -1
- package/dist/node-dev/getProductOptions.js.map +1 -1
- package/dist/node-dev/getProductOptions.mjs.map +1 -1
- package/dist/node-dev/index.js +4 -0
- package/dist/node-dev/index.js.map +1 -1
- package/dist/node-dev/index.mjs +4 -0
- package/dist/node-dev/index.mjs.map +1 -1
- package/dist/node-dev/load-script.js.map +1 -1
- package/dist/node-dev/load-script.mjs.map +1 -1
- package/dist/node-dev/node_modules/@xstate/fsm/es/index.js +17 -17
- package/dist/node-dev/node_modules/@xstate/fsm/es/index.js.map +1 -1
- package/dist/node-dev/node_modules/@xstate/fsm/es/index.mjs +17 -17
- package/dist/node-dev/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
- package/dist/node-dev/node_modules/@xstate/react/es/fsm.js +2 -2
- package/dist/node-dev/node_modules/@xstate/react/es/fsm.js.map +1 -1
- package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs +2 -2
- package/dist/node-dev/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
- package/dist/node-dev/node_modules/@xstate/react/es/useConstant.js.map +1 -1
- package/dist/node-dev/node_modules/@xstate/react/es/useConstant.mjs.map +1 -1
- package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
- package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
- package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
- package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
- package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
- package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
- package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
- package/dist/node-dev/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
- package/dist/node-dev/node_modules/use-sync-external-store/shim/index.js.map +1 -1
- package/dist/node-dev/node_modules/use-sync-external-store/shim/index.mjs.map +1 -1
- package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -1
- package/dist/node-dev/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -1
- package/dist/node-dev/optionValueDecoder.js.map +1 -1
- package/dist/node-dev/optionValueDecoder.mjs.map +1 -1
- package/dist/node-dev/packages/hydrogen-react/package.json.js +1 -1
- package/dist/node-dev/packages/hydrogen-react/package.json.mjs +1 -1
- package/dist/node-dev/parse-metafield.js +26 -1
- package/dist/node-dev/parse-metafield.js.map +1 -1
- package/dist/node-dev/parse-metafield.mjs +26 -1
- package/dist/node-dev/parse-metafield.mjs.map +1 -1
- package/dist/node-dev/storefront-api-constants.js +1 -1
- package/dist/node-dev/storefront-api-constants.js.map +1 -1
- package/dist/node-dev/storefront-api-constants.mjs +1 -1
- package/dist/node-dev/storefront-api-constants.mjs.map +1 -1
- package/dist/node-dev/storefront-client.js.map +1 -1
- package/dist/node-dev/storefront-client.mjs.map +1 -1
- package/dist/node-dev/tracking-utils.js +92 -0
- package/dist/node-dev/tracking-utils.js.map +1 -0
- package/dist/node-dev/tracking-utils.mjs +92 -0
- package/dist/node-dev/tracking-utils.mjs.map +1 -0
- package/dist/node-dev/useCartAPIStateMachine.js.map +1 -1
- package/dist/node-dev/useCartAPIStateMachine.mjs.map +1 -1
- package/dist/node-dev/useCartActions.js.map +1 -1
- package/dist/node-dev/useCartActions.mjs.map +1 -1
- package/dist/node-dev/useMoney.js +53 -7
- package/dist/node-dev/useMoney.js.map +1 -1
- package/dist/node-dev/useMoney.mjs +53 -7
- package/dist/node-dev/useMoney.mjs.map +1 -1
- package/dist/node-dev/useSelectedOptionInUrlParam.js.map +1 -1
- package/dist/node-dev/useSelectedOptionInUrlParam.mjs.map +1 -1
- package/dist/node-dev/useShopifyCookies.js +94 -7
- package/dist/node-dev/useShopifyCookies.js.map +1 -1
- package/dist/node-dev/useShopifyCookies.mjs +96 -9
- package/dist/node-dev/useShopifyCookies.mjs.map +1 -1
- package/dist/node-prod/AddToCartButton.js.map +1 -1
- package/dist/node-prod/AddToCartButton.mjs.map +1 -1
- package/dist/node-prod/BaseButton.js.map +1 -1
- package/dist/node-prod/BaseButton.mjs.map +1 -1
- package/dist/node-prod/BuyNowButton.js.map +1 -1
- package/dist/node-prod/BuyNowButton.mjs.map +1 -1
- package/dist/node-prod/CartCheckoutButton.js.map +1 -1
- package/dist/node-prod/CartCheckoutButton.mjs.map +1 -1
- package/dist/node-prod/CartCost.js.map +1 -1
- package/dist/node-prod/CartCost.mjs.map +1 -1
- package/dist/node-prod/CartLineProvider.js.map +1 -1
- package/dist/node-prod/CartLineProvider.mjs.map +1 -1
- package/dist/node-prod/CartLineQuantity.js.map +1 -1
- package/dist/node-prod/CartLineQuantity.mjs.map +1 -1
- package/dist/node-prod/CartLineQuantityAdjustButton.js.map +1 -1
- package/dist/node-prod/CartLineQuantityAdjustButton.mjs.map +1 -1
- package/dist/node-prod/CartProvider.js.map +1 -1
- package/dist/node-prod/CartProvider.mjs.map +1 -1
- package/dist/node-prod/ExternalVideo.js.map +1 -1
- package/dist/node-prod/ExternalVideo.mjs.map +1 -1
- package/dist/node-prod/Image.js.map +1 -1
- package/dist/node-prod/Image.mjs.map +1 -1
- package/dist/node-prod/MediaFile.js.map +1 -1
- package/dist/node-prod/MediaFile.mjs.map +1 -1
- package/dist/node-prod/ModelViewer.js.map +1 -1
- package/dist/node-prod/ModelViewer.mjs.map +1 -1
- package/dist/node-prod/Money.js.map +1 -1
- package/dist/node-prod/Money.mjs.map +1 -1
- package/dist/node-prod/ProductPrice.js.map +1 -1
- package/dist/node-prod/ProductPrice.mjs.map +1 -1
- package/dist/node-prod/ProductProvider.js.map +1 -1
- package/dist/node-prod/ProductProvider.mjs.map +1 -1
- package/dist/node-prod/RichText.components.js.map +1 -1
- package/dist/node-prod/RichText.components.mjs.map +1 -1
- package/dist/node-prod/RichText.js.map +1 -1
- package/dist/node-prod/RichText.mjs.map +1 -1
- package/dist/node-prod/ShopPayButton.js.map +1 -1
- package/dist/node-prod/ShopPayButton.mjs.map +1 -1
- package/dist/node-prod/ShopifyProvider.js +18 -1
- package/dist/node-prod/ShopifyProvider.js.map +1 -1
- package/dist/node-prod/ShopifyProvider.mjs +18 -1
- package/dist/node-prod/ShopifyProvider.mjs.map +1 -1
- package/dist/node-prod/Video.js.map +1 -1
- package/dist/node-prod/Video.mjs.map +1 -1
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js +4 -3
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.js.map +1 -1
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs +4 -3
- package/dist/node-prod/analytics-schema-custom-storefront-customer-tracking.mjs.map +1 -1
- package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.js.map +1 -1
- package/dist/node-prod/analytics-schema-trekkie-storefront-page-view.mjs.map +1 -1
- package/dist/node-prod/analytics-utils.js.map +1 -1
- package/dist/node-prod/analytics-utils.mjs.map +1 -1
- package/dist/node-prod/analytics.js +4 -5
- package/dist/node-prod/analytics.js.map +1 -1
- package/dist/node-prod/analytics.mjs +4 -5
- package/dist/node-prod/analytics.mjs.map +1 -1
- package/dist/node-prod/cart-hooks.js +24 -6
- package/dist/node-prod/cart-hooks.js.map +1 -1
- package/dist/node-prod/cart-hooks.mjs +25 -7
- package/dist/node-prod/cart-hooks.mjs.map +1 -1
- package/dist/node-prod/cart-queries.js.map +1 -1
- package/dist/node-prod/cart-queries.mjs.map +1 -1
- package/dist/node-prod/codegen.helpers.js.map +1 -1
- package/dist/node-prod/codegen.helpers.mjs.map +1 -1
- package/dist/node-prod/cookies-utils.js +4 -4
- package/dist/node-prod/cookies-utils.js.map +1 -1
- package/dist/node-prod/cookies-utils.mjs +4 -4
- package/dist/node-prod/cookies-utils.mjs.map +1 -1
- package/dist/node-prod/flatten-connection.js.map +1 -1
- package/dist/node-prod/flatten-connection.mjs.map +1 -1
- package/dist/node-prod/getProductOptions.js.map +1 -1
- package/dist/node-prod/getProductOptions.mjs.map +1 -1
- package/dist/node-prod/index.js +4 -0
- package/dist/node-prod/index.js.map +1 -1
- package/dist/node-prod/index.mjs +4 -0
- package/dist/node-prod/index.mjs.map +1 -1
- package/dist/node-prod/load-script.js.map +1 -1
- package/dist/node-prod/load-script.mjs.map +1 -1
- package/dist/node-prod/node_modules/@xstate/fsm/es/index.js +17 -17
- package/dist/node-prod/node_modules/@xstate/fsm/es/index.js.map +1 -1
- package/dist/node-prod/node_modules/@xstate/fsm/es/index.mjs +17 -17
- package/dist/node-prod/node_modules/@xstate/fsm/es/index.mjs.map +1 -1
- package/dist/node-prod/node_modules/@xstate/react/es/fsm.js +2 -2
- package/dist/node-prod/node_modules/@xstate/react/es/fsm.js.map +1 -1
- package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs +2 -2
- package/dist/node-prod/node_modules/@xstate/react/es/fsm.mjs.map +1 -1
- package/dist/node-prod/node_modules/@xstate/react/es/useConstant.js.map +1 -1
- package/dist/node-prod/node_modules/@xstate/react/es/useConstant.mjs.map +1 -1
- package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js.map +1 -1
- package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.mjs.map +1 -1
- package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.js.map +1 -1
- package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.min.mjs.map +1 -1
- package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js.map +1 -1
- package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.mjs.map +1 -1
- package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js.map +1 -1
- package/dist/node-prod/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.mjs.map +1 -1
- package/dist/node-prod/node_modules/use-sync-external-store/shim/index.js.map +1 -1
- package/dist/node-prod/node_modules/use-sync-external-store/shim/index.mjs.map +1 -1
- package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.js.map +1 -1
- package/dist/node-prod/node_modules/use-sync-external-store/shim/with-selector.mjs.map +1 -1
- package/dist/node-prod/optionValueDecoder.js.map +1 -1
- package/dist/node-prod/optionValueDecoder.mjs.map +1 -1
- package/dist/node-prod/packages/hydrogen-react/package.json.js +1 -1
- package/dist/node-prod/packages/hydrogen-react/package.json.mjs +1 -1
- package/dist/node-prod/parse-metafield.js +27 -1
- package/dist/node-prod/parse-metafield.js.map +1 -1
- package/dist/node-prod/parse-metafield.mjs +27 -1
- package/dist/node-prod/parse-metafield.mjs.map +1 -1
- package/dist/node-prod/storefront-api-constants.js +1 -1
- package/dist/node-prod/storefront-api-constants.js.map +1 -1
- package/dist/node-prod/storefront-api-constants.mjs +1 -1
- package/dist/node-prod/storefront-api-constants.mjs.map +1 -1
- package/dist/node-prod/storefront-client.js.map +1 -1
- package/dist/node-prod/storefront-client.mjs.map +1 -1
- package/dist/node-prod/tracking-utils.js +92 -0
- package/dist/node-prod/tracking-utils.js.map +1 -0
- package/dist/node-prod/tracking-utils.mjs +92 -0
- package/dist/node-prod/tracking-utils.mjs.map +1 -0
- package/dist/node-prod/useCartAPIStateMachine.js.map +1 -1
- package/dist/node-prod/useCartAPIStateMachine.mjs.map +1 -1
- package/dist/node-prod/useCartActions.js.map +1 -1
- package/dist/node-prod/useCartActions.mjs.map +1 -1
- package/dist/node-prod/useMoney.js +53 -7
- package/dist/node-prod/useMoney.js.map +1 -1
- package/dist/node-prod/useMoney.mjs +53 -7
- package/dist/node-prod/useMoney.mjs.map +1 -1
- package/dist/node-prod/useSelectedOptionInUrlParam.js.map +1 -1
- package/dist/node-prod/useSelectedOptionInUrlParam.mjs.map +1 -1
- package/dist/node-prod/useShopifyCookies.js +94 -7
- package/dist/node-prod/useShopifyCookies.js.map +1 -1
- package/dist/node-prod/useShopifyCookies.mjs +96 -9
- package/dist/node-prod/useShopifyCookies.mjs.map +1 -1
- package/dist/types/CartLineProvider.d.ts +1 -1
- package/dist/types/CartProvider.d.ts +2 -2
- package/dist/types/Image.d.ts +1 -1
- package/dist/types/ModelViewer.d.ts +1 -1
- package/dist/types/Money.d.ts +13 -5
- package/dist/types/ShopifyProvider.d.ts +5 -0
- package/dist/types/Video.d.ts +1 -1
- package/dist/types/analytics-schema-custom-storefront-customer-tracking.d.ts +3 -3
- package/dist/types/analytics-types.d.ts +24 -4
- package/dist/types/cart-hooks.d.ts +3 -4
- package/dist/types/codegen.helpers.d.ts +2 -2
- package/dist/types/cookies-utils.d.ts +4 -0
- package/dist/types/customer-account-api-types.d.ts +9386 -0
- package/dist/types/index.d.cts +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/optionValueDecoder.d.ts +2 -2
- package/dist/types/storefront-api-constants.d.ts +1 -1
- package/dist/types/storefront-api-types.d.ts +143 -8
- package/dist/types/tracking-utils.d.ts +21 -0
- package/dist/types/useCartAPIStateMachine.d.ts +2 -2
- package/dist/types/useCartActions.d.ts +2 -2
- package/dist/types/useMoney.d.ts +16 -2
- package/dist/types/useShopifyCookies.d.ts +28 -2
- package/dist/umd/hydrogen-react.dev.js +376 -118
- package/dist/umd/hydrogen-react.dev.js.map +1 -1
- package/dist/umd/hydrogen-react.prod.js +18 -18
- package/dist/umd/hydrogen-react.prod.js.map +1 -1
- package/package.json +26 -25
- package/storefront.schema.json +1 -1
- package/dist/browser-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs +0 -6
- package/dist/browser-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs.map +0 -1
- package/dist/browser-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs +0 -6
- package/dist/browser-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.mjs.map +0 -1
- package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js +0 -5
- package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js.map +0 -1
- package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs +0 -6
- package/dist/node-dev/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs.map +0 -1
- package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js +0 -5
- package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.js.map +0 -1
- package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs +0 -6
- package/dist/node-prod/node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.esm.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(_,
|
|
1
|
+
(function(_,l){typeof exports=="object"&&typeof module<"u"?l(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],l):(_=typeof globalThis<"u"?globalThis:_||self,l(_.hydrogenreact={},_.React))})(this,(function(_,l){"use strict";function sr(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const U=sr(l);/*! *****************************************************************************
|
|
2
2
|
Copyright (c) Microsoft Corporation.
|
|
3
3
|
|
|
4
4
|
Permission to use, copy, modify, and/or distribute this software for any
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
12
12
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
13
13
|
PERFORMANCE OF THIS SOFTWARE.
|
|
14
|
-
***************************************************************************** */function
|
|
14
|
+
***************************************************************************** */function Xe(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n,a,i=r.call(e),o=[];try{for(;(t===void 0||t-- >0)&&!(n=i.next()).done;)o.push(n.value)}catch(s){a={error:s}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(a)throw a.error}}return o}var z;(function(e){e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped"})(z||(z={}));var ze={type:"xstate.init"};function Pe(e){return e===void 0?[]:[].concat(e)}function re(e){return{type:"xstate.assign",assignment:e}}function et(e,t){return typeof(e=typeof e=="string"&&t&&t[e]?t[e]:e)=="string"?{type:e}:typeof e=="function"?{type:e.name,exec:e}:e}function Se(e){return function(t){return e===t}}function tt(e){return typeof e=="string"?{type:e}:e}function rt(e,t){return{value:e,context:t,actions:[],changed:!1,matches:Se(e)}}function nt(e,t,r){var n=t,a=!1;return[e.filter((function(i){if(i.type==="xstate.assign"){a=!0;var o=Object.assign({},n);return typeof i.assignment=="function"?o=i.assignment(n,r):Object.keys(i.assignment).forEach((function(s){o[s]=typeof i.assignment[s]=="function"?i.assignment[s](n,r):i.assignment[s]})),n=o,!1}return!0})),n,a]}function at(e,t){t===void 0&&(t={});var r=Xe(nt(Pe(e.states[e.initial].entry).map((function(o){return et(o,t.actions)})),e.context,ze),2),n=r[0],a=r[1],i={config:e,_options:t,initialState:{value:e.initial,actions:n,context:a,matches:Se(e.initial)},transition:function(o,s){var u,d,y=typeof o=="string"?{value:o,context:e.context}:o,f=y.value,h=y.context,g=tt(s),c=e.states[f];if(c.on){var S=Pe(c.on[g.type]);try{for(var T=(function(V){var se=typeof Symbol=="function"&&Symbol.iterator,pe=se&&V[se],Ee=0;if(pe)return pe.call(V);if(V&&typeof V.length=="number")return{next:function(){return V&&Ee>=V.length&&(V=void 0),{value:V&&V[Ee++],done:!V}}};throw new TypeError(se?"Object is not iterable.":"Symbol.iterator is not defined.")})(S),b=T.next();!b.done;b=T.next()){var I=b.value;if(I===void 0)return rt(f,h);var A=typeof I=="string"?{target:I}:I,v=A.target,p=A.actions,m=p===void 0?[]:p,E=A.cond,P=E===void 0?function(){return!0}:E,R=v===void 0,w=v??f,O=e.states[w];if(P(h,g)){var H=Xe(nt((R?Pe(m):[].concat(c.exit,m,O.entry).filter((function(V){return V}))).map((function(V){return et(V,i._options.actions)})),h,g),3),k=H[0],$=H[1],X=H[2],me=v??f;return{value:me,context:$,actions:k,changed:v!==f||k.length>0||X,matches:Se(me)}}}}catch(V){u={error:V}}finally{try{b&&!b.done&&(d=T.return)&&d.call(T)}finally{if(u)throw u.error}}}return rt(f,h)}};return i}var it=function(e,t){return e.actions.forEach((function(r){var n=r.exec;return n&&n(e.context,t)}))};function cr(e){var t=e.initialState,r=z.NotStarted,n=new Set,a={_machine:e,send:function(i){r===z.Running&&(t=e.transition(t,i),it(t,tt(i)),n.forEach((function(o){return o(t)})))},subscribe:function(i){return n.add(i),i(t),{unsubscribe:function(){return n.delete(i)}}},start:function(i){if(i){var o=typeof i=="object"?i:{context:e.config.context,value:i};t={value:o.value,actions:[],context:o.context,matches:Se(o.value)}}else t=e.initialState;return r=z.Running,it(t,ze),a},stop:function(){return r=z.Stopped,n.clear(),a},get state(){return t},get status(){return r}};return a}var ur=l.useLayoutEffect,Oe={exports:{}},Re={},ke={exports:{}},De={};/**
|
|
15
15
|
* @license React
|
|
16
16
|
* use-sync-external-store-shim.production.min.js
|
|
17
17
|
*
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
*
|
|
20
20
|
* This source code is licensed under the MIT license found in the
|
|
21
21
|
* LICENSE file in the root directory of this source tree.
|
|
22
|
-
*/var
|
|
22
|
+
*/var ot;function lr(){if(ot)return De;ot=1;var e=l;function t(f,h){return f===h&&(f!==0||1/f===1/h)||f!==f&&h!==h}var r=typeof Object.is=="function"?Object.is:t,n=e.useState,a=e.useEffect,i=e.useLayoutEffect,o=e.useDebugValue;function s(f,h){var g=h(),c=n({inst:{value:g,getSnapshot:h}}),S=c[0].inst,T=c[1];return i(function(){S.value=g,S.getSnapshot=h,u(S)&&T({inst:S})},[f,g,h]),a(function(){return u(S)&&T({inst:S}),f(function(){u(S)&&T({inst:S})})},[f]),o(g),g}function u(f){var h=f.getSnapshot;f=f.value;try{var g=h();return!r(f,g)}catch{return!0}}function d(f,h){return h()}var y=typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"?d:s;return De.useSyncExternalStore=e.useSyncExternalStore!==void 0?e.useSyncExternalStore:y,De}var st;function dr(){return st||(st=1,ke.exports=lr()),ke.exports}/**
|
|
23
23
|
* @license React
|
|
24
24
|
* use-sync-external-store-shim/with-selector.production.min.js
|
|
25
25
|
*
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
*
|
|
28
28
|
* This source code is licensed under the MIT license found in the
|
|
29
29
|
* LICENSE file in the root directory of this source tree.
|
|
30
|
-
*/var
|
|
30
|
+
*/var ct;function fr(){if(ct)return Re;ct=1;var e=l,t=dr();function r(d,y){return d===y&&(d!==0||1/d===1/y)||d!==d&&y!==y}var n=typeof Object.is=="function"?Object.is:r,a=t.useSyncExternalStore,i=e.useRef,o=e.useEffect,s=e.useMemo,u=e.useDebugValue;return Re.useSyncExternalStoreWithSelector=function(d,y,f,h,g){var c=i(null);if(c.current===null){var S={hasValue:!1,value:null};c.current=S}else S=c.current;c=s(function(){function b(m){if(!I){if(I=!0,A=m,m=h(m),g!==void 0&&S.hasValue){var E=S.value;if(g(E,m))return v=E}return v=m}if(E=v,n(A,m))return E;var P=h(m);return g!==void 0&&g(E,P)?E:(A=m,v=P)}var I=!1,A,v,p=f===void 0?null:f;return[function(){return b(y())},p===null?void 0:function(){return b(p())}]},[y,f,h,g]);var T=a(d,c[0],c[1]);return o(function(){S.hasValue=!0,S.value=T},[T]),u(T),T},Re}var ut;function hr(){return ut||(ut=1,Oe.exports=fr()),Oe.exports}var yr=hr();function gr(e){var t=U.useRef();return t.current||(t.current={v:e()}),t.current.v}var mr=function(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),a,i=[],o;try{for(;(t===void 0||t-- >0)&&!(a=n.next()).done;)i.push(a.value)}catch(s){o={error:s}}finally{try{a&&!a.done&&(r=n.return)&&r.call(n)}finally{if(o)throw o.error}}return i};function pr(e){return e}var Er=function(e){var t;return e.subscribe(function(r){t=r}).unsubscribe(),t};function _r(e,t){var r=l.useRef(),n=mr(gr(function(){var s=[],u=cr(at(e.config,t||e._options)),d=u.send;return u.send=function(y){if(u.status===z.NotStarted){s.push(y);return}d(y),r.current=u.state},[u,s]}),2),a=n[0],i=n[1];ur(function(){t&&(a._machine._options=t)});var o=Tr(a);return l.useEffect(function(){return a.start(r.current),i.forEach(a.send),r.current=a.state,function(){a.stop()}},[]),o}var Sr=function(e,t){return t.changed===!1};function Tr(e){var t=l.useCallback(function(){return Er(e)},[e]),r=l.useCallback(function(a){var i=e.subscribe(a).unsubscribe;return i},[e]),n=yr.useSyncExternalStoreWithSelector(r,t,t,pr,Sr);return[n,e.send,e]}function Q(e){if(!e){const t=`flattenConnection(): needs a 'connection' to flatten, but received '${e??""}' instead.`;return console.error(t+" Returning an empty array"),[]}return"nodes"in e?e.nodes:"edges"in e&&Array.isArray(e.edges)?e.edges.map(t=>{if(!(t!=null&&t.node))throw new Error("flattenConnection(): Connection edges must contain nodes");return t.node}):[]}const Cr=e=>`
|
|
31
31
|
mutation CartLineAdd(
|
|
32
32
|
$cartId: ID!
|
|
33
33
|
$lines: [CartLineInput!]!
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
${e}
|
|
46
|
-
`,
|
|
46
|
+
`,wr=e=>`
|
|
47
47
|
mutation CartCreate(
|
|
48
48
|
$input: CartInput!
|
|
49
49
|
$numCartLines: Int = 250
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
}
|
|
59
59
|
|
|
60
60
|
${e}
|
|
61
|
-
`,
|
|
61
|
+
`,Ar=e=>`
|
|
62
62
|
mutation CartLineRemove(
|
|
63
63
|
$cartId: ID!
|
|
64
64
|
$lines: [ID!]!
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
${e}
|
|
77
|
-
`,
|
|
77
|
+
`,br=e=>`
|
|
78
78
|
mutation CartLineUpdate(
|
|
79
79
|
$cartId: ID!
|
|
80
80
|
$lines: [CartLineUpdateInput!]!
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
${e}
|
|
93
|
-
`,
|
|
93
|
+
`,Ir=e=>`
|
|
94
94
|
mutation CartNoteUpdate(
|
|
95
95
|
$cartId: ID!
|
|
96
96
|
$note: String!
|
|
@@ -106,7 +106,7 @@
|
|
|
106
106
|
}
|
|
107
107
|
|
|
108
108
|
${e}
|
|
109
|
-
`,
|
|
109
|
+
`,vr=e=>`
|
|
110
110
|
mutation CartBuyerIdentityUpdate(
|
|
111
111
|
$cartId: ID!
|
|
112
112
|
$buyerIdentity: CartBuyerIdentityInput!
|
|
@@ -122,7 +122,7 @@
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
${e}
|
|
125
|
-
`,
|
|
125
|
+
`,Pr=e=>`
|
|
126
126
|
mutation CartAttributesUpdate(
|
|
127
127
|
$attributes: [AttributeInput!]!
|
|
128
128
|
$cartId: ID!
|
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
}
|
|
139
139
|
|
|
140
140
|
${e}
|
|
141
|
-
`,
|
|
141
|
+
`,Or=e=>`
|
|
142
142
|
mutation CartDiscountCodesUpdate(
|
|
143
143
|
$cartId: ID!
|
|
144
144
|
$discountCodes: [String!]
|
|
@@ -154,7 +154,7 @@
|
|
|
154
154
|
}
|
|
155
155
|
|
|
156
156
|
${e}
|
|
157
|
-
`,
|
|
157
|
+
`,Rr=e=>`
|
|
158
158
|
query CartQuery(
|
|
159
159
|
$id: ID!
|
|
160
160
|
$numCartLines: Int = 250
|
|
@@ -167,7 +167,7 @@
|
|
|
167
167
|
}
|
|
168
168
|
|
|
169
169
|
${e}
|
|
170
|
-
`,
|
|
170
|
+
`,kr=`
|
|
171
171
|
fragment CartFragment on Cart {
|
|
172
172
|
id
|
|
173
173
|
checkoutUrl
|
|
@@ -268,16 +268,16 @@
|
|
|
268
268
|
width
|
|
269
269
|
height
|
|
270
270
|
}
|
|
271
|
-
`,
|
|
272
|
-
You may run into unexpected errors if these versions don't match. Received version: "${n}"; expected version "${ae}"`);const i=s=>{const o=(s==null?void 0:s.storeDomain)??e;return o.includes("://")?o:`https://${o}`};return{getShopifyDomain:i,getStorefrontApiUrl(s){const o=i(s),u=o+(o.endsWith("/")?"api":"/api");return Ue(o)?u:`${u}/${(s==null?void 0:s.storefrontApiVersion)??n}/graphql.json`},getPrivateTokenHeaders(s){if(!t&&!(s!=null&&s.privateStorefrontToken)&&!Ue(e))throw new Error(ke+"You did not pass in a `privateStorefrontToken` while using `createStorefrontClient()` or `getPrivateTokenHeaders()`");return{"content-type":((s==null?void 0:s.contentType)??a)==="graphql"?"application/graphql":"application/json","X-SDK-Variant":"hydrogen-react","X-SDK-Variant-Source":"react","X-SDK-Version":n,"Shopify-Storefront-Private-Token":(s==null?void 0:s.privateStorefrontToken)??t??"",...s!=null&&s.buyerIp?{"Shopify-Storefront-Buyer-IP":s.buyerIp}:{}}},getPublicTokenHeaders(s){if(!r&&!(s!=null&&s.publicStorefrontToken)&&!Ue(e))throw new Error(ke+"You did not pass in a `publicStorefrontToken` while using `createStorefrontClient()` or `getPublicTokenHeaders()`");const o=(s==null?void 0:s.contentType)??a??"json";return ot(o,n,(s==null?void 0:s.publicStorefrontToken)??r??"")}}}function ot(e,t,r){return{"content-type":e==="graphql"?"application/graphql":"application/json","X-SDK-Variant":"hydrogen-react","X-SDK-Variant-Source":"react","X-SDK-Version":t,"X-Shopify-Storefront-Access-Token":r}}const st=new Set,ke="[h2:error:createStorefrontClient] ",Or=(e,t="warn")=>{st.has(e)||(console[t](`[h2:${t}:createStorefrontClient] `+e),st.add(e))},ct={storeDomain:"test",storefrontToken:"abc123",storefrontApiVersion:ae,countryIsoCode:"US",languageIsoCode:"EN",getStorefrontApiUrl(){return""},getPublicTokenHeaders(){return{}},getShopifyDomain(){return""}},ut=c.createContext(ct);function Rr({children:e,...t}){if(!t.countryIsoCode||!t.languageIsoCode||!t.storeDomain||!t.storefrontToken||!t.storefrontApiVersion)throw new Error("Please provide the necessary props to '<ShopifyProvider/>'");t.storefrontApiVersion!==ae&&console.warn(`<ShopifyProvider/>: This version of Hydrogen React is built for Shopify's Storefront API version ${ae}, but it looks like you're using version ${t.storefrontApiVersion}. There may be issues or bugs if you use a mismatched version of Hydrogen React and the Storefront API.`);const r=c.useMemo(()=>{function n(a){const i=(a==null?void 0:a.storeDomain)??t.storeDomain;return i.includes("://")?i:`https://${i}`}return{...t,getPublicTokenHeaders(a){return ot(a.contentType,t.storefrontApiVersion,a.storefrontToken??t.storefrontToken)},getShopifyDomain:n,getStorefrontApiUrl(a){const i=n({storeDomain:(a==null?void 0:a.storeDomain)??t.storeDomain});return`${i}${i.endsWith("/")?"":"/"}api/${(a==null?void 0:a.storefrontApiVersion)??t.storefrontApiVersion}/graphql.json`}}},[t]);return React.createElement(ut.Provider,{value:r},e)}function ue(){const e=c.useContext(ut);if(!e)throw new Error("'useShop()' must be a descendent of <ShopifyProvider/>");return e}const Ne="shopifyCartId",lt="Shopify-Storefront-Id",dt="Shopify-Storefront-Y",ft="Shopify-Storefront-S",J="_shopify_y",X="_shopify_s";var Dr=new Set(["domain","path","max-age","expires","samesite","secure","httponly"]);function Vr(e){let t={},r,n,a=0,i=e.split(/;\s*/g),s,o;for(;a<i.length;a++)if(n=i[a],r=n.indexOf("="),~r){if(s=n.substring(0,r++).trim(),o=n.substring(r).trim(),o[0]==='"'&&(o=o.substring(1,o.length-1)),~o.indexOf("%"))try{o=decodeURIComponent(o)}catch{}Dr.has(n=s.toLowerCase())?n==="expires"?t.expires=new Date(o):n==="max-age"?t.maxage=+o:t[n]=o:t[s]=o}else(s=n.trim().toLowerCase())&&(s==="httponly"||s==="secure")&&(t[s]=!0);return t}function Ur(e,t,r={}){let n=e+"="+encodeURIComponent(t);return r.expires&&(n+="; Expires="+new Date(r.expires).toUTCString()),r.maxage!=null&&r.maxage>=0&&(n+="; Max-Age="+(r.maxage|0)),r.domain&&(n+="; Domain="+r.domain),r.path&&(n+="; Path="+r.path),r.samesite&&(n+="; SameSite="+r.samesite),(r.secure||r.samesite==="None")&&(n+="; Secure"),r.httponly&&(n+="; HttpOnly"),n}const ht="xxxx-4xxx-xxxx-xxxxxxxxxxxx";function Ce(){let e="";try{const t=window.crypto,r=new Uint16Array(31);t.getRandomValues(r);let n=0;e=ht.replace(/[x]/g,a=>{const i=r[n]%16,s=a==="x"?i:i&3|8;return n++,s.toString(16)}).toUpperCase()}catch{e=ht.replace(/[x]/g,r=>{const n=Math.random()*16|0;return(r==="x"?n:n&3|8).toString(16)}).toUpperCase()}return`${kr()}-${e}`}function kr(){let e=0,t=0;e=new Date().getTime()>>>0;try{t=performance.now()>>>0}catch{t=0}return Math.abs(e+t).toString(16).toLowerCase().padStart(8,"0")}function Ae(e){const t=Vr(e);return{[J]:t[J]||"",[X]:t[X]||""}}function Nr(){const{storefrontId:e,getPublicTokenHeaders:t,getStorefrontApiUrl:r}=ue();return c.useCallback(({query:n,variables:a})=>{const i=t({contentType:"json"});e&&(i[lt]=e);const s=Ae(document.cookie);return i[dt]=s[J],i[ft]=s[X],fetch(r(),{method:"POST",headers:i,body:JSON.stringify({query:n.toString(),variables:a})}).then(o=>o.json()).catch(o=>({data:void 0,errors:o==null?void 0:o.toString()}))},[t,e,r])}function Mr({numCartLines:e,cartFragment:t,countryCode:r="US",languageCode:n="EN"}){const a=Nr(),i=c.useCallback(h=>a({query:br(t),variables:{id:h,numCartLines:e,country:r,language:n}}),[a,t,e,r,n]),s=c.useCallback(h=>a({query:Er(t),variables:{input:h,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),o=c.useCallback((h,S)=>a({query:pr(t),variables:{cartId:h,lines:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),u=c.useCallback((h,S)=>a({query:_r(t),variables:{cartId:h,lines:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),l=c.useCallback((h,S)=>a({query:Sr(t),variables:{cartId:h,lines:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),y=c.useCallback((h,S)=>a({query:Tr(t),variables:{cartId:h,note:S,numCartLines:e,country:r,language:n}}),[a,t,e,r,n]),d=c.useCallback((h,S)=>a({query:Cr(t),variables:{cartId:h,buyerIdentity:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),g=c.useCallback((h,S)=>a({query:Ar(t),variables:{cartId:h,attributes:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),f=c.useCallback((h,S)=>a({query:wr(t),variables:{cartId:h,discountCodes:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]);return c.useMemo(()=>({cartFetch:i,cartCreate:s,cartLineAdd:o,cartLineUpdate:u,cartLineRemove:l,noteUpdate:y,buyerIdentityUpdate:d,cartAttributesUpdate:g,discountCodesUpdate:f,cartFragment:t}),[i,s,o,u,l,y,d,g,f,t])}function Y(e,t){return{entry:[...(t==null?void 0:t.entryActions)||[],ne({lastValidCart:r=>r==null?void 0:r.cart}),"onCartActionEntry","onCartActionOptimisticUI",e],on:{RESOLVE:{target:(t==null?void 0:t.resolveTarget)||"idle",actions:[ne({prevCart:r=>r==null?void 0:r.lastValidCart,cart:(r,n)=>{var a;return(a=n==null?void 0:n.payload)==null?void 0:a.cart},rawCartResult:(r,n)=>{var a;return(a=n==null?void 0:n.payload)==null?void 0:a.rawCartResult},errors:r=>{}})]},ERROR:{target:(t==null?void 0:t.errorTarget)||"error",actions:[ne({prevCart:r=>r==null?void 0:r.lastValidCart,cart:r=>r==null?void 0:r.lastValidCart,errors:(r,n)=>{var a;return(a=n==null?void 0:n.payload)==null?void 0:a.errors}})]},CART_COMPLETED:{target:"cartCompleted",actions:ne({prevCart:r=>{},cart:r=>{},lastValidCart:r=>{},rawCartResult:r=>{},errors:r=>{}})}},exit:["onCartActionComplete",...(t==null?void 0:t.exitActions)||[]]}}const le={CART_FETCH:{target:"cartFetching"},CART_CREATE:{target:"cartCreating"},CART_SET:{target:"idle",actions:[ne({rawCartResult:(e,t)=>t.payload.cart,cart:(e,t)=>Me(t.payload.cart)})]}},gt={CARTLINE_ADD:{target:"cartLineAdding"},CARTLINE_UPDATE:{target:"cartLineUpdating"},CARTLINE_REMOVE:{target:"cartLineRemoving"},NOTE_UPDATE:{target:"noteUpdating"},BUYER_IDENTITY_UPDATE:{target:"buyerIdentityUpdating"},CART_ATTRIBUTES_UPDATE:{target:"cartAttributesUpdating"},DISCOUNT_CODES_UPDATE:{target:"discountCodesUpdating"}};function Lr(e){return et({id:"Cart",initial:e?"idle":"uninitialized",context:{cart:e&&Me(e)},states:{uninitialized:{on:le},cartCompleted:{on:le},initializationError:{on:le},idle:{on:{...le,...gt}},error:{on:{...le,...gt}},cartFetching:Y("cartFetchAction",{errorTarget:"initializationError"}),cartCreating:Y("cartCreateAction",{errorTarget:"initializationError"}),cartLineRemoving:Y("cartLineRemoveAction"),cartLineUpdating:Y("cartLineUpdateAction"),cartLineAdding:Y("cartLineAddAction"),noteUpdating:Y("noteUpdateAction"),buyerIdentityUpdating:Y("buyerIdentityUpdateAction"),cartAttributesUpdating:Y("cartAttributesUpdateAction"),discountCodesUpdating:Y("discountCodesUpdateAction")}})}function xr({numCartLines:e,onCartActionEntry:t,onCartActionOptimisticUI:r,onCartActionComplete:n,data:a,cartFragment:i,countryCode:s,languageCode:o}){const{cartFetch:u,cartCreate:l,cartLineAdd:y,cartLineUpdate:d,cartLineRemove:g,noteUpdate:f,buyerIdentityUpdate:h,cartAttributesUpdate:S,discountCodesUpdate:T}=Mr({numCartLines:e,cartFragment:i,countryCode:s,languageCode:o}),b=c.useMemo(()=>Lr(a),[a]),[I,w,v]=gr(b,{actions:{cartFetchAction:async(p,m)=>{var A;if(m.type!=="CART_FETCH")return;const{data:E,errors:P}=await u((A=m==null?void 0:m.payload)==null?void 0:A.cartId),R=W(m,E==null?void 0:E.cart,P);w(R)},cartCreateAction:async(p,m)=>{var A;if(m.type!=="CART_CREATE")return;const{data:E,errors:P}=await l(m==null?void 0:m.payload),R=W(m,(A=E==null?void 0:E.cartCreate)==null?void 0:A.cart,P);w(R)},cartLineAddAction:async(p,m)=>{var A,O;if(m.type!=="CARTLINE_ADD"||!((A=p==null?void 0:p.cart)!=null&&A.id))return;const{data:E,errors:P}=await y(p.cart.id,m.payload.lines),R=W(m,(O=E==null?void 0:E.cartLinesAdd)==null?void 0:O.cart,P);w(R)},cartLineUpdateAction:async(p,m)=>{var A,O;if(m.type!=="CARTLINE_UPDATE"||!((A=p==null?void 0:p.cart)!=null&&A.id))return;const{data:E,errors:P}=await d(p.cart.id,m.payload.lines),R=W(m,(O=E==null?void 0:E.cartLinesUpdate)==null?void 0:O.cart,P);w(R)},cartLineRemoveAction:async(p,m)=>{var A,O;if(m.type!=="CARTLINE_REMOVE"||!((A=p==null?void 0:p.cart)!=null&&A.id))return;const{data:E,errors:P}=await g(p.cart.id,m.payload.lines),R=W(m,(O=E==null?void 0:E.cartLinesRemove)==null?void 0:O.cart,P);w(R)},noteUpdateAction:async(p,m)=>{var A,O;if(m.type!=="NOTE_UPDATE"||!((A=p==null?void 0:p.cart)!=null&&A.id))return;const{data:E,errors:P}=await f(p.cart.id,m.payload.note),R=W(m,(O=E==null?void 0:E.cartNoteUpdate)==null?void 0:O.cart,P);w(R)},buyerIdentityUpdateAction:async(p,m)=>{var A,O;if(m.type!=="BUYER_IDENTITY_UPDATE"||!((A=p==null?void 0:p.cart)!=null&&A.id))return;const{data:E,errors:P}=await h(p.cart.id,m.payload.buyerIdentity),R=W(m,(O=E==null?void 0:E.cartBuyerIdentityUpdate)==null?void 0:O.cart,P);w(R)},cartAttributesUpdateAction:async(p,m)=>{var A,O;if(m.type!=="CART_ATTRIBUTES_UPDATE"||!((A=p==null?void 0:p.cart)!=null&&A.id))return;const{data:E,errors:P}=await S(p.cart.id,m.payload.attributes),R=W(m,(O=E==null?void 0:E.cartAttributesUpdate)==null?void 0:O.cart,P);w(R)},discountCodesUpdateAction:async(p,m)=>{var A,O;if(m.type!=="DISCOUNT_CODES_UPDATE"||!((A=p==null?void 0:p.cart)!=null&&A.id))return;const{data:E,errors:P}=await T(p.cart.id,m.payload.discountCodes),R=W(m,(O=E==null?void 0:E.cartDiscountCodesUpdate)==null?void 0:O.cart,P);w(R)},...t&&{onCartActionEntry:(p,m)=>{Fr(m)&&t(p,m)}},...r&&{onCartActionOptimisticUI:ne((p,m)=>r(p,m))},...n&&{onCartActionComplete:(p,m)=>{jr(m)&&n(p,m)}}}});return c.useMemo(()=>[I,w,v],[I,w,v])}function Me(e){return{...e,lines:Q(e==null?void 0:e.lines),note:e.note??void 0}}function W(e,t,r){return r?{type:"ERROR",payload:{errors:r,cartActionEvent:e}}:t?{type:"RESOLVE",payload:{cart:Me(t),rawCartResult:t,cartActionEvent:e}}:{type:"CART_COMPLETED",payload:{cartActionEvent:e}}}function Fr(e){return e.type==="CART_CREATE"||e.type==="CARTLINE_ADD"||e.type==="CARTLINE_UPDATE"||e.type==="CARTLINE_REMOVE"||e.type==="NOTE_UPDATE"||e.type==="BUYER_IDENTITY_UPDATE"||e.type==="CART_ATTRIBUTES_UPDATE"||e.type==="DISCOUNT_CODES_UPDATE"}function jr(e){return e.type==="RESOLVE"||e.type==="ERROR"||e.type==="CART_COMPLETED"}const yt=c.createContext(null);function ie(){const e=c.useContext(yt);if(!e)throw new Error("Expected a Cart Context, but no Cart Context was found");return e}function qr({children:e,numCartLines:t,onCreate:r,onLineAdd:n,onLineRemove:a,onLineUpdate:i,onNoteUpdate:s,onBuyerIdentityUpdate:o,onAttributesUpdate:u,onDiscountCodesUpdate:l,onCreateComplete:y,onLineAddComplete:d,onLineRemoveComplete:g,onLineUpdateComplete:f,onNoteUpdateComplete:h,onBuyerIdentityUpdateComplete:S,onAttributesUpdateComplete:T,onDiscountCodesUpdateComplete:b,data:I,cartFragment:w=Ir,customerAccessToken:v,countryCode:p,languageCode:m}){var Kt,Qt,Jt,Xt,zt,er,tr;const E=ue();if(!E)throw new Error("<CartProvider> needs to be a descendant of <ShopifyProvider>");p=(p??E.countryIsoCode??"US").toUpperCase(),m=(m??E.languageIsoCode??"EN").toUpperCase(),p&&(p=p.toUpperCase());const[P,R]=c.useState(p),[A,O]=c.useState(v),H=c.useRef(!1);(P!==p||A!==v)&&(R(p),O(v),H.current=!1);const[D,$]=xr({numCartLines:t,data:I,cartFragment:w,countryCode:p,languageCode:m,onCartActionEntry(C,N){try{switch(N.type){case"CART_CREATE":return r==null?void 0:r();case"CARTLINE_ADD":return n==null?void 0:n();case"CARTLINE_REMOVE":return a==null?void 0:a();case"CARTLINE_UPDATE":return i==null?void 0:i();case"NOTE_UPDATE":return s==null?void 0:s();case"BUYER_IDENTITY_UPDATE":return o==null?void 0:o();case"CART_ATTRIBUTES_UPDATE":return u==null?void 0:u();case"DISCOUNT_CODES_UPDATE":return l==null?void 0:l()}}catch(L){console.error("Cart entry action failed",L)}},onCartActionOptimisticUI(C,N){var L,K,M,_e;if(!C.cart)return{...C};switch(N.type){case"CARTLINE_REMOVE":return{...C,cart:{...C.cart,lines:(K=(L=C==null?void 0:C.cart)==null?void 0:L.lines)==null?void 0:K.filter(x=>(x==null?void 0:x.id)&&!N.payload.lines.includes(x==null?void 0:x.id))}};case"CARTLINE_UPDATE":return{...C,cart:{...C.cart,lines:(_e=(M=C==null?void 0:C.cart)==null?void 0:M.lines)==null?void 0:_e.map(x=>{const Ge=N.payload.lines.find(({id:ca})=>ca===(x==null?void 0:x.id));return Ge&&Ge.quantity?{...x,quantity:Ge.quantity}:x})}}}return{...C}},onCartActionComplete(C,N){const L=N.payload.cartActionEvent;try{switch(N.type){case"RESOLVE":switch(L.type){case"CART_CREATE":return y==null?void 0:y();case"CARTLINE_ADD":return d==null?void 0:d();case"CARTLINE_REMOVE":return g==null?void 0:g();case"CARTLINE_UPDATE":return f==null?void 0:f();case"NOTE_UPDATE":return h==null?void 0:h();case"BUYER_IDENTITY_UPDATE":return Br(C,L)&&(H.current=!0),S==null?void 0:S();case"CART_ATTRIBUTES_UPDATE":return T==null?void 0:T();case"DISCOUNT_CODES_UPDATE":return b==null?void 0:b()}}}catch(K){console.error("onCartActionComplete failed",K)}}}),ee=c.useRef(!1),[pe,U]=c.useState(!1),ce=D.matches("cartCompleted"),Ee=(D.value==="idle"||D.value==="error"||D.value==="cartCompleted")&&p!==((Jt=(Qt=(Kt=D==null?void 0:D.context)==null?void 0:Kt.cart)==null?void 0:Qt.buyerIdentity)==null?void 0:Jt.countryCode)&&!D.context.errors,Se=c.useRef(!1);c.useEffect(()=>{if(!ee.current&&!Se.current){if(!I&&Le("localStorage")){Se.current=!0;try{const C=window.localStorage.getItem(Ne);C&&$({type:"CART_FETCH",payload:{cartId:C}})}catch(C){console.warn("error fetching cartId"),console.warn(C)}}ee.current=!0,U(!0)}},[I,ee,$]),c.useEffect(()=>{!Ee||H.current||$({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:{countryCode:p,customerAccessToken:v}}})},[p,v,Ee,H,$]);const B=c.useCallback(C=>{if(!ee.current)return console.warn("Cart isn't ready yet");$(C)},[$]);c.useEffect(()=>{var C,N,L;if((N=(C=D==null?void 0:D.context)==null?void 0:C.cart)!=null&&N.id&&Le("localStorage"))try{window.localStorage.setItem(Ne,(L=D.context.cart)==null?void 0:L.id)}catch(K){console.warn("Failed to save cartId to localStorage",K)}},[(zt=(Xt=D==null?void 0:D.context)==null?void 0:Xt.cart)==null?void 0:zt.id]),c.useEffect(()=>{if(ce&&Le("localStorage"))try{window.localStorage.removeItem(Ne)}catch(C){console.warn("Failed to delete cartId from localStorage",C)}},[ce]);const We=c.useCallback(C=>{var N,L;p&&!((N=C.buyerIdentity)!=null&&N.countryCode)&&(C.buyerIdentity==null&&(C.buyerIdentity={}),C.buyerIdentity.countryCode=p),v&&!((L=C.buyerIdentity)!=null&&L.customerAccessToken)&&(C.buyerIdentity==null&&(C.buyerIdentity={}),C.buyerIdentity.customerAccessToken=v),B({type:"CART_CREATE",payload:C})},[p,v,B]),V=$r(D),sa=c.useMemo(()=>{var C,N,L,K;return{...((C=V==null?void 0:V.context)==null?void 0:C.cart)??{lines:[],attributes:[]},status:Hr(V.value),error:(N=V==null?void 0:V.context)==null?void 0:N.errors,totalQuantity:((K=(L=V==null?void 0:V.context)==null?void 0:L.cart)==null?void 0:K.totalQuantity)??0,cartCreate:We,cartReady:pe,linesAdd(M){var _e,x;(x=(_e=V==null?void 0:V.context)==null?void 0:_e.cart)!=null&&x.id?B({type:"CARTLINE_ADD",payload:{lines:M}}):We({lines:M})},linesRemove(M){B({type:"CARTLINE_REMOVE",payload:{lines:M}})},linesUpdate(M){B({type:"CARTLINE_UPDATE",payload:{lines:M}})},noteUpdate(M){B({type:"NOTE_UPDATE",payload:{note:M}})},buyerIdentityUpdate(M){B({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:M}})},cartAttributesUpdate(M){B({type:"CART_ATTRIBUTES_UPDATE",payload:{attributes:M}})},discountCodesUpdate(M){B({type:"DISCOUNT_CODES_UPDATE",payload:{discountCodes:M}})},cartFragment:w}},[We,pe,(er=V==null?void 0:V.context)==null?void 0:er.cart,(tr=V==null?void 0:V.context)==null?void 0:tr.errors,V.value,w,B]);return React.createElement(yt.Provider,{value:sa},e)}function Hr(e){switch(e){case"uninitialized":case"initializationError":return"uninitialized";case"idle":case"cartCompleted":case"error":return"idle";case"cartFetching":return"fetching";case"cartCreating":return"creating";case"cartLineAdding":case"cartLineRemoving":case"cartLineUpdating":case"noteUpdating":case"buyerIdentityUpdating":case"cartAttributesUpdating":case"discountCodesUpdating":return"updating"}}function $r(e){const[t,r]=c.useTransition(),[n,a]=c.useState(e),i=c.useRef(!1);t&&(i.current=!0);const s=c.useRef(!1);return!t&&i.current&&(s.current=!0),c.useEffect(()=>{r(()=>{s.current||a(e)})},[e]),s.current?e:n}function Le(e){let t;try{t=window[e];const r="__storage_test__";return t.setItem(r,r),t.removeItem(r),!0}catch(r){return!!(r instanceof DOMException&&(r.code===22||r.code===1014||r.name==="QuotaExceededError"||r.name==="NS_ERROR_DOM_QUOTA_REACHED")&&t&&t.length!==0)}}function Br(e,t){var r,n;return!!(t.payload.buyerIdentity.countryCode&&((n=(r=e.cart)==null?void 0:r.buyerIdentity)==null?void 0:n.countryCode)!==t.payload.buyerIdentity.countryCode)}const mt=c.createContext(null);function Yr({children:e,data:t,initialVariantId:r}){const n=c.useMemo(()=>Q(t.variants??{}),[t.variants]);if(!Gr(n))throw new Error("<ProductProvider/> requires 'product.variants.nodes' or 'product.variants.edges'");const a=c.useMemo(()=>Wr(n),[n]),[i,s]=c.useState(()=>St(r,n)),[o,u]=c.useState(()=>_t(i));c.useEffect(()=>{const T=St(r,n);s(T),u(_t(T))},[r,n]);const l=c.useCallback((T,b)=>{u(I=>{const w={...I,[T]:b};return s(Et(n,w)),w})},[u,n]),y=c.useCallback((T,b)=>{const I=Et(n,{...o,[T]:b});return(I==null?void 0:I.availableForSale)??!0},[o,n]),d=c.useMemo(()=>Q(t.sellingPlanGroups??{}).map(T=>({...T,sellingPlans:Q((T==null?void 0:T.sellingPlans)??{})})),[t.sellingPlanGroups]),[g,f]=c.useState(void 0),h=c.useMemo(()=>{var T,b;if(!(!i||!g)){if(!((T=i.sellingPlanAllocations)!=null&&T.nodes)&&!((b=i.sellingPlanAllocations)!=null&&b.edges))throw new Error("<ProductProvider/>: You must include 'sellingPlanAllocations.nodes' or 'sellingPlanAllocations.edges' in your variants in order to calculate selectedSellingPlanAllocation");return Q(i.sellingPlanAllocations).find(I=>{var w;return((w=I==null?void 0:I.sellingPlan)==null?void 0:w.id)===g.id})}},[i,g]),S=c.useMemo(()=>({product:t,variants:n,variantsConnection:t.variants,options:a,selectedVariant:i,setSelectedVariant:s,selectedOptions:o,setSelectedOption:l,setSelectedOptions:u,isOptionInStock:y,selectedSellingPlan:g,setSelectedSellingPlan:f,selectedSellingPlanAllocation:h,sellingPlanGroups:d,sellingPlanGroupsConnection:t.sellingPlanGroups}),[t,y,a,o,g,h,i,d,l,n]);return React.createElement(mt.Provider,{value:S},e)}function pt(){const e=c.useContext(mt);if(!e)throw new Error("'useProduct' must be a child of <ProductProvider />");return e}function Et(e,t){var r,n;if(!(!e.length||((n=(r=e==null?void 0:e[0])==null?void 0:r.selectedOptions)==null?void 0:n.length)!==Object.keys(t).length))return e==null?void 0:e.find(a=>Object.entries(t).every(([i,s])=>{var o;return(o=a==null?void 0:a.selectedOptions)==null?void 0:o.some(u=>(u==null?void 0:u.name)===i&&(u==null?void 0:u.value)===s)}))}function Wr(e){const t=e.reduce((r,n)=>{var a;if(!n.selectedOptions)throw new Error("'getOptions' requires 'variant.selectedOptions'");return(a=n==null?void 0:n.selectedOptions)==null||a.forEach(i=>{r[(i==null?void 0:i.name)??""]=r[(i==null?void 0:i.name)??""]||new Set,r[(i==null?void 0:i.name)??""].add((i==null?void 0:i.value)??"")}),r},{});return Object.keys(t).map(r=>({name:r,values:Array.from(t[r])}))}function St(e,t){if(e){const r=t.find(n=>(n==null?void 0:n.id)===e);return r||console.warn("<ProductProvider/> received a 'initialVariantId' prop, but could not actually find a variant with that ID"),r}if(e===null)return null;if(e===void 0)return t.find(r=>r==null?void 0:r.availableForSale)||t[0]}function _t(e){return e!=null&&e.selectedOptions?e.selectedOptions.reduce((t,r)=>(t[(r==null?void 0:r.name)??""]=(r==null?void 0:r.value)??"",t),{}):{}}function Gr(e){return!(!e||!Array.isArray(e))}function we(e){const{as:t,onClick:r,defaultOnClick:n,children:a,buttonRef:i,...s}=e,o=c.useCallback(l=>{if(r){const y=r(l);if(typeof y=="boolean"&&y===!1||l!=null&&l.defaultPrevented)return}n==null||n(l)},[n,r]),u=t||"button";return React.createElement(u,{ref:i,onClick:o,...s},a)}function Zr(e){const[t,r]=c.useState(!1),{variantId:n,quantity:a=1,attributes:i,sellingPlanId:s,onClick:o,children:u,accessibleAddingToCartLabel:l,...y}=e,{status:d,linesAdd:g}=ie(),{selectedVariant:f}=pt(),h=n??(f==null?void 0:f.id)??"",S=n===null||h===""||f===null||t||y.disabled;c.useEffect(()=>{t&&d==="idle"&&r(!1)},[d,t]);const T=c.useCallback(()=>{r(!0),g([{quantity:a,merchandiseId:h||"",attributes:i,sellingPlanId:s}])},[g,a,h,i,s]);return k.createElement(k.Fragment,null,k.createElement(we,{...y,disabled:S,onClick:o,defaultOnClick:T},u),l?k.createElement("p",{style:{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"},role:"alert","aria-live":"assertive"},t?l:null):null)}const re={PAGE_VIEW:"PAGE_VIEW",ADD_TO_CART:"ADD_TO_CART",PAGE_VIEW_2:"PAGE_VIEW_2",COLLECTION_VIEW:"COLLECTION_VIEW",PRODUCT_VIEW:"PRODUCT_VIEW",SEARCH_VIEW:"SEARCH_VIEW"},be={article:"article",blog:"blog",captcha:"captcha",cart:"cart",collection:"collection",customersAccount:"customers/account",customersActivateAccount:"customers/activate_account",customersAddresses:"customers/addresses",customersLogin:"customers/login",customersOrder:"customers/order",customersRegister:"customers/register",customersResetPassword:"customers/reset_password",giftCard:"gift_card",home:"index",listCollections:"list-collections",forbidden:"403",notFound:"404",page:"page",password:"password",product:"product",policy:"policy",search:"search"},Tt={hydrogen:"hydrogen",headless:"headless"},Ct={hydrogen:"6167201",headless:"12875497473"};function q(e,t){return{schema_id:e,payload:t,metadata:{event_created_at_ms:Date.now()}}}function F(e){const t={id:"",resource:null,resourceId:null,search:"",searchParams:new URLSearchParams,hash:""};if(typeof e!="string")return t;try{const{search:r,searchParams:n,pathname:a,hash:i}=new URL(e),s=a.split("/"),o=s[s.length-1],u=s[s.length-2];return!o||!u?t:{id:`${o}${r}${i}`||"",resource:u??null,resourceId:o||null,search:r,searchParams:n,hash:i}}catch{return t}}function j(e,t){return typeof e!="object"?{}:(Object.entries(e).forEach(([r,n])=>{n&&(t[r]=n)}),t)}function Kr(e){return typeof document>"u"?(console.error(`${e} should only be used within the useEffect callback or event handlers`),!0):!1}const Qr="trekkie_storefront_page_view/1.4",Jr="myshopify.dev";function At(e){const t=e,{id:r,resource:n}=F(t.resourceId),a=n?n.toLowerCase():void 0;return[q(Qr,j({pageType:t.pageType,customerId:parseInt(F(t.customerId).id||"0"),resourceType:a,resourceId:parseInt(r)},Xr(t)))]}function Xr(e){return{appClientId:e.shopifySalesChannel?Ct[e.shopifySalesChannel]:Ct.headless,isMerchantRequest:zr(e.url),hydrogenSubchannelId:e.storefrontId||e.hydrogenSubchannelId||"0",isPersistentCookie:e.hasUserConsent,uniqToken:e.uniqueToken,visitToken:e.visitToken,microSessionId:Ce(),microSessionCount:1,url:e.url,path:e.path,search:e.search,referrer:e.referrer,title:e.title,shopId:parseInt(F(e.shopId).id),currency:e.currency,contentLanguage:e.acceptedLanguage||"en"}}function zr(e){if(typeof e!="string")return!1;const t=new URL(e).hostname;return t.indexOf(Jr)!==-1||t==="localhost"}const en="2025.5.0",G="custom_storefront_customer_tracking/1.2",wt="page_rendered",bt="collection_page_rendered",It="product_page_rendered",tn="product_added_to_cart",vt="search_submitted";function de(e){return{canonical_url:e.canonicalUrl||e.url,customer_id:parseInt(F(e.customerId).id||"0")}}function rn(e){const t=e,r=de(t),n=t.pageType,a=[];switch(a.push(q(G,j({event_name:wt,...r},Z(t)))),n){case be.collection:a.push(q(G,j({event_name:bt,...r,collection_name:t.collectionHandle,collection_id:parseInt(F(t.collectionId).id)},Z(t))));break;case be.product:a.push(q(G,j({event_name:It,...r,products:xe(t.products),total_value:t.totalValue},Z(t))));break;case be.search:a.push(q(G,j({event_name:vt,...r,search_string:t.searchString},Z(t))));break}return a}function nn(e){const t=e,r=de(t);return[q(G,j({event_name:wt,...r},Z(t)))]}function an(e){const t=e,r=de(t);return[q(G,j({event_name:bt,...r,collection_name:t.collectionHandle,collection_id:parseInt(F(t.collectionId).id)},Z(t)))]}function on(e){const t=e,r=de(t);return[q(G,j({event_name:It,...r,products:xe(t.products),total_value:t.totalValue},Z(t)))]}function sn(e){const t=e,r=de(t);return[q(G,j({event_name:vt,...r,search_string:t.searchString},Z(t)))]}function cn(e){const t=e,r=F(t.cartId);return[q(G,j({event_name:tn,customerId:t.customerId,cart_token:r!=null&&r.id?`${r.id}`:null,total_value:t.totalValue,products:xe(t.products),customer_id:parseInt(F(t.customerId).id||"0")},Z(t)))]}function Z(e){return{source:e.shopifySalesChannel||Tt.headless,asset_version_id:e.assetVersionId||en,hydrogenSubchannelId:e.storefrontId||e.hydrogenSubchannelId||"0",is_persistent_cookie:e.hasUserConsent,deprecated_visit_token:e.visitToken,unique_token:e.uniqueToken,event_time:Date.now(),event_id:Ce(),event_source_url:e.url,referrer:e.referrer,user_agent:e.userAgent,navigation_type:e.navigationType,navigation_api:e.navigationApi,shop_id:parseInt(F(e.shopId).id),currency:e.currency,ccpa_enforced:e.ccpaEnforced||!1,gdpr_enforced:e.gdprEnforced||!1,gdpr_enforced_as_string:e.gdprEnforced?"true":"false",analytics_allowed:e.analyticsAllowed||!1,marketing_allowed:e.marketingAllowed||!1,sale_of_data_allowed:e.saleOfDataAllowed||!1}}function xe(e){return e?e.map(t=>{const r=j({variant_gid:t.variantGid,category:t.category,sku:t.sku,product_id:parseInt(F(t.productGid).id),variant_id:parseInt(F(t.variantGid).id)},{product_gid:t.productGid,name:t.name,variant:t.variantName||"",brand:t.brand,price:parseFloat(t.price),quantity:Number(t.quantity||0)});return JSON.stringify(r)}):[]}function un(e,t){const{eventName:r,payload:n}=e;if(!n.hasUserConsent)return Promise.resolve();let a=[];const i=n;return r===re.PAGE_VIEW?a=a.concat(At(i),rn(i)):r===re.ADD_TO_CART?a=a.concat(cn(n)):r===re.PAGE_VIEW_2?a=a.concat(At(i),nn(i)):r===re.COLLECTION_VIEW?a=a.concat(an(i)):r===re.PRODUCT_VIEW?a=a.concat(on(i)):r===re.SEARCH_VIEW&&(a=a.concat(sn(i))),a.length?dn(a,t):Promise.resolve()}function ln(){return typeof window>"u"||!window.navigator?!1:/Chrome-Lighthouse/.test(window.navigator.userAgent)}const Pt="sendShopifyAnalytics request is unsuccessful";function dn(e,t){if(ln())return Promise.resolve();const r={events:e,metadata:{event_sent_at_ms:Date.now()}};try{return fetch(t?`https://${t}/.well-known/shopify/monorail/unstable/produce_batch`:"https://monorail-edge.shopifysvc.com/unstable/produce_batch",{method:"post",headers:{"content-type":"text/plain"},body:JSON.stringify(r)}).then(n=>{if(!n.ok)throw new Error("Response failed");return n.text()}).then(n=>{n&&JSON.parse(n).result.forEach(i=>{i.status!==200&&console.error(Pt,`
|
|
271
|
+
`,ne="2025-07",Dr="mock.shop",Ve=e=>e.includes(Dr);function Vr({storeDomain:e,privateStorefrontToken:t,publicStorefrontToken:r,storefrontApiVersion:n=ne,contentType:a}){if(!e)throw new Error(Ue+"`storeDomain` is required when creating a new Storefront client in production.");n!==ne&&Ur(`The Storefront API version that you're using is different than the version this build of Hydrogen React is targeting.
|
|
272
|
+
You may run into unexpected errors if these versions don't match. Received version: "${n}"; expected version "${ne}"`);const i=o=>{const s=(o==null?void 0:o.storeDomain)??e;return s.includes("://")?s:`https://${s}`};return{getShopifyDomain:i,getStorefrontApiUrl(o){const s=i(o),u=s+(s.endsWith("/")?"api":"/api");return Ve(s)?u:`${u}/${(o==null?void 0:o.storefrontApiVersion)??n}/graphql.json`},getPrivateTokenHeaders(o){if(!t&&!(o!=null&&o.privateStorefrontToken)&&!Ve(e))throw new Error(Ue+"You did not pass in a `privateStorefrontToken` while using `createStorefrontClient()` or `getPrivateTokenHeaders()`");return{"content-type":((o==null?void 0:o.contentType)??a)==="graphql"?"application/graphql":"application/json","X-SDK-Variant":"hydrogen-react","X-SDK-Variant-Source":"react","X-SDK-Version":n,"Shopify-Storefront-Private-Token":(o==null?void 0:o.privateStorefrontToken)??t??"",...o!=null&&o.buyerIp?{"Shopify-Storefront-Buyer-IP":o.buyerIp}:{}}},getPublicTokenHeaders(o){if(!r&&!(o!=null&&o.publicStorefrontToken)&&!Ve(e))throw new Error(Ue+"You did not pass in a `publicStorefrontToken` while using `createStorefrontClient()` or `getPublicTokenHeaders()`");const s=(o==null?void 0:o.contentType)??a??"json";return lt(s,n,(o==null?void 0:o.publicStorefrontToken)??r??"")}}}function lt(e,t,r){return{"content-type":e==="graphql"?"application/graphql":"application/json","X-SDK-Variant":"hydrogen-react","X-SDK-Variant-Source":"react","X-SDK-Version":t,"X-Shopify-Storefront-Access-Token":r}}const dt=new Set,Ue="[h2:error:createStorefrontClient] ",Ur=(e,t="warn")=>{dt.has(e)||(console[t](`[h2:${t}:createStorefrontClient] `+e),dt.add(e))},ft={storeDomain:"test",storefrontToken:"abc123",storefrontApiVersion:ne,countryIsoCode:"US",languageIsoCode:"EN",getStorefrontApiUrl(){return""},getPublicTokenHeaders(){return{}},getShopifyDomain(){return""}},ht=l.createContext(ft);function Nr(){var e,t,r;if(typeof window>"u")return!1;try{const n=(t=(e=window.performance)==null?void 0:e.getEntriesByType)==null?void 0:t.call(e,"navigation")[0];return!!((r=n==null?void 0:n.serverTiming)!=null&&r.some(a=>a.name==="_sfapi_proxy"))}catch{return!1}}function Mr({children:e,...t}){if(!t.countryIsoCode||!t.languageIsoCode||!t.storeDomain||!t.storefrontToken||!t.storefrontApiVersion)throw new Error("Please provide the necessary props to '<ShopifyProvider/>'");t.storefrontApiVersion!==ne&&console.warn(`<ShopifyProvider/>: This version of Hydrogen React is built for Shopify's Storefront API version ${ne}, but it looks like you're using version ${t.storefrontApiVersion}. There may be issues or bugs if you use a mismatched version of Hydrogen React and the Storefront API.`);const r=l.useMemo(()=>{const n=t.sameDomainForStorefrontApi??Nr();function a(i){const o=(i==null?void 0:i.storeDomain)??t.storeDomain;return o.includes("://")?o:`https://${o}`}return{...t,sameDomainForStorefrontApi:n,getPublicTokenHeaders(i){return lt(i.contentType,t.storefrontApiVersion,i.storefrontToken??t.storefrontToken)},getShopifyDomain:a,getStorefrontApiUrl(i){const o=n&&typeof window<"u"?window.location.origin:a({storeDomain:(i==null?void 0:i.storeDomain)??t.storeDomain});return`${o}${o.endsWith("/")?"":"/"}api/${(i==null?void 0:i.storefrontApiVersion)??t.storefrontApiVersion}/graphql.json`}}},[t]);return React.createElement(ht.Provider,{value:r},e)}function ce(){const e=l.useContext(ht);if(!e)throw new Error("'useShop()' must be a descendent of <ShopifyProvider/>");return e}const Ne="shopifyCartId",yt="Shopify-Storefront-Id",gt="Shopify-Storefront-Y",mt="Shopify-Storefront-S",Te="_shopify_y",Ce="_shopify_s",Me="X-Shopify-VisitToken",Fe="X-Shopify-UniqueToken",Le={current:null};function ee(){var t,r,n;let e;if(typeof window<"u"&&typeof window.performance<"u")try{const a=/^https?:\/\/([^/]+)(\/api\/(?:unstable|2\d{3}-\d{2})\/graphql\.json(?=$|\?))?/,i=performance.getEntriesByType("resource");let o;for(let s=i.length-1;s>=0;s--){const u=i[s];if(u.initiatorType!=="fetch")continue;const d=window.location.host,y=u.name.match(a);if(!y)continue;const[,f,h]=y;if(f===d||h&&(f==null?void 0:f.endsWith(`.${d}`))){const c=pt(u);if(c){o=c;break}}}if(o&&(e=o),e?Le.current=e:Le.current&&(e=Le.current),!e){const s=performance.getEntriesByType("navigation")[0];e=pt(s,!1)}}catch{}if(!e){const a=typeof arguments[0]=="string"?arguments[0]:typeof document<"u"?document.cookie:"";e={uniqueToken:((t=a.match(/\b_shopify_y=([^;]+)/))==null?void 0:t[1])||"",visitToken:((r=a.match(/\b_shopify_s=([^;]+)/))==null?void 0:r[1])||"",consent:((n=a.match(/\b_tracking_consent=([^;]+)/))==null?void 0:n[1])||""}}return e}function pt(e,t=!0){let r="",n="",a="";const i=e.serverTiming;if(i&&i.length>=3)for(let o=i.length-1;o>=0;o--){const{name:s,description:u}=i[o];if(!(!s||!u)&&(s==="_y"?r=u:s==="_s"?n=u:s==="_cmp"&&(a=u),r&&n&&a))break}return r&&n&&(!t||a)?{uniqueToken:r,visitToken:n,consent:a}:void 0}function Fr(){const{storefrontId:e,getPublicTokenHeaders:t,getStorefrontApiUrl:r,sameDomainForStorefrontApi:n}=ce();return l.useCallback(({query:a,variables:i})=>{const o=t({contentType:"json"});if(e&&(o[yt]=e),!n){const{uniqueToken:s,visitToken:u}=ee();s&&(o[gt]=s,o[Fe]=s),u&&(o[mt]=u,o[Me]=u)}return fetch(r(),{method:"POST",headers:o,body:JSON.stringify({query:a.toString(),variables:i})}).then(s=>s.json()).catch(s=>({data:void 0,errors:s==null?void 0:s.toString()}))},[t,e,r,n])}function Lr({numCartLines:e,cartFragment:t,countryCode:r="US",languageCode:n="EN"}){const a=Fr(),i=l.useCallback(c=>a({query:Rr(t),variables:{id:c,numCartLines:e,country:r,language:n}}),[a,t,e,r,n]),o=l.useCallback(c=>a({query:wr(t),variables:{input:c,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),s=l.useCallback((c,S)=>a({query:Cr(t),variables:{cartId:c,lines:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),u=l.useCallback((c,S)=>a({query:br(t),variables:{cartId:c,lines:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),d=l.useCallback((c,S)=>a({query:Ar(t),variables:{cartId:c,lines:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),y=l.useCallback((c,S)=>a({query:Ir(t),variables:{cartId:c,note:S,numCartLines:e,country:r,language:n}}),[a,t,e,r,n]),f=l.useCallback((c,S)=>a({query:vr(t),variables:{cartId:c,buyerIdentity:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),h=l.useCallback((c,S)=>a({query:Pr(t),variables:{cartId:c,attributes:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]),g=l.useCallback((c,S)=>a({query:Or(t),variables:{cartId:c,discountCodes:S,numCartLines:e,country:r,language:n}}),[t,r,a,e,n]);return l.useMemo(()=>({cartFetch:i,cartCreate:o,cartLineAdd:s,cartLineUpdate:u,cartLineRemove:d,noteUpdate:y,buyerIdentityUpdate:f,cartAttributesUpdate:h,discountCodesUpdate:g,cartFragment:t}),[i,o,s,u,d,y,f,h,g,t])}function Y(e,t){return{entry:[...(t==null?void 0:t.entryActions)||[],re({lastValidCart:r=>r==null?void 0:r.cart}),"onCartActionEntry","onCartActionOptimisticUI",e],on:{RESOLVE:{target:(t==null?void 0:t.resolveTarget)||"idle",actions:[re({prevCart:r=>r==null?void 0:r.lastValidCart,cart:(r,n)=>{var a;return(a=n==null?void 0:n.payload)==null?void 0:a.cart},rawCartResult:(r,n)=>{var a;return(a=n==null?void 0:n.payload)==null?void 0:a.rawCartResult},errors:r=>{}})]},ERROR:{target:(t==null?void 0:t.errorTarget)||"error",actions:[re({prevCart:r=>r==null?void 0:r.lastValidCart,cart:r=>r==null?void 0:r.lastValidCart,errors:(r,n)=>{var a;return(a=n==null?void 0:n.payload)==null?void 0:a.errors}})]},CART_COMPLETED:{target:"cartCompleted",actions:re({prevCart:r=>{},cart:r=>{},lastValidCart:r=>{},rawCartResult:r=>{},errors:r=>{}})}},exit:["onCartActionComplete",...(t==null?void 0:t.exitActions)||[]]}}const ue={CART_FETCH:{target:"cartFetching"},CART_CREATE:{target:"cartCreating"},CART_SET:{target:"idle",actions:[re({rawCartResult:(e,t)=>t.payload.cart,cart:(e,t)=>xe(t.payload.cart)})]}},Et={CARTLINE_ADD:{target:"cartLineAdding"},CARTLINE_UPDATE:{target:"cartLineUpdating"},CARTLINE_REMOVE:{target:"cartLineRemoving"},NOTE_UPDATE:{target:"noteUpdating"},BUYER_IDENTITY_UPDATE:{target:"buyerIdentityUpdating"},CART_ATTRIBUTES_UPDATE:{target:"cartAttributesUpdating"},DISCOUNT_CODES_UPDATE:{target:"discountCodesUpdating"}};function xr(e){return at({id:"Cart",initial:e?"idle":"uninitialized",context:{cart:e&&xe(e)},states:{uninitialized:{on:ue},cartCompleted:{on:ue},initializationError:{on:ue},idle:{on:{...ue,...Et}},error:{on:{...ue,...Et}},cartFetching:Y("cartFetchAction",{errorTarget:"initializationError"}),cartCreating:Y("cartCreateAction",{errorTarget:"initializationError"}),cartLineRemoving:Y("cartLineRemoveAction"),cartLineUpdating:Y("cartLineUpdateAction"),cartLineAdding:Y("cartLineAddAction"),noteUpdating:Y("noteUpdateAction"),buyerIdentityUpdating:Y("buyerIdentityUpdateAction"),cartAttributesUpdating:Y("cartAttributesUpdateAction"),discountCodesUpdating:Y("discountCodesUpdateAction")}})}function qr({numCartLines:e,onCartActionEntry:t,onCartActionOptimisticUI:r,onCartActionComplete:n,data:a,cartFragment:i,countryCode:o,languageCode:s}){const{cartFetch:u,cartCreate:d,cartLineAdd:y,cartLineUpdate:f,cartLineRemove:h,noteUpdate:g,buyerIdentityUpdate:c,cartAttributesUpdate:S,discountCodesUpdate:T}=Lr({numCartLines:e,cartFragment:i,countryCode:o,languageCode:s}),b=l.useMemo(()=>xr(a),[a]),[I,A,v]=_r(b,{actions:{cartFetchAction:async(p,m)=>{var w;if(m.type!=="CART_FETCH")return;const{data:E,errors:P}=await u((w=m==null?void 0:m.payload)==null?void 0:w.cartId),R=W(m,E==null?void 0:E.cart,P);A(R)},cartCreateAction:async(p,m)=>{var w;if(m.type!=="CART_CREATE")return;const{data:E,errors:P}=await d(m==null?void 0:m.payload),R=W(m,(w=E==null?void 0:E.cartCreate)==null?void 0:w.cart,P);A(R)},cartLineAddAction:async(p,m)=>{var w,O;if(m.type!=="CARTLINE_ADD"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:E,errors:P}=await y(p.cart.id,m.payload.lines),R=W(m,(O=E==null?void 0:E.cartLinesAdd)==null?void 0:O.cart,P);A(R)},cartLineUpdateAction:async(p,m)=>{var w,O;if(m.type!=="CARTLINE_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:E,errors:P}=await f(p.cart.id,m.payload.lines),R=W(m,(O=E==null?void 0:E.cartLinesUpdate)==null?void 0:O.cart,P);A(R)},cartLineRemoveAction:async(p,m)=>{var w,O;if(m.type!=="CARTLINE_REMOVE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:E,errors:P}=await h(p.cart.id,m.payload.lines),R=W(m,(O=E==null?void 0:E.cartLinesRemove)==null?void 0:O.cart,P);A(R)},noteUpdateAction:async(p,m)=>{var w,O;if(m.type!=="NOTE_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:E,errors:P}=await g(p.cart.id,m.payload.note),R=W(m,(O=E==null?void 0:E.cartNoteUpdate)==null?void 0:O.cart,P);A(R)},buyerIdentityUpdateAction:async(p,m)=>{var w,O;if(m.type!=="BUYER_IDENTITY_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:E,errors:P}=await c(p.cart.id,m.payload.buyerIdentity),R=W(m,(O=E==null?void 0:E.cartBuyerIdentityUpdate)==null?void 0:O.cart,P);A(R)},cartAttributesUpdateAction:async(p,m)=>{var w,O;if(m.type!=="CART_ATTRIBUTES_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:E,errors:P}=await S(p.cart.id,m.payload.attributes),R=W(m,(O=E==null?void 0:E.cartAttributesUpdate)==null?void 0:O.cart,P);A(R)},discountCodesUpdateAction:async(p,m)=>{var w,O;if(m.type!=="DISCOUNT_CODES_UPDATE"||!((w=p==null?void 0:p.cart)!=null&&w.id))return;const{data:E,errors:P}=await T(p.cart.id,m.payload.discountCodes),R=W(m,(O=E==null?void 0:E.cartDiscountCodesUpdate)==null?void 0:O.cart,P);A(R)},...t&&{onCartActionEntry:(p,m)=>{jr(m)&&t(p,m)}},...r&&{onCartActionOptimisticUI:re((p,m)=>r(p,m))},...n&&{onCartActionComplete:(p,m)=>{Hr(m)&&n(p,m)}}}});return l.useMemo(()=>[I,A,v],[I,A,v])}function xe(e){return{...e,lines:Q(e==null?void 0:e.lines),note:e.note??void 0}}function W(e,t,r){return r?{type:"ERROR",payload:{errors:r,cartActionEvent:e}}:t?{type:"RESOLVE",payload:{cart:xe(t),rawCartResult:t,cartActionEvent:e}}:{type:"CART_COMPLETED",payload:{cartActionEvent:e}}}function jr(e){return e.type==="CART_CREATE"||e.type==="CARTLINE_ADD"||e.type==="CARTLINE_UPDATE"||e.type==="CARTLINE_REMOVE"||e.type==="NOTE_UPDATE"||e.type==="BUYER_IDENTITY_UPDATE"||e.type==="CART_ATTRIBUTES_UPDATE"||e.type==="DISCOUNT_CODES_UPDATE"}function Hr(e){return e.type==="RESOLVE"||e.type==="ERROR"||e.type==="CART_COMPLETED"}const _t=l.createContext(null);function ae(){const e=l.useContext(_t);if(!e)throw new Error("Expected a Cart Context, but no Cart Context was found");return e}function $r({children:e,numCartLines:t,onCreate:r,onLineAdd:n,onLineRemove:a,onLineUpdate:i,onNoteUpdate:o,onBuyerIdentityUpdate:s,onAttributesUpdate:u,onDiscountCodesUpdate:d,onCreateComplete:y,onLineAddComplete:f,onLineRemoveComplete:h,onLineUpdateComplete:g,onNoteUpdateComplete:c,onBuyerIdentityUpdateComplete:S,onAttributesUpdateComplete:T,onDiscountCodesUpdateComplete:b,data:I,cartFragment:A=kr,customerAccessToken:v,countryCode:p,languageCode:m}){var er,tr,rr,nr,ar,ir,or;const E=ce();if(!E)throw new Error("<CartProvider> needs to be a descendant of <ShopifyProvider>");p=(p??E.countryIsoCode??"US").toUpperCase(),m=(m??E.languageIsoCode??"EN").toUpperCase(),p&&(p=p.toUpperCase());const[P,R]=l.useState(p),[w,O]=l.useState(v),H=l.useRef(!1);(P!==p||w!==v)&&(R(p),O(v),H.current=!1);const[k,$]=qr({numCartLines:t,data:I,cartFragment:A,countryCode:p,languageCode:m,onCartActionEntry(C,N){try{switch(N.type){case"CART_CREATE":return r==null?void 0:r();case"CARTLINE_ADD":return n==null?void 0:n();case"CARTLINE_REMOVE":return a==null?void 0:a();case"CARTLINE_UPDATE":return i==null?void 0:i();case"NOTE_UPDATE":return o==null?void 0:o();case"BUYER_IDENTITY_UPDATE":return s==null?void 0:s();case"CART_ATTRIBUTES_UPDATE":return u==null?void 0:u();case"DISCOUNT_CODES_UPDATE":return d==null?void 0:d()}}catch(F){console.error("Cart entry action failed",F)}},onCartActionOptimisticUI(C,N){var F,K,M,_e;if(!C.cart)return{...C};switch(N.type){case"CARTLINE_REMOVE":return{...C,cart:{...C.cart,lines:(K=(F=C==null?void 0:C.cart)==null?void 0:F.lines)==null?void 0:K.filter(L=>(L==null?void 0:L.id)&&!N.payload.lines.includes(L==null?void 0:L.id))}};case"CARTLINE_UPDATE":return{...C,cart:{...C.cart,lines:(_e=(M=C==null?void 0:C.cart)==null?void 0:M.lines)==null?void 0:_e.map(L=>{const Je=N.payload.lines.find(({id:ya})=>ya===(L==null?void 0:L.id));return Je&&Je.quantity?{...L,quantity:Je.quantity}:L})}}}return{...C}},onCartActionComplete(C,N){const F=N.payload.cartActionEvent;try{switch(N.type){case"RESOLVE":switch(F.type){case"CART_CREATE":return y==null?void 0:y();case"CARTLINE_ADD":return f==null?void 0:f();case"CARTLINE_REMOVE":return h==null?void 0:h();case"CARTLINE_UPDATE":return g==null?void 0:g();case"NOTE_UPDATE":return c==null?void 0:c();case"BUYER_IDENTITY_UPDATE":return Wr(C,F)&&(H.current=!0),S==null?void 0:S();case"CART_ATTRIBUTES_UPDATE":return T==null?void 0:T();case"DISCOUNT_CODES_UPDATE":return b==null?void 0:b()}}}catch(K){console.error("onCartActionComplete failed",K)}}}),X=l.useRef(!1),[me,V]=l.useState(!1),se=k.matches("cartCompleted"),pe=(k.value==="idle"||k.value==="error"||k.value==="cartCompleted")&&p!==((rr=(tr=(er=k==null?void 0:k.context)==null?void 0:er.cart)==null?void 0:tr.buyerIdentity)==null?void 0:rr.countryCode)&&!k.context.errors,Ee=l.useRef(!1);l.useEffect(()=>{if(!X.current&&!Ee.current){if(!I&&qe("localStorage")){Ee.current=!0;try{const C=window.localStorage.getItem(Ne);C&&$({type:"CART_FETCH",payload:{cartId:C}})}catch(C){console.warn("error fetching cartId"),console.warn(C)}}X.current=!0,V(!0)}},[I,X,$]),l.useEffect(()=>{!pe||H.current||$({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:{countryCode:p,customerAccessToken:v}}})},[p,v,pe,H,$]);const B=l.useCallback(C=>{if(!X.current)return console.warn("Cart isn't ready yet");$(C)},[$]);l.useEffect(()=>{var C,N,F;if((N=(C=k==null?void 0:k.context)==null?void 0:C.cart)!=null&&N.id&&qe("localStorage"))try{window.localStorage.setItem(Ne,(F=k.context.cart)==null?void 0:F.id)}catch(K){console.warn("Failed to save cartId to localStorage",K)}},[(ar=(nr=k==null?void 0:k.context)==null?void 0:nr.cart)==null?void 0:ar.id]),l.useEffect(()=>{if(se&&qe("localStorage"))try{window.localStorage.removeItem(Ne)}catch(C){console.warn("Failed to delete cartId from localStorage",C)}},[se]);const Qe=l.useCallback(C=>{var N,F;p&&!((N=C.buyerIdentity)!=null&&N.countryCode)&&(C.buyerIdentity==null&&(C.buyerIdentity={}),C.buyerIdentity.countryCode=p),v&&!((F=C.buyerIdentity)!=null&&F.customerAccessToken)&&(C.buyerIdentity==null&&(C.buyerIdentity={}),C.buyerIdentity.customerAccessToken=v),B({type:"CART_CREATE",payload:C})},[p,v,B]),D=Yr(k),ha=l.useMemo(()=>{var C,N,F,K;return{...((C=D==null?void 0:D.context)==null?void 0:C.cart)??{lines:[],attributes:[]},status:Br(D.value),error:(N=D==null?void 0:D.context)==null?void 0:N.errors,totalQuantity:((K=(F=D==null?void 0:D.context)==null?void 0:F.cart)==null?void 0:K.totalQuantity)??0,cartCreate:Qe,cartReady:me,linesAdd(M){var _e,L;(L=(_e=D==null?void 0:D.context)==null?void 0:_e.cart)!=null&&L.id?B({type:"CARTLINE_ADD",payload:{lines:M}}):Qe({lines:M})},linesRemove(M){B({type:"CARTLINE_REMOVE",payload:{lines:M}})},linesUpdate(M){B({type:"CARTLINE_UPDATE",payload:{lines:M}})},noteUpdate(M){B({type:"NOTE_UPDATE",payload:{note:M}})},buyerIdentityUpdate(M){B({type:"BUYER_IDENTITY_UPDATE",payload:{buyerIdentity:M}})},cartAttributesUpdate(M){B({type:"CART_ATTRIBUTES_UPDATE",payload:{attributes:M}})},discountCodesUpdate(M){B({type:"DISCOUNT_CODES_UPDATE",payload:{discountCodes:M}})},cartFragment:A}},[Qe,me,(ir=D==null?void 0:D.context)==null?void 0:ir.cart,(or=D==null?void 0:D.context)==null?void 0:or.errors,D.value,A,B]);return React.createElement(_t.Provider,{value:ha},e)}function Br(e){switch(e){case"uninitialized":case"initializationError":return"uninitialized";case"idle":case"cartCompleted":case"error":return"idle";case"cartFetching":return"fetching";case"cartCreating":return"creating";case"cartLineAdding":case"cartLineRemoving":case"cartLineUpdating":case"noteUpdating":case"buyerIdentityUpdating":case"cartAttributesUpdating":case"discountCodesUpdating":return"updating"}}function Yr(e){const[t,r]=l.useTransition(),[n,a]=l.useState(e),i=l.useRef(!1);t&&(i.current=!0);const o=l.useRef(!1);return!t&&i.current&&(o.current=!0),l.useEffect(()=>{r(()=>{o.current||a(e)})},[e]),o.current?e:n}function qe(e){let t;try{t=window[e];const r="__storage_test__";return t.setItem(r,r),t.removeItem(r),!0}catch(r){return!!(r instanceof DOMException&&(r.code===22||r.code===1014||r.name==="QuotaExceededError"||r.name==="NS_ERROR_DOM_QUOTA_REACHED")&&t&&t.length!==0)}}function Wr(e,t){var r,n;return!!(t.payload.buyerIdentity.countryCode&&((n=(r=e.cart)==null?void 0:r.buyerIdentity)==null?void 0:n.countryCode)!==t.payload.buyerIdentity.countryCode)}const St=l.createContext(null);function Gr({children:e,data:t,initialVariantId:r}){const n=l.useMemo(()=>Q(t.variants??{}),[t.variants]);if(!Kr(n))throw new Error("<ProductProvider/> requires 'product.variants.nodes' or 'product.variants.edges'");const a=l.useMemo(()=>Zr(n),[n]),[i,o]=l.useState(()=>wt(r,n)),[s,u]=l.useState(()=>At(i));l.useEffect(()=>{const T=wt(r,n);o(T),u(At(T))},[r,n]);const d=l.useCallback((T,b)=>{u(I=>{const A={...I,[T]:b};return o(Ct(n,A)),A})},[u,n]),y=l.useCallback((T,b)=>{const I=Ct(n,{...s,[T]:b});return(I==null?void 0:I.availableForSale)??!0},[s,n]),f=l.useMemo(()=>Q(t.sellingPlanGroups??{}).map(T=>({...T,sellingPlans:Q((T==null?void 0:T.sellingPlans)??{})})),[t.sellingPlanGroups]),[h,g]=l.useState(void 0),c=l.useMemo(()=>{var T,b;if(!(!i||!h)){if(!((T=i.sellingPlanAllocations)!=null&&T.nodes)&&!((b=i.sellingPlanAllocations)!=null&&b.edges))throw new Error("<ProductProvider/>: You must include 'sellingPlanAllocations.nodes' or 'sellingPlanAllocations.edges' in your variants in order to calculate selectedSellingPlanAllocation");return Q(i.sellingPlanAllocations).find(I=>{var A;return((A=I==null?void 0:I.sellingPlan)==null?void 0:A.id)===h.id})}},[i,h]),S=l.useMemo(()=>({product:t,variants:n,variantsConnection:t.variants,options:a,selectedVariant:i,setSelectedVariant:o,selectedOptions:s,setSelectedOption:d,setSelectedOptions:u,isOptionInStock:y,selectedSellingPlan:h,setSelectedSellingPlan:g,selectedSellingPlanAllocation:c,sellingPlanGroups:f,sellingPlanGroupsConnection:t.sellingPlanGroups}),[t,y,a,s,h,c,i,f,d,n]);return React.createElement(St.Provider,{value:S},e)}function Tt(){const e=l.useContext(St);if(!e)throw new Error("'useProduct' must be a child of <ProductProvider />");return e}function Ct(e,t){var r,n;if(!(!e.length||((n=(r=e==null?void 0:e[0])==null?void 0:r.selectedOptions)==null?void 0:n.length)!==Object.keys(t).length))return e==null?void 0:e.find(a=>Object.entries(t).every(([i,o])=>{var s;return(s=a==null?void 0:a.selectedOptions)==null?void 0:s.some(u=>(u==null?void 0:u.name)===i&&(u==null?void 0:u.value)===o)}))}function Zr(e){const t=e.reduce((r,n)=>{var a;if(!n.selectedOptions)throw new Error("'getOptions' requires 'variant.selectedOptions'");return(a=n==null?void 0:n.selectedOptions)==null||a.forEach(i=>{r[(i==null?void 0:i.name)??""]=r[(i==null?void 0:i.name)??""]||new Set,r[(i==null?void 0:i.name)??""].add((i==null?void 0:i.value)??"")}),r},{});return Object.keys(t).map(r=>({name:r,values:Array.from(t[r])}))}function wt(e,t){if(e){const r=t.find(n=>(n==null?void 0:n.id)===e);return r||console.warn("<ProductProvider/> received a 'initialVariantId' prop, but could not actually find a variant with that ID"),r}if(e===null)return null;if(e===void 0)return t.find(r=>r==null?void 0:r.availableForSale)||t[0]}function At(e){return e!=null&&e.selectedOptions?e.selectedOptions.reduce((t,r)=>(t[(r==null?void 0:r.name)??""]=(r==null?void 0:r.value)??"",t),{}):{}}function Kr(e){return!(!e||!Array.isArray(e))}function we(e){const{as:t,onClick:r,defaultOnClick:n,children:a,buttonRef:i,...o}=e,s=l.useCallback(d=>{if(r){const y=r(d);if(typeof y=="boolean"&&y===!1||d!=null&&d.defaultPrevented)return}n==null||n(d)},[n,r]),u=t||"button";return React.createElement(u,{ref:i,onClick:s,...o},a)}function Qr(e){const[t,r]=l.useState(!1),{variantId:n,quantity:a=1,attributes:i,sellingPlanId:o,onClick:s,children:u,accessibleAddingToCartLabel:d,...y}=e,{status:f,linesAdd:h}=ae(),{selectedVariant:g}=Tt(),c=n??(g==null?void 0:g.id)??"",S=n===null||c===""||g===null||t||y.disabled;l.useEffect(()=>{t&&f==="idle"&&r(!1)},[f,t]);const T=l.useCallback(()=>{r(!0),h([{quantity:a,merchandiseId:c||"",attributes:i,sellingPlanId:o}])},[h,a,c,i,o]);return U.createElement(U.Fragment,null,U.createElement(we,{...y,disabled:S,onClick:s,defaultOnClick:T},u),d?U.createElement("p",{style:{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"},role:"alert","aria-live":"assertive"},t?d:null):null)}const te={PAGE_VIEW:"PAGE_VIEW",ADD_TO_CART:"ADD_TO_CART",PAGE_VIEW_2:"PAGE_VIEW_2",COLLECTION_VIEW:"COLLECTION_VIEW",PRODUCT_VIEW:"PRODUCT_VIEW",SEARCH_VIEW:"SEARCH_VIEW"},Ae={article:"article",blog:"blog",captcha:"captcha",cart:"cart",collection:"collection",customersAccount:"customers/account",customersActivateAccount:"customers/activate_account",customersAddresses:"customers/addresses",customersLogin:"customers/login",customersOrder:"customers/order",customersRegister:"customers/register",customersResetPassword:"customers/reset_password",giftCard:"gift_card",home:"index",listCollections:"list-collections",forbidden:"403",notFound:"404",page:"page",password:"password",product:"product",policy:"policy",search:"search"},bt={hydrogen:"hydrogen",headless:"headless"},It={hydrogen:"6167201",headless:"12875497473"};function j(e,t){return{schema_id:e,payload:t,metadata:{event_created_at_ms:Date.now()}}}function x(e){const t={id:"",resource:null,resourceId:null,search:"",searchParams:new URLSearchParams,hash:""};if(typeof e!="string")return t;try{const{search:r,searchParams:n,pathname:a,hash:i}=new URL(e),o=a.split("/"),s=o[o.length-1],u=o[o.length-2];return!s||!u?t:{id:`${s}${r}${i}`||"",resource:u??null,resourceId:s||null,search:r,searchParams:n,hash:i}}catch{return t}}function q(e,t){return typeof e!="object"?{}:(Object.entries(e).forEach(([r,n])=>{n&&(t[r]=n)}),t)}function Jr(e){return typeof document>"u"?(console.error(`${e} should only be used within the useEffect callback or event handlers`),!0):!1}const vt="xxxx-4xxx-xxxx-xxxxxxxxxxxx";function be(){let e="";try{const t=window.crypto,r=new Uint16Array(31);t.getRandomValues(r);let n=0;e=vt.replace(/[x]/g,a=>{const i=r[n]%16,o=a==="x"?i:i&3|8;return n++,o.toString(16)}).toUpperCase()}catch{e=vt.replace(/[x]/g,r=>{const n=Math.random()*16|0;return(r==="x"?n:n&3|8).toString(16)}).toUpperCase()}return`${Xr()}-${e}`}function Xr(){let e=0,t=0;e=new Date().getTime()>>>0;try{t=performance.now()>>>0}catch{t=0}return Math.abs(e+t).toString(16).toLowerCase().padStart(8,"0")}function zr(e){const t=ee(e);return{[Te]:t.uniqueToken,[Ce]:t.visitToken}}const en="trekkie_storefront_page_view/1.4",tn="myshopify.dev";function Pt(e){const t=e,{id:r,resource:n}=x(t.resourceId),a=n?n.toLowerCase():void 0;return[j(en,q({pageType:t.pageType,customerId:parseInt(x(t.customerId).id||"0"),resourceType:a,resourceId:parseInt(r)},rn(t)))]}function rn(e){return{appClientId:e.shopifySalesChannel?It[e.shopifySalesChannel]:It.headless,isMerchantRequest:nn(e.url),hydrogenSubchannelId:e.storefrontId||e.hydrogenSubchannelId||"0",isPersistentCookie:e.hasUserConsent,uniqToken:e.uniqueToken,visitToken:e.visitToken,microSessionId:be(),microSessionCount:1,url:e.url,path:e.path,search:e.search,referrer:e.referrer,title:e.title,shopId:parseInt(x(e.shopId).id),currency:e.currency,contentLanguage:e.acceptedLanguage||"en"}}function nn(e){if(typeof e!="string")return!1;const t=new URL(e).hostname;return t.indexOf(tn)!==-1||t==="localhost"}const an="2025.7.1",G="custom_storefront_customer_tracking/1.2",Ot="page_rendered",Rt="collection_page_rendered",kt="product_page_rendered",on="product_added_to_cart",Dt="search_submitted";function le(e){return{canonical_url:e.canonicalUrl||e.url,customer_id:parseInt(x(e.customerId).id||"0")}}function sn(e){const t=e,r=le(t),n=t.pageType,a=[];switch(a.push(j(G,q({event_name:Ot,...r},Z(t)))),n){case Ae.collection:a.push(j(G,q({event_name:Rt,...r,collection_name:t.collectionHandle,collection_id:parseInt(x(t.collectionId).id)},Z(t))));break;case Ae.product:a.push(j(G,q({event_name:kt,...r,products:je(t.products),total_value:t.totalValue},Z(t))));break;case Ae.search:a.push(j(G,q({event_name:Dt,...r,search_string:t.searchString},Z(t))));break}return a}function cn(e){const t=e,r=le(t);return[j(G,q({event_name:Ot,...r},Z(t)))]}function un(e){const t=e,r=le(t);return[j(G,q({event_name:Rt,...r,collection_name:t.collectionHandle,collection_id:parseInt(x(t.collectionId).id)},Z(t)))]}function ln(e){const t=e,r=le(t);return[j(G,q({event_name:kt,...r,products:je(t.products),total_value:t.totalValue},Z(t)))]}function dn(e){const t=e,r=le(t);return[j(G,q({event_name:Dt,...r,search_string:t.searchString},Z(t)))]}function fn(e){const t=e,r=x(t.cartId);return[j(G,q({event_name:on,customerId:t.customerId,cart_token:r!=null&&r.id?`${r.id}`:null,total_value:t.totalValue,products:je(t.products),customer_id:parseInt(x(t.customerId).id||"0")},Z(t)))]}function Z(e){const t=e;return{source:e.shopifySalesChannel||bt.headless,asset_version_id:e.assetVersionId||an,hydrogenSubchannelId:e.storefrontId||e.hydrogenSubchannelId||"0",is_persistent_cookie:e.hasUserConsent,deprecated_visit_token:e.visitToken,unique_token:e.uniqueToken,event_time:Date.now(),event_id:be(),event_source_url:e.url,referrer:e.referrer,user_agent:e.userAgent,navigation_type:e.navigationType,navigation_api:e.navigationApi,shop_id:parseInt(x(e.shopId).id),currency:e.currency,ccpa_enforced:t.ccpaEnforced||!1,gdpr_enforced:t.gdprEnforced||!1,gdpr_enforced_as_string:t.gdprEnforced?"true":"false",analytics_allowed:e.analyticsAllowed||!1,marketing_allowed:e.marketingAllowed||!1,sale_of_data_allowed:e.saleOfDataAllowed||!1}}function je(e){return e?e.map(t=>{const r=q({variant_gid:t.variantGid,category:t.category,sku:t.sku,product_id:parseInt(x(t.productGid).id),variant_id:parseInt(x(t.variantGid).id)},{product_gid:t.productGid,name:t.name,variant:t.variantName||"",brand:t.brand,price:parseFloat(t.price),quantity:Number(t.quantity||0)});return JSON.stringify(r)}):[]}function hn(e,t){const{eventName:r,payload:n}=e;if(!n.hasUserConsent)return Promise.resolve();let a=[];const i=n;return r===te.PAGE_VIEW?a=a.concat(Pt(i),sn(i)):r===te.ADD_TO_CART?a=a.concat(fn(n)):r===te.PAGE_VIEW_2?a=a.concat(Pt(i),cn(i)):r===te.COLLECTION_VIEW?a=a.concat(un(i)):r===te.PRODUCT_VIEW?a=a.concat(ln(i)):r===te.SEARCH_VIEW&&(a=a.concat(dn(i))),a.length?gn(a,t):Promise.resolve()}function yn(){return typeof window>"u"||!window.navigator?!1:/Chrome-Lighthouse/.test(window.navigator.userAgent)}const Vt="sendShopifyAnalytics request is unsuccessful";function gn(e,t){if(yn())return Promise.resolve();const r={events:e,metadata:{event_sent_at_ms:Date.now()}};try{return fetch(t?`https://${t}/.well-known/shopify/monorail/unstable/produce_batch`:"https://monorail-edge.shopifysvc.com/unstable/produce_batch",{method:"post",headers:{"content-type":"text/plain"},body:JSON.stringify(r)}).then(n=>{if(!n.ok)throw new Error("Response failed");return n.text()}).then(n=>{n&&JSON.parse(n).result.forEach(i=>{i.status!==200&&console.error(Vt,`
|
|
273
273
|
|
|
274
|
-
`,i.message)})}).catch(n=>{console.error(Pt,n)})}catch{return Promise.resolve()}}function fn(){if(Kr("getClientBrowserParameters"))return{uniqueToken:"",visitToken:"",url:"",path:"",search:"",referrer:"",title:"",userAgent:"",navigationType:"",navigationApi:""};const[e,t]=yn(),r=Ae(document.cookie);return{uniqueToken:r[J],visitToken:r[X],url:location.href,path:location.pathname,search:location.search,referrer:document.referrer,title:document.title,userAgent:navigator.userAgent,navigationType:e,navigationApi:t}}function hn(){try{const e=(performance==null?void 0:performance.getEntriesByType)&&(performance==null?void 0:performance.getEntriesByType("navigation"));if(e&&e[0]){const t=window.performance.getEntriesByType("navigation")[0].type;return t&&t.toString()}}catch{}}function gn(){var e,t;try{if(PerformanceNavigation&&((e=performance==null?void 0:performance.navigation)==null?void 0:e.type)!==null&&((t=performance==null?void 0:performance.navigation)==null?void 0:t.type)!==void 0){const r=performance.navigation.type;switch(r){case PerformanceNavigation.TYPE_NAVIGATE:return"navigate";case PerformanceNavigation.TYPE_RELOAD:return"reload";case PerformanceNavigation.TYPE_BACK_FORWARD:return"back_forward";default:return`unknown: ${r}`}}}catch{}}function yn(){try{let e="PerformanceNavigationTiming",t=hn();return t||(t=gn(),e="performance.navigation"),t?[t,e]:["unknown","unknown"]}catch{}return["error","error"]}function mn(e){const{cartCreate:t,checkoutUrl:r}=ie(),[n,a]=c.useState(!1),{quantity:i,variantId:s,sellingPlanId:o,onClick:u,attributes:l,children:y,...d}=e;c.useEffect(()=>{n&&r&&(window.location.href=r)},[n,r]);const g=c.useCallback(()=>{a(!0),t({lines:[{quantity:i??1,merchandiseId:s,attributes:l,sellingPlanId:o}]})},[t,i,s,l,o]);return React.createElement(we,{disabled:n??d.disabled,...d,onClick:u,defaultOnClick:g},y)}function pn(e){const[t,r]=c.useState(!1),{status:n,checkoutUrl:a}=ie(),{children:i,...s}=e;return c.useEffect(()=>{t&&a&&n==="idle"&&(window.location.href=a)},[t,n,a]),React.createElement(we,{...s,disabled:t||s.disabled,onClick:()=>r(!0)},i)}function Ot(e){const{countryIsoCode:t,languageIsoCode:r}=ue(),n=r.includes("_")?r.replace("_","-"):`${r}-${t}`;if(!n)throw new Error("useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work");const a=parseFloat(e.amount),{defaultFormatter:i,nameFormatter:s,narrowSymbolFormatter:o,withoutTrailingZerosFormatter:u,withoutCurrencyFormatter:l,withoutTrailingZerosOrCurrencyFormatter:y}=c.useMemo(()=>{const f={style:"currency",currency:e.currencyCode};return{defaultFormatter:oe(n,f),nameFormatter:oe(n,{...f,currencyDisplay:"name"}),narrowSymbolFormatter:oe(n,{...f,currencyDisplay:"narrowSymbol"}),withoutTrailingZerosFormatter:oe(n,{...f,minimumFractionDigits:0,maximumFractionDigits:0}),withoutCurrencyFormatter:oe(n),withoutTrailingZerosOrCurrencyFormatter:oe(n,{minimumFractionDigits:0,maximumFractionDigits:0})}},[e.currencyCode,n]),d=f=>f.type==="currency",g=c.useMemo(()=>({original:()=>e,currencyCode:()=>e.currencyCode,localizedString:()=>i().format(a),parts:()=>i().formatToParts(a),withoutTrailingZeros:()=>a%1===0?u().format(a):i().format(a),withoutTrailingZerosAndCurrency:()=>a%1===0?y().format(a):l().format(a),currencyName:()=>{var f;return((f=s().formatToParts(a).find(d))==null?void 0:f.value)??e.currencyCode},currencySymbol:()=>{var f;return((f=i().formatToParts(a).find(d))==null?void 0:f.value)??e.currencyCode},currencyNarrowSymbol:()=>{var f;return((f=o().formatToParts(a).find(d))==null?void 0:f.value)??""},amount:()=>i().formatToParts(a).filter(f=>["decimal","fraction","group","integer","literal"].includes(f.type)).map(f=>f.value).join("")}),[e,a,s,i,o,l,u,y]);return c.useMemo(()=>new Proxy(g,{get:(f,h)=>{var S;return(S=Reflect.get(f,h))==null?void 0:S.call(null)}}),[g])}const Rt=new Map;function oe(e,t){const r=JSON.stringify([e,t]);return function(){let n=Rt.get(r);return n||(n=new Intl.NumberFormat(e,t),Rt.set(r,n)),n}}function Ie({data:e,as:t,withoutCurrency:r,withoutTrailingZeros:n,measurement:a,measurementSeparator:i="/",...s}){if(!En(e))throw new Error("<Money/> needs a valid 'data' prop that has 'amount' and 'currencyCode'");const o=Ot(e),u=t??"div";let l=o.localizedString;return(r||n)&&(r&&!n?l=o.amount:!r&&n?l=o.withoutTrailingZeros:l=o.withoutTrailingZerosAndCurrency),React.createElement(u,{...s},l,a&&a.referenceUnit&&React.createElement(React.Fragment,null,i,a.referenceUnit))}function En(e){return typeof e.amount=="string"&&!!e.amount&&typeof e.currencyCode=="string"&&!!e.currencyCode}function Sn(e){const{cost:t}=ie(),{amountType:r="total",children:n,...a}=e;let i;return r=="total"?i=t==null?void 0:t.totalAmount:r=="subtotal"?i=t==null?void 0:t.subtotalAmount:r=="tax"?i=t==null?void 0:t.totalTaxAmount:r=="duty"&&(i=t==null?void 0:t.totalDutyAmount),i==null?null:React.createElement(Ie,{...a,data:i},n)}const Dt=c.createContext(null);function Fe(){const e=c.useContext(Dt);if(e==null)throw new Error("Expected a cart line context but none was found");return e}function _n({children:e,line:t}){return React.createElement(Dt.Provider,{value:t},e)}function Tn(e){const t=Fe(),{as:r,...n}=e,a=r||"span";return React.createElement(a,{...n},t.quantity)}function Cn(e){const{status:t,linesRemove:r,linesUpdate:n}=ie(),a=Fe(),{children:i,adjust:s,onClick:o,...u}=e,l=c.useCallback(()=>{if(s==="remove"){r([(a==null?void 0:a.id)??""]);return}const d=s==="decrease"?((a==null?void 0:a.quantity)??0)-1:((a==null?void 0:a.quantity)??0)+1;if(d<=0){r([(a==null?void 0:a.id)??""]);return}const g={id:(a==null?void 0:a.id)??"",quantity:d,attributes:(a==null?void 0:a.attributes)??[]};n([g])},[s,a==null?void 0:a.attributes,a==null?void 0:a.id,a==null?void 0:a.quantity,r,n]),y=u.disabled;return React.createElement(we,{...u,onClick:o,defaultOnClick:l,disabled:typeof y<"u"?y:t!=="idle"},i)}const An={DateTime:"string",Decimal:"string",HTML:"string",URL:"string",Color:"string",UnsignedInt64:"string"},wn={DateTime:"string",Decimal:"string",HTML:"string",ISO8601DateTime:"string",URL:"string",UnsignedInt64:"string"},Vt=c.forwardRef((e,t)=>{const{data:r,options:n,id:a=r.id,frameBorder:i="0",allow:s="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:o=!0,loading:u="lazy",...l}=e;if(!r.embedUrl)throw new Error("<ExternalVideo/> requires the 'embedUrl' property");let y=r.embedUrl;if(n){const d=new URL(r.embedUrl);for(const[g,f]of Object.entries(n))typeof f>"u"||d.searchParams.set(g,f.toString());y=d.toString()}return React.createElement("iframe",{...l,id:a??r.embedUrl,title:r.alt??r.id??"external video",frameBorder:i,allow:s,allowFullScreen:o,src:y,loading:u,ref:t})}),je=",",se={OPTION:":",END_OF_PREFIX:",",SEQUENCE_GAP:" ",RANGE:"-"},qe=(()=>{const e=new Map;return function(t,r){var n;if(t.length===0)return!1;if(!e.has(r)){const a=new Set;for(const i of Ut(r)){a.add(i.join(je));for(let s=0;s<i.length;s++)a.add(i.slice(0,s+1).join(je))}e.set(r,a)}return!!((n=e.get(r))!=null&&n.has(t.join(je)))}})();function Ut(e){if(!e)return[];if(e.startsWith("v1_"))return In(bn(e));throw new Error("Unsupported option value encoding")}const bn=e=>e.replace(/^v1_/,"");function In(e){const t=/[ :,-]/g;let r=0,n;const a=[],i=[];let s=0,o=null;for(;n=t.exec(e);){const l=n[0],y=Number.parseInt(e.slice(r,n.index))||0;if(o!==null){for(;o<y;o++)i[s]=o,a.push([...i]);o=null}i[s]=y,l===se.RANGE?o=y:l===se.OPTION?s++:((l===se.SEQUENCE_GAP||l===se.END_OF_PREFIX&&e[n.index-1]!==se.END_OF_PREFIX)&&a.push([...i]),l===se.END_OF_PREFIX&&(i.pop(),s--)),r=t.lastIndex}const u=e.match(/\d+$/g);if(u){const l=parseInt(u[0]);if(o!=null)for(;o<=l;o++)i[s]=o,a.push([...i]);else a.push([l])}return a}function vn(e){return Object.assign({},...e.map(t=>({[t.name]:Object.assign({},...t!=null&&t.optionValues?t.optionValues.map((r,n)=>({[r.name]:n})):[])})))}function fe(e){return Object.assign({},...e.map(t=>({[t.name]:t.value})))}function He(e){return JSON.stringify(fe(e))}function kt(e){return Array.isArray(e)?JSON.stringify(Object.assign({},...e.map(t=>({[t.name]:t.value})))):JSON.stringify(e)}function Pn(e,t){return Object.keys(e).map(n=>t[n]?t[n][e[n]]:null).filter(n=>n!==null)}function On(e){return Object.assign({},...e.map(t=>({[kt(t.selectedOptions||[])]:t})))}const Nt=["options","selectedOrFirstAvailableVariant","adjacentVariants"],Rn=["handle","encodedVariantExistence","encodedVariantAvailability"];function z(e){return console.error(`[h2:error:getProductOptions] product.${e} is missing. Make sure you query for this field from the Storefront API.`),!1}function Mt(e,t=!1){var a;let r=!0;const n=Object.keys(e);if((t?[...Nt,...Rn]:Nt).forEach(i=>{n.includes(i)||(r=z(i))}),e.options){const i=e==null?void 0:e.options[0];if(t&&!(i!=null&&i.name)&&(r=z("options.name")),(a=e==null?void 0:e.options[0])!=null&&a.optionValues){let s=e.options[0].optionValues[0];t&&!(s!=null&&s.name)&&(r=z("options.optionValues.name")),s=e.options[0].optionValues.filter(o=>!!(o!=null&&o.firstSelectableVariant))[0],s!=null&&s.firstSelectableVariant&&(r=$e(s.firstSelectableVariant,"options.optionValues.firstSelectableVariant",r,t))}else r=z("options.optionValues")}return e.selectedOrFirstAvailableVariant&&(r=$e(e.selectedOrFirstAvailableVariant,"selectedOrFirstAvailableVariant",r,t)),e.adjacentVariants&&e.adjacentVariants[0]&&(r=$e(e.adjacentVariants[0],"adjacentVariants",r,t)),r?e:{}}function $e(e,t,r,n){var i;let a=r;if(n&&!((i=e.product)!=null&&i.handle)&&(a=z(`${t}.product.handle`)),e.selectedOptions){const s=e.selectedOptions[0];s!=null&&s.name||(a=z(`${t}.selectedOptions.name`)),s!=null&&s.value||(a=z(`${t}.selectedOptions.value`))}else a=z(`${t}.selectedOptions`);return a}function Dn(e){const t=Mt(e);if(!t.options)return[];const r={};t.options.map(a=>{var i;(i=a.optionValues)==null||i.map(s=>{if(s.firstSelectableVariant){const o=He(s.firstSelectableVariant.selectedOptions);r[o]=s.firstSelectableVariant}})}),t.adjacentVariants.map(a=>{const i=He(a.selectedOptions);r[i]=a});const n=t.selectedOrFirstAvailableVariant;if(n){const a=He(n.selectedOptions);r[a]=n}return Object.values(r)}function Vn(e){const t=Mt(e,!0);if(!t.options)return[];const{options:r,selectedOrFirstAvailableVariant:n,adjacentVariants:a,encodedVariantExistence:i,encodedVariantAvailability:s,handle:o}=t,u=n==null?void 0:n.selectedOptions.map(h=>h.name),l=r.filter(h=>u&&u.indexOf(h.name)>=0),y=vn(r),d=On(n?[n,...a]:a),g=fe(n?n.selectedOptions:[]);return l.map((h,S)=>({...h,optionValues:h.optionValues.map(T=>{var O;const b={...g};b[h.name]=T.name;const I=kt(b||[]),v=Pn(b||[],y).slice(0,S+1),p=qe(v,i||""),m=qe(v,s||""),E=d[I]||T.firstSelectableVariant;let P={};E&&(P=fe(E.selectedOptions||[]));const R=new URLSearchParams(P),A=((O=E==null?void 0:E.product)==null?void 0:O.handle)||o;return{...T,variant:E,handle:A,variantUriQuery:R.toString(),selected:g[h.name]===T.name,exists:p,available:m,isDifferentProduct:A!==o}})}))}const Un=`#graphql
|
|
274
|
+
`,i.message)})}).catch(n=>{console.error(Vt,n)})}catch{return Promise.resolve()}}function mn(){if(Jr("getClientBrowserParameters"))return{uniqueToken:"",visitToken:"",url:"",path:"",search:"",referrer:"",title:"",userAgent:"",navigationType:"",navigationApi:""};const[e,t]=_n(),r=ee();return{uniqueToken:r.uniqueToken,visitToken:r.visitToken,url:location.href,path:location.pathname,search:location.search,referrer:document.referrer,title:document.title,userAgent:navigator.userAgent,navigationType:e,navigationApi:t}}function pn(){try{const e=(performance==null?void 0:performance.getEntriesByType)&&(performance==null?void 0:performance.getEntriesByType("navigation"));if(e&&e[0]){const t=window.performance.getEntriesByType("navigation")[0].type;return t&&t.toString()}}catch{}}function En(){var e,t;try{if(PerformanceNavigation&&((e=performance==null?void 0:performance.navigation)==null?void 0:e.type)!==null&&((t=performance==null?void 0:performance.navigation)==null?void 0:t.type)!==void 0){const r=performance.navigation.type;switch(r){case PerformanceNavigation.TYPE_NAVIGATE:return"navigate";case PerformanceNavigation.TYPE_RELOAD:return"reload";case PerformanceNavigation.TYPE_BACK_FORWARD:return"back_forward";default:return`unknown: ${r}`}}}catch{}}function _n(){try{let e="PerformanceNavigationTiming",t=pn();return t||(t=En(),e="performance.navigation"),t?[t,e]:["unknown","unknown"]}catch{}return["error","error"]}function Sn(e){const{cartCreate:t,checkoutUrl:r}=ae(),[n,a]=l.useState(!1),{quantity:i,variantId:o,sellingPlanId:s,onClick:u,attributes:d,children:y,...f}=e;l.useEffect(()=>{n&&r&&(window.location.href=r)},[n,r]);const h=l.useCallback(()=>{a(!0),t({lines:[{quantity:i??1,merchandiseId:o,attributes:d,sellingPlanId:s}]})},[t,i,o,d,s]);return React.createElement(we,{disabled:n??f.disabled,...f,onClick:u,defaultOnClick:h},y)}function Tn(e){const[t,r]=l.useState(!1),{status:n,checkoutUrl:a}=ae(),{children:i,...o}=e;return l.useEffect(()=>{t&&a&&n==="idle"&&(window.location.href=a)},[t,n,a]),React.createElement(we,{...o,disabled:t||o.disabled,onClick:()=>r(!0)},i)}function Ut(e){const{countryIsoCode:t,languageIsoCode:r}=ce(),n=r.includes("_")?r.replace("_","-"):`${r}-${t}`;if(!n)throw new Error("useMoney(): Unable to get 'locale' from 'useShop()', which means that 'locale' was not passed to '<ShopifyProvider/>'. 'locale' is required for 'useMoney()' to work");const a=parseFloat(e.amount);let i=!0;try{new Intl.NumberFormat(n,{style:"currency",currency:e.currencyCode})}catch(c){c instanceof RangeError&&c.message.includes("currency")&&(i=!1)}const{defaultFormatter:o,nameFormatter:s,narrowSymbolFormatter:u,withoutTrailingZerosFormatter:d,withoutCurrencyFormatter:y,withoutTrailingZerosOrCurrencyFormatter:f}=l.useMemo(()=>{const c=i?{style:"currency",currency:e.currencyCode}:{style:"decimal",minimumFractionDigits:2,maximumFractionDigits:2};return{defaultFormatter:ie(n,c),nameFormatter:ie(n,{...c,currencyDisplay:"name"}),narrowSymbolFormatter:ie(n,{...c,currencyDisplay:"narrowSymbol"}),withoutTrailingZerosFormatter:ie(n,{...c,minimumFractionDigits:0,maximumFractionDigits:0}),withoutCurrencyFormatter:ie(n,{minimumFractionDigits:2,maximumFractionDigits:2}),withoutTrailingZerosOrCurrencyFormatter:ie(n,{minimumFractionDigits:0,maximumFractionDigits:0})}},[e.currencyCode,n,i]),h=c=>c.type==="currency",g=l.useMemo(()=>({original:()=>e,currencyCode:()=>e.currencyCode,localizedString:()=>{const c=o().format(a);return i?c:`${c} ${e.currencyCode}`},parts:()=>{const c=o().formatToParts(a);return i||c.push({type:"literal",value:" "},{type:"currency",value:e.currencyCode}),c},withoutTrailingZeros:()=>{const c=a%1===0?d().format(a):o().format(a);return i?c:`${c} ${e.currencyCode}`},withoutTrailingZerosAndCurrency:()=>a%1===0?f().format(a):y().format(a),currencyName:()=>{var c;return((c=s().formatToParts(a).find(h))==null?void 0:c.value)??e.currencyCode},currencySymbol:()=>{var c;return((c=o().formatToParts(a).find(h))==null?void 0:c.value)??e.currencyCode},currencyNarrowSymbol:()=>{var c;return((c=u().formatToParts(a).find(h))==null?void 0:c.value)??""},amount:()=>o().formatToParts(a).filter(c=>["decimal","fraction","group","integer","literal"].includes(c.type)).map(c=>c.value).join("")}),[e,a,i,s,o,u,y,d,f]);return l.useMemo(()=>new Proxy(g,{get:(c,S)=>{var T;return(T=Reflect.get(c,S))==null?void 0:T.call(null)}}),[g])}const Nt=new Map;function ie(e,t){const r=JSON.stringify([e,t]);return function(){let n=Nt.get(r);if(!n){try{n=new Intl.NumberFormat(e,t)}catch(a){if(a instanceof RangeError&&a.message.includes("currency")){const i={...t};delete i.currency,delete i.currencyDisplay,delete i.currencySign,n=new Intl.NumberFormat(e,i)}else throw a}Nt.set(r,n)}return n}}function Ie({data:e,as:t,withoutCurrency:r,withoutTrailingZeros:n,measurement:a,measurementSeparator:i="/",...o}){if(!Cn(e))throw new Error("<Money/> needs a valid 'data' prop that has 'amount' and 'currencyCode'");const s=Ut(e),u=t??"div";let d=s.localizedString;return(r||n)&&(r&&!n?d=s.amount:!r&&n?d=s.withoutTrailingZeros:d=s.withoutTrailingZerosAndCurrency),React.createElement(u,{...o},d,a&&a.referenceUnit&&React.createElement(React.Fragment,null,i,a.referenceUnit))}function Cn(e){return typeof e.amount=="string"&&!!e.amount&&typeof e.currencyCode=="string"&&!!e.currencyCode}function wn(e){const{cost:t}=ae(),{amountType:r="total",children:n,...a}=e;let i;return r=="total"?i=t==null?void 0:t.totalAmount:r=="subtotal"?i=t==null?void 0:t.subtotalAmount:r=="tax"?i=t==null?void 0:t.totalTaxAmount:r=="duty"&&(i=t==null?void 0:t.totalDutyAmount),i==null?null:React.createElement(Ie,{...a,data:i},n)}const Mt=l.createContext(null);function He(){const e=l.useContext(Mt);if(e==null)throw new Error("Expected a cart line context but none was found");return e}function An({children:e,line:t}){return React.createElement(Mt.Provider,{value:t},e)}function bn(e){const t=He(),{as:r,...n}=e,a=r||"span";return React.createElement(a,{...n},t.quantity)}function In(e){const{status:t,linesRemove:r,linesUpdate:n}=ae(),a=He(),{children:i,adjust:o,onClick:s,...u}=e,d=l.useCallback(()=>{if(o==="remove"){r([(a==null?void 0:a.id)??""]);return}const f=o==="decrease"?((a==null?void 0:a.quantity)??0)-1:((a==null?void 0:a.quantity)??0)+1;if(f<=0){r([(a==null?void 0:a.id)??""]);return}const h={id:(a==null?void 0:a.id)??"",quantity:f,attributes:(a==null?void 0:a.attributes)??[]};n([h])},[o,a==null?void 0:a.attributes,a==null?void 0:a.id,a==null?void 0:a.quantity,r,n]),y=u.disabled;return React.createElement(we,{...u,onClick:s,defaultOnClick:d,disabled:typeof y<"u"?y:t!=="idle"},i)}const vn={DateTime:"string",Decimal:"string",HTML:"string",URL:"string",Color:"string",UnsignedInt64:"string"},Pn={DateTime:"string",Decimal:"string",HTML:"string",ISO8601DateTime:"string",URL:"string",UnsignedInt64:"string"},Ft=l.forwardRef((e,t)=>{const{data:r,options:n,id:a=r.id,frameBorder:i="0",allow:o="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture",allowFullScreen:s=!0,loading:u="lazy",...d}=e;if(!r.embedUrl)throw new Error("<ExternalVideo/> requires the 'embedUrl' property");let y=r.embedUrl;if(n){const f=new URL(r.embedUrl);for(const[h,g]of Object.entries(n))typeof g>"u"||f.searchParams.set(h,g.toString());y=f.toString()}return React.createElement("iframe",{...d,id:a??r.embedUrl,title:r.alt??r.id??"external video",frameBorder:i,allow:o,allowFullScreen:s,src:y,loading:u,ref:t})}),$e=",",oe={OPTION:":",END_OF_PREFIX:",",SEQUENCE_GAP:" ",RANGE:"-"},Be=(()=>{const e=new Map;return function(t,r){var n;if(t.length===0)return!1;if(!e.has(r)){const a=new Set;for(const i of Lt(r)){a.add(i.join($e));for(let o=0;o<i.length;o++)a.add(i.slice(0,o+1).join($e))}e.set(r,a)}return!!((n=e.get(r))!=null&&n.has(t.join($e)))}})();function Lt(e){if(!e)return[];if(e.startsWith("v1_"))return Rn(On(e));throw new Error("Unsupported option value encoding")}const On=e=>e.replace(/^v1_/,"");function Rn(e){const t=/[ :,-]/g;let r=0,n;const a=[],i=[];let o=0,s=null;for(;n=t.exec(e);){const d=n[0],y=Number.parseInt(e.slice(r,n.index))||0;if(s!==null){for(;s<y;s++)i[o]=s,a.push([...i]);s=null}i[o]=y,d===oe.RANGE?s=y:d===oe.OPTION?o++:((d===oe.SEQUENCE_GAP||d===oe.END_OF_PREFIX&&e[n.index-1]!==oe.END_OF_PREFIX)&&a.push([...i]),d===oe.END_OF_PREFIX&&(i.pop(),o--)),r=t.lastIndex}const u=e.match(/\d+$/g);if(u){const d=parseInt(u[0]);if(s!=null)for(;s<=d;s++)i[o]=s,a.push([...i]);else a.push([d])}return a}function kn(e){return Object.assign({},...e.map(t=>({[t.name]:Object.assign({},...t!=null&&t.optionValues?t.optionValues.map((r,n)=>({[r.name]:n})):[])})))}function de(e){return Object.assign({},...e.map(t=>({[t.name]:t.value})))}function Ye(e){return JSON.stringify(de(e))}function xt(e){return Array.isArray(e)?JSON.stringify(Object.assign({},...e.map(t=>({[t.name]:t.value})))):JSON.stringify(e)}function Dn(e,t){return Object.keys(e).map(n=>t[n]?t[n][e[n]]:null).filter(n=>n!==null)}function Vn(e){return Object.assign({},...e.map(t=>({[xt(t.selectedOptions||[])]:t})))}const qt=["options","selectedOrFirstAvailableVariant","adjacentVariants"],Un=["handle","encodedVariantExistence","encodedVariantAvailability"];function J(e){return console.error(`[h2:error:getProductOptions] product.${e} is missing. Make sure you query for this field from the Storefront API.`),!1}function jt(e,t=!1){var a;let r=!0;const n=Object.keys(e);if((t?[...qt,...Un]:qt).forEach(i=>{n.includes(i)||(r=J(i))}),e.options){const i=e==null?void 0:e.options[0];if(t&&!(i!=null&&i.name)&&(r=J("options.name")),(a=e==null?void 0:e.options[0])!=null&&a.optionValues){let o=e.options[0].optionValues[0];t&&!(o!=null&&o.name)&&(r=J("options.optionValues.name")),o=e.options[0].optionValues.filter(s=>!!(s!=null&&s.firstSelectableVariant))[0],o!=null&&o.firstSelectableVariant&&(r=We(o.firstSelectableVariant,"options.optionValues.firstSelectableVariant",r,t))}else r=J("options.optionValues")}return e.selectedOrFirstAvailableVariant&&(r=We(e.selectedOrFirstAvailableVariant,"selectedOrFirstAvailableVariant",r,t)),e.adjacentVariants&&e.adjacentVariants[0]&&(r=We(e.adjacentVariants[0],"adjacentVariants",r,t)),r?e:{}}function We(e,t,r,n){var i;let a=r;if(n&&!((i=e.product)!=null&&i.handle)&&(a=J(`${t}.product.handle`)),e.selectedOptions){const o=e.selectedOptions[0];o!=null&&o.name||(a=J(`${t}.selectedOptions.name`)),o!=null&&o.value||(a=J(`${t}.selectedOptions.value`))}else a=J(`${t}.selectedOptions`);return a}function Nn(e){const t=jt(e);if(!t.options)return[];const r={};t.options.map(a=>{var i;(i=a.optionValues)==null||i.map(o=>{if(o.firstSelectableVariant){const s=Ye(o.firstSelectableVariant.selectedOptions);r[s]=o.firstSelectableVariant}})}),t.adjacentVariants.map(a=>{const i=Ye(a.selectedOptions);r[i]=a});const n=t.selectedOrFirstAvailableVariant;if(n){const a=Ye(n.selectedOptions);r[a]=n}return Object.values(r)}function Mn(e){const t=jt(e,!0);if(!t.options)return[];const{options:r,selectedOrFirstAvailableVariant:n,adjacentVariants:a,encodedVariantExistence:i,encodedVariantAvailability:o,handle:s}=t,u=n==null?void 0:n.selectedOptions.map(c=>c.name),d=r.filter(c=>u&&u.indexOf(c.name)>=0),y=kn(r),f=Vn(n?[n,...a]:a),h=de(n?n.selectedOptions:[]);return d.map((c,S)=>({...c,optionValues:c.optionValues.map(T=>{var O;const b={...h};b[c.name]=T.name;const I=xt(b||[]),v=Dn(b||[],y).slice(0,S+1),p=Be(v,i||""),m=Be(v,o||""),E=f[I]||T.firstSelectableVariant;let P={};E&&(P=de(E.selectedOptions||[]));const R=new URLSearchParams(P),w=((O=E==null?void 0:E.product)==null?void 0:O.handle)||s;return{...T,variant:E,handle:w,variantUriQuery:R.toString(),selected:h[c.name]===T.name,exists:p,available:m,isDifferentProduct:w!==s}})}))}const Fn=`#graphql
|
|
275
275
|
fragment Image on Image {
|
|
276
276
|
altText
|
|
277
277
|
url
|
|
278
278
|
width
|
|
279
279
|
height
|
|
280
280
|
}
|
|
281
|
-
`,Lt=k.forwardRef(({alt:e,aspectRatio:t,crop:r="center",data:n,decoding:a="async",height:i="auto",loader:s=he,loading:o="lazy",sizes:u,src:l,srcSetOptions:y={intervals:15,startingWidth:200,incrementSize:200,placeholderWidth:100},width:d="100%",...g},f)=>{const h=k.useMemo(()=>{const m=n!=null&&n.width&&(n!=null&&n.height)?n==null?void 0:n.width:void 0,E=n!=null&&n.width&&(n!=null&&n.height)?n==null?void 0:n.height:void 0;return{width:m,height:E,unitsMatch:!!Ft(m,E)}},[n]),S=k.useMemo(()=>{const E=ge((d||"100%").toString()),P=`${E.number}${E.unit}`,R=i==null,A=R?null:ge(i.toString()),O=A?`${A.number}${A.unit}`:"",H=R?"auto":O,D=l||(n==null?void 0:n.url),$=n!=null&&n.altText&&!e?n==null?void 0:n.altText:e||"",ee=t||(h.unitsMatch?[ye(h.width),ye(h.height)].join("/"):void 0);return{width:P,height:H,src:D,alt:$,aspectRatio:ee}},[d,i,l,n,e,t,h,g==null?void 0:g.key]),{intervals:T,startingWidth:b,incrementSize:I,placeholderWidth:w}=y,v=k.useMemo(()=>Mn(d,T,b,I),[d,T,b,I]);return jt(S.width)?k.createElement(kn,{aspectRatio:t,crop:r,decoding:a,height:i,imageWidths:v,loader:s,loading:o,normalizedProps:S,passthroughProps:g,ref:f,width:d,data:n}):k.createElement(Nn,{aspectRatio:t,crop:r,decoding:a,imageWidths:v,loader:s,loading:o,normalizedProps:S,passthroughProps:g,placeholderWidth:w,ref:f,sizes:u,data:n})}),kn=k.forwardRef(({aspectRatio:e,crop:t,decoding:r,height:n,imageWidths:a,loader:i=he,loading:s,normalizedProps:o,passthroughProps:u,width:l,data:y},d)=>{const g=k.useMemo(()=>{const f=ye(l),h=ye(n),S=e||(Ft(o.width,o.height)?[f,h].join("/"):o.aspectRatio?o.aspectRatio:void 0),T=a===void 0?void 0:Ht(a,S,t,{width:(y==null?void 0:y.width)??void 0,height:(y==null?void 0:y.height)??void 0}),b=h||(S&&f?f*(Be(S)??1):void 0),I=qt(o.src,T,i),w=i({src:o.src,width:f,height:b,crop:o.height==="auto"?void 0:t});return{width:f,aspectRatio:S,height:b,srcSet:I,src:w}},[e,t,y,n,a,i,o,l]);return k.createElement("img",{ref:d,alt:o.alt,decoding:r,height:g.height,loading:s,src:g.src,srcSet:g.srcSet,width:g.width,style:{aspectRatio:g.aspectRatio,...u.style},...u})}),Nn=k.forwardRef(({crop:e,decoding:t,imageWidths:r,loader:n=he,loading:a,normalizedProps:i,passthroughProps:s,placeholderWidth:o,sizes:u,data:l},y)=>{const d=k.useMemo(()=>{const g=r===void 0?void 0:Ht(r,i.aspectRatio,e,{width:(l==null?void 0:l.width)??void 0,height:(l==null?void 0:l.height)??void 0}),f=i.aspectRatio&&o?o*(Be(i.aspectRatio)??1):void 0,h=qt(i.src,g,n),S=n({src:i.src,width:o,height:f,crop:e});return{placeholderHeight:f,srcSet:h,src:S}},[e,l,r,n,i,o]);return k.createElement("img",{ref:y,alt:i.alt,decoding:t,height:d.placeholderHeight,loading:a,sizes:u,src:d.src,srcSet:d.srcSet,width:o,...s,style:{width:i.width,aspectRatio:i.aspectRatio,...s.style}})}),xt="https://placeholder.shopify.com";function he({src:e,width:t,height:r,crop:n}){if(!e)return"";const a=new URL(e,xt);return t&&a.searchParams.append("width",Math.round(t).toString()),r&&a.searchParams.append("height",Math.round(r).toString()),n&&a.searchParams.append("crop",n),a.href.replace(xt,"")}function Ft(e="100%",t="auto"){return ge(e.toString()).unit===ge(t.toString()).unit}function ge(e){const t=e.replace(/[0-9.]/g,""),r=parseFloat(e.replace(t,""));return{unit:t===""?r===void 0?"auto":"px":t,number:r}}function ye(e){if(e===void 0)return;const{unit:t,number:r}=ge(e.toString());switch(t){case"em":return r*16;case"rem":return r*16;case"px":return r;case"":return r;default:return}}function jt(e){return typeof e=="number"||/\d(px|em|rem)$/.test(e)}function qt(e,t,r=he){return e?(t==null?void 0:t.length)===0||!t?e:t.map((n,a)=>`${r({src:e,width:n.width,height:n.height,crop:n.crop})} ${t.length===3?`${a+1}x`:`${n.width??0}w`}`).join(", "):""}function Mn(e="100%",t,r,n){const a=Array.from({length:t},(s,o)=>o*n+r),i=Array.from({length:3},(s,o)=>(o+1)*(ye(e)??0));return jt(e)?i:a}function Be(e){if(!e)return;const[t,r]=e.split("/");return 1/(Number(t)/Number(r))}function Ht(e,t,r="center",n){if(e)return e.map(a=>({width:a,height:t?a*(Be(t)??1):void 0,crop:r})).filter(({width:a,height:i})=>!(n!=null&&n.width&&a>n.width||n!=null&&n.height&&i&&i>n.height))}const $t={};function Ln(e,t){const r=$t[e];if(r)return r;const n=new Promise((a,i)=>{const s=document.createElement("script");t!=null&&t.module?s.type="module":s.type="text/javascript",s.src=e,s.onload=()=>{a(!0)},s.onerror=()=>{i(!1)},(t==null?void 0:t.in)==="head"?document.head.appendChild(s):document.body.appendChild(s);const o=t==null?void 0:t.attributes;o&&Object.keys(o).forEach(u=>{s.setAttribute(u,o[u])})});return $t[e]=n,n}function Ye(e,t){const[r,n]=c.useState("loading");return c.useEffect(()=>{Ln(e,t).then(()=>n("done")).catch(()=>n("error"))},[e]),r}const Bt=c.forwardRef((e,t)=>{var y;const{data:r,previewImageOptions:n,id:a=r.id,playsInline:i=!0,controls:s=!0,sourceProps:o={},...u}=e,l=he({src:((y=r.previewImage)==null?void 0:y.url)??"",...n});if(!r.sources)throw new Error("<Video/> requires a 'data.sources' array");return React.createElement("video",{...u,id:a,playsInline:i,controls:s,poster:l,ref:t},r.sources.map(d=>{if(!(d!=null&&d.url&&(d!=null&&d.mimeType)))throw new Error("<Video/> needs 'source.url' and 'source.mimeType'");return React.createElement("source",{...o,key:d.url,src:d.url,type:d.mimeType})}))});function Yt(e){var l,y,d;const[t,r]=c.useState(void 0),n=c.useCallback(g=>{r(g)},[]),{data:a,children:i,className:s,...o}=e,u=Ye("https://unpkg.com/@google/model-viewer@v1.12.1/dist/model-viewer.min.js",{module:!0});return c.useEffect(()=>{const g={error:o.onError,load:o.onLoad,preload:o.onPreload,"model-visibility":o.onModelVisibility,progress:o.onProgress,"ar-status":o.onArStatus,"ar-tracking":o.onArTracking,"quick-look-button-tapped":o.onQuickLookButtonTapped,"camera-change":o.onCameraChange,"environment-change":o.onEnvironmentChange,play:o.onPlay,pause:o.onPause,"scene-graph-ready":o.onSceneGraphReady};if(t)return Object.entries(g).forEach(([f,h])=>{h&&t.addEventListener(f,h)}),()=>{t!=null&&Object.entries(g).forEach(([f,h])=>{h&&t.removeEventListener(f,h)})}},[t,o.onArStatus,o.onArTracking,o.onCameraChange,o.onEnvironmentChange,o.onError,o.onLoad,o.onModelVisibility,o.onPause,o.onPlay,o.onPreload,o.onProgress,o.onQuickLookButtonTapped,o.onSceneGraphReady]),u!=="done"?null:(y=(l=a.sources)==null?void 0:l[0])!=null&&y.url?React.createElement("model-viewer",{ref:n,...o,class:s,id:o.id??a.id,src:a.sources[0].url,alt:a.alt??null,"camera-controls":o.cameraControls??!0,poster:(o.poster||((d=a.previewImage)==null?void 0:d.url))??null,autoplay:o.autoplay??!0,loading:o.loading,reveal:o.reveal,ar:o.ar,"ar-modes":o.arModes,"ar-scale":o.arScale,"ar-placement":o.arPlacement,"ios-src":o.iosSrc,"touch-action":o.touchAction,"disable-zoom":o.disableZoom,"orbit-sensitivity":o.orbitSensitivity,"auto-rotate":o.autoRotate,"auto-rotate-delay":o.autoRotateDelay,"rotation-per-second":o.rotationPerSecond,"interaction-policy":o.interactionPolicy,"interaction-prompt":o.interactionPrompt,"interaction-prompt-style":o.interactionPromptStyle,"interaction-prompt-threshold":o.interactionPromptThreshold,"camera-orbit":o.cameraOrbit,"camera-target":o.cameraTarget,"field-of-view":o.fieldOfView,"max-camera-orbit":o.maxCameraOrbit,"min-camera-orbit":o.minCameraOrbit,"max-field-of-view":o.maxFieldOfView,"min-field-of-view":o.minFieldOfView,bounds:o.bounds,"interpolation-decay":o.interpolationDecay??100,"skybox-image":o.skyboxImage,"environment-image":o.environmentImage,exposure:o.exposure,"shadow-intensity":o.shadowIntensity??0,"shadow-softness":o.shadowSoftness??0,"animation-name":o.animationName,"animation-crossfade-duration":o.animationCrossfadeDuration,"variant-name":o.variantName,orientation:o.orientation,scale:o.scale},i):(console.error("<ModelViewer/> requires 'data.sources' prop to be an array, with an object that has a property 'url' on it. Rendering 'null'"),null)}function xn({data:e,mediaOptions:t,...r}){switch(e.__typename){case"MediaImage":return e.image?React.createElement(Lt,{...r,...t==null?void 0:t.image,data:e.image}):(console.warn("<MediaFile/>: 'data.image' does not exist for __typename of 'MediaImage'; rendering 'null' by default."),null);case"Video":return React.createElement(Bt,{...r,...t==null?void 0:t.video,data:e});case"ExternalVideo":return React.createElement(Vt,{...r,...t==null?void 0:t.externalVideo,data:e});case"Model3d":return React.createElement(Yt,{...r,...t==null?void 0:t.modelViewer,data:e});default:return console.error("<MediaFile /> requires the '__typename' property to exist on the 'data' prop in order to render the matching sub-component for this type of media. Rendering 'null' by default"),null}}function Fn(e){if(!e.type)return console.error("parseMetafield(): The 'type' field is required in order to parse the Metafield. Returning 'parsedValue' of 'null'"),{...e,parsedValue:null};switch(e.type){case"boolean":return{...e,parsedValue:e.value==="true"};case"collection_reference":case"file_reference":case"page_reference":case"product_reference":case"variant_reference":return{...e,parsedValue:e.reference};case"color":case"multi_line_text_field":case"single_line_text_field":case"url":return{...e,parsedValue:e.value};case"dimension":case"money":case"json":case"rating":case"volume":case"weight":case"rich_text_field":case"list.color":case"list.dimension":case"list.number_integer":case"list.number_decimal":case"list.rating":case"list.single_line_text_field":case"list.url":case"list.volume":case"list.weight":{let t=null;try{t=Wt(e.value??"")}catch{console.error("parseMetafield(): attempted to JSON.parse the 'metafield.value' property, but failed. Returning 'null' for 'parsedValue'"),t=null}return{...e,parsedValue:t}}case"date":case"date_time":return{...e,parsedValue:new Date(e.value??"")};case"list.date":case"list.date_time":{const t=Wt((e==null?void 0:e.value)??"");return{...e,parsedValue:t.map(r=>new Date(r))}}case"number_decimal":case"number_integer":return{...e,parsedValue:Number(e.value)};case"list.collection_reference":case"list.file_reference":case"list.page_reference":case"list.product_reference":case"list.variant_reference":return{...e,parsedValue:Q(e.references??void 0)};default:{const t=`parseMetafield(): the 'metafield.type' you passed in is not supported. Your type: "${e.type}". If you believe this is an error, please open an issue on GitHub.`;return console.error(`${t} Returning 'parsedValue' of 'null'`),{...e,parsedValue:null}}}}function Wt(e){return String(e).includes("__proto__")?JSON.parse(e,(t,r)=>{if(t!=="__proto__")return r}):JSON.parse(e)}function jn(e){var y,d,g,f,h,S;const{priceType:t="regular",variantId:r,valueType:n="min",data:a,...i}=e;if(a==null)throw new Error("<ProductPrice/> requires a product as the 'data' prop");let s,o;const u=r?Q((a==null?void 0:a.variants)??{}).find(T=>(T==null?void 0:T.id)===r)??null:null,l=n==="max"?"maxVariantPrice":"minVariantPrice";if(t==="compareAt"){r&&u?s=u.compareAtPrice:s=(y=a==null?void 0:a.compareAtPriceRange)==null?void 0:y[l];let T;r&&u?T=parseFloat(((d=u.price)==null?void 0:d.amount)??"0"):T=parseFloat(((f=(g=a==null?void 0:a.priceRange)==null?void 0:g[l])==null?void 0:f.amount)??"0");const b=parseFloat((s==null?void 0:s.amount)??"0");if(T>=b)return null}else r&&u?(s=u.price,n==="unit"&&(s=u.unitPrice,o=u.unitPriceMeasurement)):n==="max"?s=(h=a.priceRange)==null?void 0:h.maxVariantPrice:s=(S=a.priceRange)==null?void 0:S.minVariantPrice;return s?o?React.createElement(Ie,{...i,data:s,measurement:o}):React.createElement(Ie,{...i,data:s}):null}const qn={root:Hn,heading:$n,paragraph:Bn,text:Yn,link:Wn,list:Gn,"list-item":Zn};function Hn({node:e}){return React.createElement("div",null,e.children)}function $n({node:e}){return c.createElement(`h${e.level??"1"}`,null,e.children)}function Bn({node:e}){return React.createElement("p",null,e.children)}function Yn({node:e}){return e.bold&&e.italic?React.createElement("em",null,React.createElement("strong",null,e.value)):e.bold?React.createElement("strong",null,e.value):e.italic?React.createElement("em",null,e.value):e.value}function Wn({node:e}){return React.createElement("a",{href:e.url,title:e.title,target:e.target},e.children)}function Gn({node:e}){const t=e.listType==="unordered"?"ul":"ol";return React.createElement(t,null,e.children)}function Zn({node:e}){return React.createElement("li",null,e.children)}function Kn({as:e,data:t,plain:r,components:n,...a}){try{const i=e??"div",s=c.useMemo(()=>JSON.parse(t),[t]);return React.createElement(i,{...a},r?me(s):Gt(n,s))}catch(i){throw new Error("[h2:error:RichText] Parsing error. Make sure to pass a JSON string of rich text metafield",{cause:i})}}function Gt(e={},t,r=0){let n;"children"in t&&(n=t.children.map((i,s)=>Gt(e,i,s)));const a=e[t.type==="list-item"?"listItem":t.type]??qn[t.type];switch(t.type){case"root":return c.createElement(a,{key:r,node:{type:"root",children:n}});case"heading":return c.createElement(a,{key:r,node:{type:"heading",level:t.level,children:n}});case"paragraph":return c.createElement(a,{key:r,node:{type:"paragraph",children:n}});case"text":{const i=(t.value??"").split(`
|
|
282
|
-
`).flatMap((s
|
|
281
|
+
`,Ht=U.forwardRef(({alt:e,aspectRatio:t,crop:r="center",data:n,decoding:a="async",height:i="auto",loader:o=fe,loading:s="lazy",sizes:u,src:d,srcSetOptions:y={intervals:15,startingWidth:200,incrementSize:200,placeholderWidth:100},width:f="100%",...h},g)=>{const c=U.useMemo(()=>{const m=n!=null&&n.width&&(n!=null&&n.height)?n==null?void 0:n.width:void 0,E=n!=null&&n.width&&(n!=null&&n.height)?n==null?void 0:n.height:void 0;return{width:m,height:E,unitsMatch:!!Bt(m,E)}},[n]),S=U.useMemo(()=>{const E=he((f||"100%").toString()),P=`${E.number}${E.unit}`,R=i==null,w=R?null:he(i.toString()),O=w?`${w.number}${w.unit}`:"",H=R?"auto":O,k=d||(n==null?void 0:n.url),$=n!=null&&n.altText&&!e?n==null?void 0:n.altText:e||"",X=t||(c.unitsMatch?[ye(c.width),ye(c.height)].join("/"):void 0);return{width:P,height:H,src:k,alt:$,aspectRatio:X}},[f,i,d,n,e,t,c,h==null?void 0:h.key]),{intervals:T,startingWidth:b,incrementSize:I,placeholderWidth:A}=y,v=U.useMemo(()=>qn(f,T,b,I),[f,T,b,I]);return Yt(S.width)?U.createElement(Ln,{aspectRatio:t,crop:r,decoding:a,height:i,imageWidths:v,loader:o,loading:s,normalizedProps:S,passthroughProps:h,ref:g,width:f,data:n}):U.createElement(xn,{aspectRatio:t,crop:r,decoding:a,imageWidths:v,loader:o,loading:s,normalizedProps:S,passthroughProps:h,placeholderWidth:A,ref:g,sizes:u,data:n})}),Ln=U.forwardRef(({aspectRatio:e,crop:t,decoding:r,height:n,imageWidths:a,loader:i=fe,loading:o,normalizedProps:s,passthroughProps:u,width:d,data:y},f)=>{const h=U.useMemo(()=>{const g=ye(d),c=ye(n),S=e||(Bt(s.width,s.height)?[g,c].join("/"):s.aspectRatio?s.aspectRatio:void 0),T=a===void 0?void 0:Gt(a,S,t,{width:(y==null?void 0:y.width)??void 0,height:(y==null?void 0:y.height)??void 0}),b=c||(S&&g?g*(Ge(S)??1):void 0),I=Wt(s.src,T,i),A=i({src:s.src,width:g,height:b,crop:s.height==="auto"?void 0:t});return{width:g,aspectRatio:S,height:b,srcSet:I,src:A}},[e,t,y,n,a,i,s,d]);return U.createElement("img",{ref:f,alt:s.alt,decoding:r,height:h.height,loading:o,src:h.src,srcSet:h.srcSet,width:h.width,style:{aspectRatio:h.aspectRatio,...u.style},...u})}),xn=U.forwardRef(({crop:e,decoding:t,imageWidths:r,loader:n=fe,loading:a,normalizedProps:i,passthroughProps:o,placeholderWidth:s,sizes:u,data:d},y)=>{const f=U.useMemo(()=>{const h=r===void 0?void 0:Gt(r,i.aspectRatio,e,{width:(d==null?void 0:d.width)??void 0,height:(d==null?void 0:d.height)??void 0}),g=i.aspectRatio&&s?s*(Ge(i.aspectRatio)??1):void 0,c=Wt(i.src,h,n),S=n({src:i.src,width:s,height:g,crop:e});return{placeholderHeight:g,srcSet:c,src:S}},[e,d,r,n,i,s]);return U.createElement("img",{ref:y,alt:i.alt,decoding:t,height:f.placeholderHeight,loading:a,sizes:u,src:f.src,srcSet:f.srcSet,width:s,...o,style:{width:i.width,aspectRatio:i.aspectRatio,...o.style}})}),$t="https://placeholder.shopify.com";function fe({src:e,width:t,height:r,crop:n}){if(!e)return"";const a=new URL(e,$t);return t&&a.searchParams.append("width",Math.round(t).toString()),r&&a.searchParams.append("height",Math.round(r).toString()),n&&a.searchParams.append("crop",n),a.href.replace($t,"")}function Bt(e="100%",t="auto"){return he(e.toString()).unit===he(t.toString()).unit}function he(e){const t=e.replace(/[0-9.]/g,""),r=parseFloat(e.replace(t,""));return{unit:t===""?r===void 0?"auto":"px":t,number:r}}function ye(e){if(e===void 0)return;const{unit:t,number:r}=he(e.toString());switch(t){case"em":return r*16;case"rem":return r*16;case"px":return r;case"":return r;default:return}}function Yt(e){return typeof e=="number"||/\d(px|em|rem)$/.test(e)}function Wt(e,t,r=fe){return e?(t==null?void 0:t.length)===0||!t?e:t.map((n,a)=>`${r({src:e,width:n.width,height:n.height,crop:n.crop})} ${t.length===3?`${a+1}x`:`${n.width??0}w`}`).join(", "):""}function qn(e="100%",t,r,n){const a=Array.from({length:t},(o,s)=>s*n+r),i=Array.from({length:3},(o,s)=>(s+1)*(ye(e)??0));return Yt(e)?i:a}function Ge(e){if(!e)return;const[t,r]=e.split("/");return 1/(Number(t)/Number(r))}function Gt(e,t,r="center",n){if(e)return e.map(a=>({width:a,height:t?a*(Ge(t)??1):void 0,crop:r})).filter(({width:a,height:i})=>!(n!=null&&n.width&&a>n.width||n!=null&&n.height&&i&&i>n.height))}const Zt={};function jn(e,t){const r=Zt[e];if(r)return r;const n=new Promise((a,i)=>{const o=document.createElement("script");t!=null&&t.module?o.type="module":o.type="text/javascript",o.src=e,o.onload=()=>{a(!0)},o.onerror=()=>{i(!1)},(t==null?void 0:t.in)==="head"?document.head.appendChild(o):document.body.appendChild(o);const s=t==null?void 0:t.attributes;s&&Object.keys(s).forEach(u=>{o.setAttribute(u,s[u])})});return Zt[e]=n,n}function Ze(e,t){const[r,n]=l.useState("loading");return l.useEffect(()=>{jn(e,t).then(()=>n("done")).catch(()=>n("error"))},[e]),r}const Kt=l.forwardRef((e,t)=>{var y;const{data:r,previewImageOptions:n,id:a=r.id,playsInline:i=!0,controls:o=!0,sourceProps:s={},...u}=e,d=fe({src:((y=r.previewImage)==null?void 0:y.url)??"",...n});if(!r.sources)throw new Error("<Video/> requires a 'data.sources' array");return React.createElement("video",{...u,id:a,playsInline:i,controls:o,poster:d,ref:t},r.sources.map(f=>{if(!(f!=null&&f.url&&(f!=null&&f.mimeType)))throw new Error("<Video/> needs 'source.url' and 'source.mimeType'");return React.createElement("source",{...s,key:f.url,src:f.url,type:f.mimeType})}))});function Qt(e){var d,y,f;const[t,r]=l.useState(void 0),n=l.useCallback(h=>{r(h)},[]),{data:a,children:i,className:o,...s}=e,u=Ze("https://unpkg.com/@google/model-viewer@v1.12.1/dist/model-viewer.min.js",{module:!0});return l.useEffect(()=>{const h={error:s.onError,load:s.onLoad,preload:s.onPreload,"model-visibility":s.onModelVisibility,progress:s.onProgress,"ar-status":s.onArStatus,"ar-tracking":s.onArTracking,"quick-look-button-tapped":s.onQuickLookButtonTapped,"camera-change":s.onCameraChange,"environment-change":s.onEnvironmentChange,play:s.onPlay,pause:s.onPause,"scene-graph-ready":s.onSceneGraphReady};if(t)return Object.entries(h).forEach(([g,c])=>{c&&t.addEventListener(g,c)}),()=>{t!=null&&Object.entries(h).forEach(([g,c])=>{c&&t.removeEventListener(g,c)})}},[t,s.onArStatus,s.onArTracking,s.onCameraChange,s.onEnvironmentChange,s.onError,s.onLoad,s.onModelVisibility,s.onPause,s.onPlay,s.onPreload,s.onProgress,s.onQuickLookButtonTapped,s.onSceneGraphReady]),u!=="done"?null:(y=(d=a.sources)==null?void 0:d[0])!=null&&y.url?React.createElement("model-viewer",{ref:n,...s,class:o,id:s.id??a.id,src:a.sources[0].url,alt:a.alt??null,"camera-controls":s.cameraControls??!0,poster:(s.poster||((f=a.previewImage)==null?void 0:f.url))??null,autoplay:s.autoplay??!0,loading:s.loading,reveal:s.reveal,ar:s.ar,"ar-modes":s.arModes,"ar-scale":s.arScale,"ar-placement":s.arPlacement,"ios-src":s.iosSrc,"touch-action":s.touchAction,"disable-zoom":s.disableZoom,"orbit-sensitivity":s.orbitSensitivity,"auto-rotate":s.autoRotate,"auto-rotate-delay":s.autoRotateDelay,"rotation-per-second":s.rotationPerSecond,"interaction-policy":s.interactionPolicy,"interaction-prompt":s.interactionPrompt,"interaction-prompt-style":s.interactionPromptStyle,"interaction-prompt-threshold":s.interactionPromptThreshold,"camera-orbit":s.cameraOrbit,"camera-target":s.cameraTarget,"field-of-view":s.fieldOfView,"max-camera-orbit":s.maxCameraOrbit,"min-camera-orbit":s.minCameraOrbit,"max-field-of-view":s.maxFieldOfView,"min-field-of-view":s.minFieldOfView,bounds:s.bounds,"interpolation-decay":s.interpolationDecay??100,"skybox-image":s.skyboxImage,"environment-image":s.environmentImage,exposure:s.exposure,"shadow-intensity":s.shadowIntensity??0,"shadow-softness":s.shadowSoftness??0,"animation-name":s.animationName,"animation-crossfade-duration":s.animationCrossfadeDuration,"variant-name":s.variantName,orientation:s.orientation,scale:s.scale},i):(console.error("<ModelViewer/> requires 'data.sources' prop to be an array, with an object that has a property 'url' on it. Rendering 'null'"),null)}function Hn({data:e,mediaOptions:t,...r}){switch(e.__typename){case"MediaImage":return e.image?React.createElement(Ht,{...r,...t==null?void 0:t.image,data:e.image}):(console.warn("<MediaFile/>: 'data.image' does not exist for __typename of 'MediaImage'; rendering 'null' by default."),null);case"Video":return React.createElement(Kt,{...r,...t==null?void 0:t.video,data:e});case"ExternalVideo":return React.createElement(Ft,{...r,...t==null?void 0:t.externalVideo,data:e});case"Model3d":return React.createElement(Qt,{...r,...t==null?void 0:t.modelViewer,data:e});default:return console.error("<MediaFile /> requires the '__typename' property to exist on the 'data' prop in order to render the matching sub-component for this type of media. Rendering 'null' by default"),null}}function $n(e){if(!e.type)return console.error("parseMetafield(): The 'type' field is required in order to parse the Metafield. Returning 'parsedValue' of 'null'"),{...e,parsedValue:null};switch(e.type){case"boolean":return{...e,parsedValue:e.value==="true"};case"collection_reference":case"file_reference":case"page_reference":case"product_reference":case"variant_reference":return{...e,parsedValue:e.reference};case"color":case"multi_line_text_field":case"single_line_text_field":case"url":return{...e,parsedValue:e.value};case"money":{let t=null;try{const r=Ke(e.value??"");if(r&&typeof r=="object"&&"currency_code"in r){const n=r;t={amount:n.amount,currencyCode:n.currency_code}}else r&&typeof r=="object"&&"currencyCode"in r,t=r}catch{console.error("parseMetafield(): attempted to JSON.parse the 'metafield.value' property, but failed. Returning 'null' for 'parsedValue'"),t=null}return{...e,parsedValue:t}}case"dimension":case"json":case"rating":case"volume":case"weight":case"rich_text_field":case"list.color":case"list.dimension":case"list.number_integer":case"list.number_decimal":case"list.rating":case"list.single_line_text_field":case"list.url":case"list.volume":case"list.weight":{let t=null;try{t=Ke(e.value??"")}catch{console.error("parseMetafield(): attempted to JSON.parse the 'metafield.value' property, but failed. Returning 'null' for 'parsedValue'"),t=null}return{...e,parsedValue:t}}case"date":case"date_time":return{...e,parsedValue:new Date(e.value??"")};case"list.date":case"list.date_time":{const t=Ke((e==null?void 0:e.value)??"");return{...e,parsedValue:t.map(r=>new Date(r))}}case"number_decimal":case"number_integer":return{...e,parsedValue:Number(e.value)};case"list.collection_reference":case"list.file_reference":case"list.page_reference":case"list.product_reference":case"list.variant_reference":return{...e,parsedValue:Q(e.references??void 0)};default:{const t=`parseMetafield(): the 'metafield.type' you passed in is not supported. Your type: "${e.type}". If you believe this is an error, please open an issue on GitHub.`;return console.error(`${t} Returning 'parsedValue' of 'null'`),{...e,parsedValue:null}}}}function Ke(e){return String(e).includes("__proto__")?JSON.parse(e,(t,r)=>{if(t!=="__proto__")return r}):JSON.parse(e)}function Bn(e){var y,f,h,g,c,S;const{priceType:t="regular",variantId:r,valueType:n="min",data:a,...i}=e;if(a==null)throw new Error("<ProductPrice/> requires a product as the 'data' prop");let o,s;const u=r?Q((a==null?void 0:a.variants)??{}).find(T=>(T==null?void 0:T.id)===r)??null:null,d=n==="max"?"maxVariantPrice":"minVariantPrice";if(t==="compareAt"){r&&u?o=u.compareAtPrice:o=(y=a==null?void 0:a.compareAtPriceRange)==null?void 0:y[d];let T;r&&u?T=parseFloat(((f=u.price)==null?void 0:f.amount)??"0"):T=parseFloat(((g=(h=a==null?void 0:a.priceRange)==null?void 0:h[d])==null?void 0:g.amount)??"0");const b=parseFloat((o==null?void 0:o.amount)??"0");if(T>=b)return null}else r&&u?(o=u.price,n==="unit"&&(o=u.unitPrice,s=u.unitPriceMeasurement)):n==="max"?o=(c=a.priceRange)==null?void 0:c.maxVariantPrice:o=(S=a.priceRange)==null?void 0:S.minVariantPrice;return o?s?React.createElement(Ie,{...i,data:o,measurement:s}):React.createElement(Ie,{...i,data:o}):null}const Yn={root:Wn,heading:Gn,paragraph:Zn,text:Kn,link:Qn,list:Jn,"list-item":Xn};function Wn({node:e}){return React.createElement("div",null,e.children)}function Gn({node:e}){return l.createElement(`h${e.level??"1"}`,null,e.children)}function Zn({node:e}){return React.createElement("p",null,e.children)}function Kn({node:e}){return e.bold&&e.italic?React.createElement("em",null,React.createElement("strong",null,e.value)):e.bold?React.createElement("strong",null,e.value):e.italic?React.createElement("em",null,e.value):e.value}function Qn({node:e}){return React.createElement("a",{href:e.url,title:e.title,target:e.target},e.children)}function Jn({node:e}){const t=e.listType==="unordered"?"ul":"ol";return React.createElement(t,null,e.children)}function Xn({node:e}){return React.createElement("li",null,e.children)}function zn({as:e,data:t,plain:r,components:n,...a}){try{const i=e??"div",o=l.useMemo(()=>JSON.parse(t),[t]);return React.createElement(i,{...a},r?ge(o):Jt(n,o))}catch(i){throw new Error("[h2:error:RichText] Parsing error. Make sure to pass a JSON string of rich text metafield",{cause:i})}}function Jt(e={},t,r=0){let n;"children"in t&&(n=t.children.map((i,o)=>Jt(e,i,o)));const a=e[t.type==="list-item"?"listItem":t.type]??Yn[t.type];switch(t.type){case"root":return l.createElement(a,{key:r,node:{type:"root",children:n}});case"heading":return l.createElement(a,{key:r,node:{type:"heading",level:t.level,children:n}});case"paragraph":return l.createElement(a,{key:r,node:{type:"paragraph",children:n}});case"text":{const i=(t.value??"").split(`
|
|
282
|
+
`).flatMap((o,s)=>{const u=`${r}-${o}-${s}`,d=l.createElement(a,{key:u,node:{type:"text",italic:t.italic,bold:t.bold,value:o}});return s===0?d:[l.createElement("br",{key:`${u}-br`}),d]});return i.length>1?l.createElement(l.Fragment,{key:r},i):i[0]}case"link":return l.createElement(a,{key:r,node:{type:"link",url:t.url,title:t.title,target:t.target,children:n}});case"list":return l.createElement(a,{key:r,node:{type:"list",listType:t.listType,children:n}});case"list-item":return l.createElement(a,{key:r,node:{type:"list-item",children:n}})}}function ge(e,t=[]){switch(e.type){case"root":e.children.forEach(r=>ge(r,t));break;case"heading":case"paragraph":e.children.forEach(r=>ge(r,t)),t.push(" ");break;case"text":t.push(e.value||"");break;case"link":e.children.forEach(r=>ge(r,t));break;case"list":e.children.forEach(r=>{r.children&&r.children.forEach(n=>ge(n,t)),t.push(" ")});break;default:throw new Error(`Unknown node encountered ${e.type}`)}return t.join("").trim()}const ea="https://cdn.shopify.com/shopifycloud/shop-js/v1.0/client.js";function ta(e){return e==="headless"||e==="hydrogen"}function ra({channel:e,variantIds:t,className:r,variantIdsAndQuantities:n,width:a,storeDomain:i}){const o=ce(),s=i||(o==null?void 0:o.storeDomain),u=Ze(ea);let d=[],y;if(!s||s===ft.storeDomain)throw new Error(na);if(t&&n)throw new Error(ia);if(!t&&!n)throw new Error(Xt);if(e)if(ta(e))y=e;else throw new Error(oa);if(t)d=t.reduce((h,g)=>{const c=x(g).id;return c&&h.push(c),h},[]);else if(n)d=n.reduce((h,g)=>{const c=x(g==null?void 0:g.id).id;return c&&h.push(`${c}:${(g==null?void 0:g.quantity)??1}`),h},[]);else throw new Error(Xt);if(d.length===0)throw new Error(aa);const f=a?{"--shop-pay-button-width":a}:void 0;return React.createElement("div",{className:r,style:f},u==="done"&&React.createElement("shop-pay-button",{...y?{channel:y}:{},"store-url":s,variants:d.join(",")}))}const na='You must pass a "storeDomain" prop to the "ShopPayButton" component, or wrap it in a "ShopifyProvider" component.',aa='You must pass in "variantIds" in the form of ["gid://shopify/ProductVariant/1"]',Xt='You must pass in either "variantIds" or "variantIdsAndQuantities" to ShopPayButton',ia="You must provide either a variantIds or variantIdsAndQuantities prop, but not both in the ShopPayButton component",oa='Invalid channel attribution value. Must be either "headless" or "hydrogen"';function sa(e){return l.useEffect(()=>{const t=new URLSearchParams(de(e||[])),r=new URLSearchParams(window.location.search),n=new URLSearchParams({...Object.fromEntries(r),...Object.fromEntries(t)});n.size>0&&window.history.replaceState({},"",`${window.location.pathname}?${n.toString()}`)},[JSON.stringify(e)]),null}function ca(e,t,r={}){let n=e+"="+encodeURIComponent(t);return r.expires&&(n+="; Expires="+new Date(r.expires).toUTCString()),r.maxage!=null&&r.maxage>=0&&(n+="; Max-Age="+(r.maxage|0)),r.domain&&(n+="; Domain="+r.domain),r.path&&(n+="; Path="+r.path),r.samesite&&(n+="; SameSite="+r.samesite),(r.secure||r.samesite==="None")&&(n+="; Secure"),r.httponly&&(n+="; HttpOnly"),n}const ua=3600*24*360*1,la=1800;function da(e){const{hasUserConsent:t,domain:r="",checkoutDomain:n="",storefrontAccessToken:a,fetchTrackingValues:i,ignoreDeprecatedCookies:o=!1}=e||{},s=fa({storefrontAccessToken:a,fetchTrackingValues:i,checkoutDomain:n});return l.useEffect(()=>{if(o||!s)return;let u=r||window.location.host;if(n){const y=n.split(".").reverse(),f=u.split(".").reverse(),h=[];y.forEach((g,c)=>{g===f[c]&&h.push(g)}),u=h.reverse().join(".")}/^localhost/.test(u)&&(u="");const d=u?/^\./.test(u)?u:`.${u}`:"";if(t){const y=ee();if((y.uniqueToken||y.visitToken||"").startsWith("00000000-"))return;ve(Te,y.uniqueToken||be(),ua,d),ve(Ce,y.visitToken||be(),la,d)}else ve(Te,"",0,d),ve(Ce,"",0,d)},[s,t,r,n,o]),s}function ve(e,t,r,n){document.cookie=ca(e,t,{maxage:r,domain:n,samesite:"Lax",path:"/"})}async function zt(e,t=""){const{uniqueToken:r,visitToken:n}=ee(),a=await fetch(`${t.replace(/\/+$/,"")}/api/unstable/graphql.json`,{method:"POST",headers:{"Content-Type":"application/json",...e&&{"X-Shopify-Storefront-Access-Token":e},...n||r?{[Me]:n,[Fe]:r}:void 0},body:JSON.stringify({query:"query ensureCookies { consentManagement { cookies(visitorConsent:{}) { cookieDomain } } }"})});if(!a.ok)throw new Error(`Failed to fetch consent from browser: ${a.status} ${a.statusText}`);await a.json(),ee()}function fa({checkoutDomain:e,storefrontAccessToken:t,fetchTrackingValues:r=!1}){const[n,a]=l.useState(!r),i=l.useRef(!1);return l.useEffect(()=>{if(!r){a(!0);return}i.current||(i.current=!0,zt(t).catch(o=>e?zt(t,e):Promise.reject(o)).catch(o=>{console.warn("[h2:warn:useShopifyCookies] Failed to fetch tracking values from browser: "+(o instanceof Error?o.message:String(o)))}).finally(()=>{a(!0)}))},[e,r,t]),n}_.AddToCartButton=Qr,_.AnalyticsEventName=te,_.AnalyticsPageType=Ae,_.BuyNowButton=Sn,_.CartCheckoutButton=Tn,_.CartCost=wn,_.CartLineProvider=An,_.CartLineQuantity=bn,_.CartLineQuantityAdjustButton=In,_.CartProvider=$r,_.ExternalVideo=Ft,_.IMAGE_FRAGMENT=Fn,_.Image=Ht,_.MediaFile=Hn,_.ModelViewer=Qt,_.Money=Ie,_.ProductPrice=Bn,_.ProductProvider=Gr,_.RichText=zn,_.SHOPIFY_S=Ce,_.SHOPIFY_STOREFRONT_ID_HEADER=yt,_.SHOPIFY_STOREFRONT_S_HEADER=mt,_.SHOPIFY_STOREFRONT_Y_HEADER=gt,_.SHOPIFY_UNIQUE_TOKEN_HEADER=Fe,_.SHOPIFY_VISIT_TOKEN_HEADER=Me,_.SHOPIFY_Y=Te,_.ShopPayButton=ra,_.ShopifyProvider=Mr,_.ShopifySalesChannel=bt,_.Video=Kt,_.createStorefrontClient=Vr,_.customerAccountApiCustomScalars=Pn,_.decodeEncodedVariant=Lt,_.flattenConnection=Q,_.getAdjacentAndFirstAvailableVariants=Nn,_.getClientBrowserParameters=mn,_.getProductOptions=Mn,_.getShopifyCookies=zr,_.getTrackingValues=ee,_.isOptionValueCombinationInEncodedVariant=Be,_.mapSelectedProductOptionToObject=de,_.parseGid=x,_.parseMetafield=$n,_.sendShopifyAnalytics=hn,_.storefrontApiCustomScalars=vn,_.useCart=ae,_.useCartLine=He,_.useLoadScript=Ze,_.useMoney=Ut,_.useProduct=Tt,_.useSelectedOptionInUrlParam=sa,_.useShop=ce,_.useShopifyCookies=da,Object.defineProperty(_,Symbol.toStringTag,{value:"Module"})}));
|
|
283
283
|
//# sourceMappingURL=hydrogen-react.prod.js.map
|