@anker-in/shopify-react 0.1.1-beta.40 → 0.1.1-beta.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks/index.d.mts +66 -28
- package/dist/hooks/index.d.ts +66 -28
- package/dist/hooks/index.js +183 -132
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +182 -131
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +188 -133
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +187 -132
- package/dist/index.mjs.map +1 -1
- package/dist/provider/index.d.mts +1 -1
- package/dist/provider/index.d.ts +1 -1
- package/dist/provider/index.js +21 -11
- package/dist/provider/index.js.map +1 -1
- package/dist/provider/index.mjs +21 -11
- package/dist/provider/index.mjs.map +1 -1
- package/dist/{types-BSsb8OPm.d.mts → types-DntkHhf8.d.mts} +8 -5
- package/dist/{types-BSsb8OPm.d.ts → types-DntkHhf8.d.ts} +8 -5
- package/package.json +3 -3
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { CartContextValue, CartProvider, CartProviderProps, LoadingState, ShopifyContext, ShopifyContextValue, ShopifyProvider, ShopifyProviderProps, useCartContext, useShopify } from './provider/index.mjs';
|
|
2
2
|
export { C as CookieAdapter, a as CookieOptions, P as PerformanceAdapter, R as RouterAdapter, U as UserContextAdapter } from './types-SKDHauqk.mjs';
|
|
3
3
|
export { BrowserPerformanceAdapter, browserCartCookieAdapter, browserCookieAdapter } from './adapters/index.mjs';
|
|
4
|
-
export { AddCartLinesInput, ApplyCartCodesInput, AutoFreeGift, AutoFreeGiftCartLineInput, AutoFreeGiftConfig, AutoFreeGiftItem, AutoFreeGiftList, AutoFreeGiftMainProduct, BuyNowInput, BuyRuleType, CODE_AMOUNT_KEY, CUSTOMER_ATTRIBUTE_KEY, CUSTOMER_SCRIPT_GIFT_KEY, Config, CreateCartInput, DiscountLabel, FormattedGift, FunctionGiftResult, GeoLocationData, GiftProduct, GiftProductItem, GiftTier, HasPlusMemberInCartResult, ImageMedia, LocaleMapping, MAIN_PRODUCT_CODE, MainProductInfo, NormalizedSearchResultItem, Options, OrderBasePriceType, OrderDiscountConfig, OrderDiscountResult, OrderDiscountType, PlusMemberContext, PlusMemberContextValue, PlusMemberProvider, PlusMemberProviderProps, PriceBasePriceType, PriceDiscountConfig, PriceDiscountType, RemoveCartCodesInput, RemoveCartLinesInput, RewardItem, RuleCondition, RuleType, SCRIPT_CODE_AMOUNT_KEY, SearchResult, SearchResultType, SelectedOptionsResult, ShippingMethodsContext, SiteInfo, SpendMoneyType, TieredDiscount, UpdateCartAttributesInput, UseAllBlogsOptions, UseAllCollectionsOptions, UseAllProductsOptions, UseArticleOptions, UseArticlesInBlogOptions, UseArticlesOptions, UseAutoRemovePlusMemberInCartProps, UseAvailableDeliveryCouponResult, UseBlogOptions, UseBuyNowOptions, UseCalcGiftsFromLinesOptions, UseCalcGiftsFromLinesResult, UseCollectionOptions, UseCollectionsOptions, UseExposureOptions, UseGeoLocationOptions, UseHasPlusMemberInCartProps, UseIntersectionOptions, UsePriceOptions, UsePriceResult, UseProductOptions, UseProductsByHandlesOptions, UseScriptAutoFreeGiftResult, UseSearchOptions, UseShippingMethodsOptions, UseShippingMethodsResult, UseSiteOptions, UseUpdatePlusMemberDeliveryOptionsProps, VariantItem, VariantMedia, VideoMedia, checkAttributesUpdateNeeded, clearGeoLocationCache, createMockCartFromLines, currencyCodeMapping, defaultSWRMutationConfiguration, formatFunctionAutoFreeGift, formatScriptAutoFreeGift, getCachedGeoLocation, getDiscountEnvAttributeValue, getMatchedMainProductSubTotal, getQuery, getReferralAttributes, normalizeAddToCartLines, preCheck, safeParse, useAddCartLines, useAddToCart, useAllBlogs, useAllCollections, useAllProducts, useApplyCartCodes, useArticle, useArticles, useArticlesInBlog, useAutoRemovePlusMemberInCart, useAvailableDeliveryCoupon, useBlog, useBuyNow, useCalcAutoFreeGift, useCalcGiftsFromLines, useCalcOrderDiscount, useCartAttributes, useCartItemQuantityLimit, useCollection, useCollections, useCreateCart, useExposure, useGeoLocation, useHasPlusMemberInCart, useIntersection,
|
|
5
|
-
export { a as AddToCartInput, A as AddToCartLineItem, B as BuyNowTrackConfig, g as DeliveryCustomData, h as DeliveryData, D as DeliveryPlusType, G as GtmParams, P as PLUS_MEMBER_TYPE, b as PlusMemberMode, e as PlusMemberSettingsMetafields, d as PlusMemberShippingMethodConfig, c as PlusMemberShippingMethodMetafields, f as
|
|
4
|
+
export { AddCartLinesInput, ApplyCartCodesInput, AutoFreeGift, AutoFreeGiftCartLineInput, AutoFreeGiftConfig, AutoFreeGiftItem, AutoFreeGiftList, AutoFreeGiftMainProduct, BuyNowInput, BuyRuleType, CODE_AMOUNT_KEY, CUSTOMER_ATTRIBUTE_KEY, CUSTOMER_SCRIPT_GIFT_KEY, Config, CreateCartInput, DiscountLabel, FormattedGift, FunctionGiftResult, GeoLocationData, GiftProduct, GiftProductItem, GiftTier, HasPlusMemberInCartResult, ImageMedia, LocaleMapping, MAIN_PRODUCT_CODE, MEMBER_PRICE_ATTRIBUTE_KEY, MainProductInfo, NormalizedSearchResultItem, Options, OrderBasePriceType, OrderDiscountConfig, OrderDiscountResult, OrderDiscountType, PlusMemberContext, PlusMemberContextValue, PlusMemberProvider, PlusMemberProviderProps, PriceBasePriceType, PriceDiscountConfig, PriceDiscountType, RemoveCartCodesInput, RemoveCartLinesInput, RewardItem, RuleCondition, RuleType, SCRIPT_CODE_AMOUNT_KEY, SearchResult, SearchResultType, SelectedOptionsResult, ShippingMethodsContext, SiteInfo, SpendMoneyType, TieredDiscount, UpdateCartAttributesInput, UseAllBlogsOptions, UseAllCollectionsOptions, UseAllProductsOptions, UseArticleOptions, UseArticlesInBlogOptions, UseArticlesOptions, UseAutoRemovePlusMemberInCartProps, UseAvailableDeliveryCouponResult, UseBlogOptions, UseBuyNowOptions, UseCalcGiftsFromLinesOptions, UseCalcGiftsFromLinesResult, UseCollectionOptions, UseCollectionsOptions, UseExposureOptions, UseGeoLocationOptions, UseHasPlusMemberInCartProps, UseIntersectionOptions, UsePlusMemberVariantsOptions, UsePlusMemberVariantsResult, UsePriceOptions, UsePriceResult, UseProductOptions, UseProductsByHandlesOptions, UseScriptAutoFreeGiftResult, UseSearchOptions, UseShippingMethodsOptions, UseShippingMethodsResult, UseSiteOptions, UseUpdateCartAttributesOptions, UseUpdatePlusMemberDeliveryOptionsProps, VariantItem, VariantMedia, VideoMedia, checkAttributesUpdateNeeded, clearGeoLocationCache, createMockCartFromLines, currencyCodeMapping, defaultSWRMutationConfiguration, formatFunctionAutoFreeGift, formatScriptAutoFreeGift, getCachedGeoLocation, getDiscountEnvAttributeValue, getMatchedMainProductSubTotal, getQuery, getReferralAttributes, normalizeAddToCartLines, preCheck, safeParse, useAddCartLines, useAddToCart, useAllBlogs, useAllCollections, useAllProducts, useApplyCartCodes, useArticle, useArticles, useArticlesInBlog, useAutoRemovePlusMemberInCart, useAvailableDeliveryCoupon, useBlog, useBuyNow, useCalcAutoFreeGift, useCalcGiftsFromLines, useCalcOrderDiscount, useCartAttributes, useCartItemQuantityLimit, useCollection, useCollections, useCreateCart, useExposure, useGeoLocation, useHasPlusMemberInCart, useIntersection, usePlusMemberCheckoutCustomAttributes, usePlusMemberContext, usePlusMemberDeliveryCodes, usePlusMemberItemCustomAttributes, usePlusMemberNeedAddToCart, usePlusMemberVariants, usePrice, useProduct, useProductUrl, useProductsByHandles, useRemoveCartCodes, useRemoveCartLines, useReplaceCartPlusMember, useScriptAutoFreeGift, useSearch, useSelectedOptions, useShippingMethodAvailableCheck, useShippingMethods, useSite, useUpdateCartAttributes, useUpdateCartLines, useUpdateLineCodeAmountAttributes, useUpdatePlusMemberDeliveryOptions, useUpdateVariantQuery, useVariant, useVariantMedia } from './hooks/index.mjs';
|
|
5
|
+
export { a as AddToCartInput, A as AddToCartLineItem, B as BuyNowTrackConfig, g as DeliveryCustomData, h as DeliveryData, D as DeliveryPlusType, G as GtmParams, P as PLUS_MEMBER_TYPE, b as PlusMemberMode, e as PlusMemberSettingsMetafields, d as PlusMemberShippingMethodConfig, c as PlusMemberShippingMethodMetafields, f as SelectedPlusMemberVariant, S as ShippingMethodMode, U as UseAddToCartOptions, i as gaTrack, l as trackAddToCartFBQ, t as trackAddToCartGA, j as trackBeginCheckoutGA, m as trackBuyNowFBQ, k as trackBuyNowGA } from './types-DntkHhf8.mjs';
|
|
6
6
|
export * from '@anker-in/shopify-sdk';
|
|
7
7
|
import 'react';
|
|
8
8
|
import 'react/jsx-runtime';
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
export { CartContextValue, CartProvider, CartProviderProps, LoadingState, ShopifyContext, ShopifyContextValue, ShopifyProvider, ShopifyProviderProps, useCartContext, useShopify } from './provider/index.js';
|
|
2
2
|
export { C as CookieAdapter, a as CookieOptions, P as PerformanceAdapter, R as RouterAdapter, U as UserContextAdapter } from './types-SKDHauqk.js';
|
|
3
3
|
export { BrowserPerformanceAdapter, browserCartCookieAdapter, browserCookieAdapter } from './adapters/index.js';
|
|
4
|
-
export { AddCartLinesInput, ApplyCartCodesInput, AutoFreeGift, AutoFreeGiftCartLineInput, AutoFreeGiftConfig, AutoFreeGiftItem, AutoFreeGiftList, AutoFreeGiftMainProduct, BuyNowInput, BuyRuleType, CODE_AMOUNT_KEY, CUSTOMER_ATTRIBUTE_KEY, CUSTOMER_SCRIPT_GIFT_KEY, Config, CreateCartInput, DiscountLabel, FormattedGift, FunctionGiftResult, GeoLocationData, GiftProduct, GiftProductItem, GiftTier, HasPlusMemberInCartResult, ImageMedia, LocaleMapping, MAIN_PRODUCT_CODE, MainProductInfo, NormalizedSearchResultItem, Options, OrderBasePriceType, OrderDiscountConfig, OrderDiscountResult, OrderDiscountType, PlusMemberContext, PlusMemberContextValue, PlusMemberProvider, PlusMemberProviderProps, PriceBasePriceType, PriceDiscountConfig, PriceDiscountType, RemoveCartCodesInput, RemoveCartLinesInput, RewardItem, RuleCondition, RuleType, SCRIPT_CODE_AMOUNT_KEY, SearchResult, SearchResultType, SelectedOptionsResult, ShippingMethodsContext, SiteInfo, SpendMoneyType, TieredDiscount, UpdateCartAttributesInput, UseAllBlogsOptions, UseAllCollectionsOptions, UseAllProductsOptions, UseArticleOptions, UseArticlesInBlogOptions, UseArticlesOptions, UseAutoRemovePlusMemberInCartProps, UseAvailableDeliveryCouponResult, UseBlogOptions, UseBuyNowOptions, UseCalcGiftsFromLinesOptions, UseCalcGiftsFromLinesResult, UseCollectionOptions, UseCollectionsOptions, UseExposureOptions, UseGeoLocationOptions, UseHasPlusMemberInCartProps, UseIntersectionOptions, UsePriceOptions, UsePriceResult, UseProductOptions, UseProductsByHandlesOptions, UseScriptAutoFreeGiftResult, UseSearchOptions, UseShippingMethodsOptions, UseShippingMethodsResult, UseSiteOptions, UseUpdatePlusMemberDeliveryOptionsProps, VariantItem, VariantMedia, VideoMedia, checkAttributesUpdateNeeded, clearGeoLocationCache, createMockCartFromLines, currencyCodeMapping, defaultSWRMutationConfiguration, formatFunctionAutoFreeGift, formatScriptAutoFreeGift, getCachedGeoLocation, getDiscountEnvAttributeValue, getMatchedMainProductSubTotal, getQuery, getReferralAttributes, normalizeAddToCartLines, preCheck, safeParse, useAddCartLines, useAddToCart, useAllBlogs, useAllCollections, useAllProducts, useApplyCartCodes, useArticle, useArticles, useArticlesInBlog, useAutoRemovePlusMemberInCart, useAvailableDeliveryCoupon, useBlog, useBuyNow, useCalcAutoFreeGift, useCalcGiftsFromLines, useCalcOrderDiscount, useCartAttributes, useCartItemQuantityLimit, useCollection, useCollections, useCreateCart, useExposure, useGeoLocation, useHasPlusMemberInCart, useIntersection,
|
|
5
|
-
export { a as AddToCartInput, A as AddToCartLineItem, B as BuyNowTrackConfig, g as DeliveryCustomData, h as DeliveryData, D as DeliveryPlusType, G as GtmParams, P as PLUS_MEMBER_TYPE, b as PlusMemberMode, e as PlusMemberSettingsMetafields, d as PlusMemberShippingMethodConfig, c as PlusMemberShippingMethodMetafields, f as
|
|
4
|
+
export { AddCartLinesInput, ApplyCartCodesInput, AutoFreeGift, AutoFreeGiftCartLineInput, AutoFreeGiftConfig, AutoFreeGiftItem, AutoFreeGiftList, AutoFreeGiftMainProduct, BuyNowInput, BuyRuleType, CODE_AMOUNT_KEY, CUSTOMER_ATTRIBUTE_KEY, CUSTOMER_SCRIPT_GIFT_KEY, Config, CreateCartInput, DiscountLabel, FormattedGift, FunctionGiftResult, GeoLocationData, GiftProduct, GiftProductItem, GiftTier, HasPlusMemberInCartResult, ImageMedia, LocaleMapping, MAIN_PRODUCT_CODE, MEMBER_PRICE_ATTRIBUTE_KEY, MainProductInfo, NormalizedSearchResultItem, Options, OrderBasePriceType, OrderDiscountConfig, OrderDiscountResult, OrderDiscountType, PlusMemberContext, PlusMemberContextValue, PlusMemberProvider, PlusMemberProviderProps, PriceBasePriceType, PriceDiscountConfig, PriceDiscountType, RemoveCartCodesInput, RemoveCartLinesInput, RewardItem, RuleCondition, RuleType, SCRIPT_CODE_AMOUNT_KEY, SearchResult, SearchResultType, SelectedOptionsResult, ShippingMethodsContext, SiteInfo, SpendMoneyType, TieredDiscount, UpdateCartAttributesInput, UseAllBlogsOptions, UseAllCollectionsOptions, UseAllProductsOptions, UseArticleOptions, UseArticlesInBlogOptions, UseArticlesOptions, UseAutoRemovePlusMemberInCartProps, UseAvailableDeliveryCouponResult, UseBlogOptions, UseBuyNowOptions, UseCalcGiftsFromLinesOptions, UseCalcGiftsFromLinesResult, UseCollectionOptions, UseCollectionsOptions, UseExposureOptions, UseGeoLocationOptions, UseHasPlusMemberInCartProps, UseIntersectionOptions, UsePlusMemberVariantsOptions, UsePlusMemberVariantsResult, UsePriceOptions, UsePriceResult, UseProductOptions, UseProductsByHandlesOptions, UseScriptAutoFreeGiftResult, UseSearchOptions, UseShippingMethodsOptions, UseShippingMethodsResult, UseSiteOptions, UseUpdateCartAttributesOptions, UseUpdatePlusMemberDeliveryOptionsProps, VariantItem, VariantMedia, VideoMedia, checkAttributesUpdateNeeded, clearGeoLocationCache, createMockCartFromLines, currencyCodeMapping, defaultSWRMutationConfiguration, formatFunctionAutoFreeGift, formatScriptAutoFreeGift, getCachedGeoLocation, getDiscountEnvAttributeValue, getMatchedMainProductSubTotal, getQuery, getReferralAttributes, normalizeAddToCartLines, preCheck, safeParse, useAddCartLines, useAddToCart, useAllBlogs, useAllCollections, useAllProducts, useApplyCartCodes, useArticle, useArticles, useArticlesInBlog, useAutoRemovePlusMemberInCart, useAvailableDeliveryCoupon, useBlog, useBuyNow, useCalcAutoFreeGift, useCalcGiftsFromLines, useCalcOrderDiscount, useCartAttributes, useCartItemQuantityLimit, useCollection, useCollections, useCreateCart, useExposure, useGeoLocation, useHasPlusMemberInCart, useIntersection, usePlusMemberCheckoutCustomAttributes, usePlusMemberContext, usePlusMemberDeliveryCodes, usePlusMemberItemCustomAttributes, usePlusMemberNeedAddToCart, usePlusMemberVariants, usePrice, useProduct, useProductUrl, useProductsByHandles, useRemoveCartCodes, useRemoveCartLines, useReplaceCartPlusMember, useScriptAutoFreeGift, useSearch, useSelectedOptions, useShippingMethodAvailableCheck, useShippingMethods, useSite, useUpdateCartAttributes, useUpdateCartLines, useUpdateLineCodeAmountAttributes, useUpdatePlusMemberDeliveryOptions, useUpdateVariantQuery, useVariant, useVariantMedia } from './hooks/index.js';
|
|
5
|
+
export { a as AddToCartInput, A as AddToCartLineItem, B as BuyNowTrackConfig, g as DeliveryCustomData, h as DeliveryData, D as DeliveryPlusType, G as GtmParams, P as PLUS_MEMBER_TYPE, b as PlusMemberMode, e as PlusMemberSettingsMetafields, d as PlusMemberShippingMethodConfig, c as PlusMemberShippingMethodMetafields, f as SelectedPlusMemberVariant, S as ShippingMethodMode, U as UseAddToCartOptions, i as gaTrack, l as trackAddToCartFBQ, t as trackAddToCartGA, j as trackBeginCheckoutGA, m as trackBuyNowFBQ, k as trackBuyNowGA } from './types-DntkHhf8.js';
|
|
6
6
|
export * from '@anker-in/shopify-sdk';
|
|
7
7
|
import 'react';
|
|
8
8
|
import 'react/jsx-runtime';
|
package/dist/index.js
CHANGED
|
@@ -158,6 +158,7 @@ var CUSTOMER_ATTRIBUTE_KEY = "_discounts_function_env";
|
|
|
158
158
|
var CUSTOMER_SCRIPT_GIFT_KEY = "_giveaway_gradient_gifts";
|
|
159
159
|
var CODE_AMOUNT_KEY = "_sku_code_money";
|
|
160
160
|
var SCRIPT_CODE_AMOUNT_KEY = "_code_money";
|
|
161
|
+
var MEMBER_PRICE_ATTRIBUTE_KEY = "_member_price";
|
|
161
162
|
var MAIN_PRODUCT_CODE = ["WS24", "WSTD", "WS7D", "WSCP", "WSPE", "WSPD"];
|
|
162
163
|
|
|
163
164
|
// src/hooks/cart/utils/normalize-add-to-cart-lines.ts
|
|
@@ -1061,59 +1062,90 @@ function useRemoveCartCodes(options) {
|
|
|
1061
1062
|
);
|
|
1062
1063
|
return useSWRMutation__default.default("remove-codes", removeCodes, options);
|
|
1063
1064
|
}
|
|
1064
|
-
|
|
1065
|
-
// src/hooks/cart/utils/add-to-cart.ts
|
|
1066
|
-
var getLinesWithAttributes = ({
|
|
1065
|
+
var initSameLinesAttributes = ({
|
|
1067
1066
|
cart,
|
|
1068
|
-
|
|
1067
|
+
line
|
|
1069
1068
|
}) => {
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1069
|
+
const sameLineInCart = cart?.lineItems.find(
|
|
1070
|
+
(lineInCart) => lineInCart.variant.sku === line.variant?.sku && lineInCart.product?.handle === line.variant?.product?.handle
|
|
1071
|
+
);
|
|
1072
|
+
const codeAmountAttribute = sameLineInCart?.customAttributes?.find(
|
|
1073
|
+
(attr) => attr.key === CODE_AMOUNT_KEY
|
|
1074
|
+
);
|
|
1075
|
+
const scriptCodeAmountAttribute = sameLineInCart?.customAttributes?.find(
|
|
1076
|
+
(attr) => attr.key === SCRIPT_CODE_AMOUNT_KEY
|
|
1077
|
+
);
|
|
1078
|
+
let functionAttribute = null;
|
|
1079
|
+
try {
|
|
1080
|
+
functionAttribute = sameLineInCart?.customAttributes?.find(
|
|
1081
|
+
(attr) => attr.key === CUSTOMER_ATTRIBUTE_KEY && JSON.parse(attr.value)?.discounted_amount
|
|
1079
1082
|
);
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1083
|
+
} catch (error) {
|
|
1084
|
+
}
|
|
1085
|
+
if (codeAmountAttribute || functionAttribute || scriptCodeAmountAttribute) {
|
|
1086
|
+
return {
|
|
1087
|
+
...line,
|
|
1088
|
+
attributes: [
|
|
1089
|
+
...line.attributes || [],
|
|
1090
|
+
codeAmountAttribute,
|
|
1091
|
+
functionAttribute,
|
|
1092
|
+
scriptCodeAmountAttribute
|
|
1093
|
+
].filter(Boolean)
|
|
1094
|
+
};
|
|
1095
|
+
}
|
|
1096
|
+
return line;
|
|
1097
|
+
};
|
|
1098
|
+
var initDiscountAttributes = ({ line }) => {
|
|
1099
|
+
let itemAttributes = line.attributes || [];
|
|
1100
|
+
const functionEnvAttribute = itemAttributes.find((attr) => attr.key === CUSTOMER_ATTRIBUTE_KEY);
|
|
1101
|
+
if (!functionEnvAttribute) {
|
|
1102
|
+
itemAttributes = itemAttributes.concat([
|
|
1103
|
+
{
|
|
1104
|
+
key: CUSTOMER_ATTRIBUTE_KEY,
|
|
1105
|
+
value: JSON.stringify({
|
|
1106
|
+
is_gift: false,
|
|
1107
|
+
discounted_amount: line.variant?.finalPrice?.amount === void 0 ? Number(line.variant?.price?.amount) * (line.quantity || 1) : Number(line.variant?.finalPrice?.amount) * (line.quantity || 1)
|
|
1108
|
+
})
|
|
1109
|
+
}
|
|
1110
|
+
]);
|
|
1111
|
+
}
|
|
1112
|
+
const memberPriceAttribute = itemAttributes.find(
|
|
1113
|
+
(attr) => attr.key === MEMBER_PRICE_ATTRIBUTE_KEY
|
|
1114
|
+
);
|
|
1115
|
+
const coupon = line.coupon;
|
|
1116
|
+
if (!memberPriceAttribute && coupon) {
|
|
1117
|
+
itemAttributes = itemAttributes.concat([
|
|
1118
|
+
{
|
|
1119
|
+
key: MEMBER_PRICE_ATTRIBUTE_KEY,
|
|
1120
|
+
value: JSON.stringify({ code: coupon.code })
|
|
1121
|
+
}
|
|
1122
|
+
]);
|
|
1123
|
+
}
|
|
1124
|
+
const couponDiscountAttribute = itemAttributes.find(
|
|
1125
|
+
(attr) => attr.key === CODE_AMOUNT_KEY || attr.key === SCRIPT_CODE_AMOUNT_KEY
|
|
1126
|
+
);
|
|
1127
|
+
if (!couponDiscountAttribute && coupon && Number(coupon?.amount) > 0) {
|
|
1128
|
+
itemAttributes = itemAttributes.concat([
|
|
1129
|
+
{
|
|
1130
|
+
key: CODE_AMOUNT_KEY,
|
|
1131
|
+
value: new Decimal2__default.default(coupon.amount).times(line.quantity || 1).toString()
|
|
1132
|
+
},
|
|
1133
|
+
{
|
|
1134
|
+
key: SCRIPT_CODE_AMOUNT_KEY,
|
|
1135
|
+
value: new Decimal2__default.default(coupon.amount).times(line.quantity || 1).toString()
|
|
1136
|
+
}
|
|
1137
|
+
]);
|
|
1138
|
+
}
|
|
1139
|
+
return { ...line, attributes: itemAttributes };
|
|
1100
1140
|
};
|
|
1101
|
-
var
|
|
1141
|
+
var getLinesWithAttributes = ({
|
|
1142
|
+
cart,
|
|
1143
|
+
lineItems
|
|
1144
|
+
}) => {
|
|
1102
1145
|
return lineItems.map((line) => {
|
|
1103
|
-
|
|
1104
|
-
const
|
|
1105
|
-
|
|
1106
|
-
itemAttributes = itemAttributes.concat([
|
|
1107
|
-
{
|
|
1108
|
-
key: CUSTOMER_ATTRIBUTE_KEY,
|
|
1109
|
-
value: JSON.stringify({
|
|
1110
|
-
is_gift: false,
|
|
1111
|
-
discounted_amount: line.variant?.finalPrice?.amount === void 0 ? Number(line.variant?.price?.amount) * (line.quantity || 1) : Number(line.variant?.finalPrice?.amount) * (line.quantity || 1)
|
|
1112
|
-
})
|
|
1113
|
-
}
|
|
1114
|
-
]);
|
|
1115
|
-
}
|
|
1116
|
-
return { ...line, attributes: itemAttributes };
|
|
1146
|
+
const sameLine = initSameLinesAttributes({ cart, line });
|
|
1147
|
+
const functionLine = initDiscountAttributes({ line: sameLine });
|
|
1148
|
+
return functionLine;
|
|
1117
1149
|
});
|
|
1118
1150
|
};
|
|
1119
1151
|
|
|
@@ -1142,11 +1174,7 @@ function useAddToCart({ withTrack = true } = {}, swrOptions) {
|
|
|
1142
1174
|
return;
|
|
1143
1175
|
}
|
|
1144
1176
|
performanceAdapter?.addToCartStart();
|
|
1145
|
-
const
|
|
1146
|
-
cart,
|
|
1147
|
-
lineItems
|
|
1148
|
-
});
|
|
1149
|
-
const linesWithFunctionAttributes = getLinesWithFunctionAttributes(linesWithAttributes);
|
|
1177
|
+
const linesWithFunctionAttributes = getLinesWithAttributes({ cart, lineItems });
|
|
1150
1178
|
const lines = linesWithFunctionAttributes.map((item) => ({
|
|
1151
1179
|
merchandiseId: item.variant?.id || "",
|
|
1152
1180
|
quantity: item.quantity || 1,
|
|
@@ -1283,24 +1311,31 @@ function useRemoveCartLines(options) {
|
|
|
1283
1311
|
);
|
|
1284
1312
|
return useSWRMutation__default.default("remove-cart-lines", removeLines, options);
|
|
1285
1313
|
}
|
|
1286
|
-
function useUpdateCartAttributes(
|
|
1314
|
+
function useUpdateCartAttributes({
|
|
1315
|
+
mutate,
|
|
1316
|
+
metafieldIdentifiers,
|
|
1317
|
+
disabled = false,
|
|
1318
|
+
swrOptions
|
|
1319
|
+
}) {
|
|
1287
1320
|
const { client, locale, cartCookieAdapter } = useShopify();
|
|
1288
1321
|
const updateAttributes = react.useCallback(
|
|
1289
1322
|
async (_key, { arg }) => {
|
|
1323
|
+
if (disabled || !cartCookieAdapter?.getCartId(locale)) {
|
|
1324
|
+
return void 0;
|
|
1325
|
+
}
|
|
1290
1326
|
const updatedCart = await shopifySdk.updateCartAttributes(client, {
|
|
1291
1327
|
...arg,
|
|
1292
1328
|
metafieldIdentifiers,
|
|
1293
1329
|
cookieAdapter: cartCookieAdapter
|
|
1294
1330
|
});
|
|
1295
|
-
console.log("useUpdateCartAttributes updatedCart", updatedCart);
|
|
1296
1331
|
if (updatedCart) {
|
|
1297
1332
|
mutate(updatedCart);
|
|
1298
1333
|
}
|
|
1299
1334
|
return updatedCart;
|
|
1300
1335
|
},
|
|
1301
|
-
[client, locale, cartCookieAdapter, mutate, metafieldIdentifiers]
|
|
1336
|
+
[client, locale, cartCookieAdapter, mutate, metafieldIdentifiers, disabled]
|
|
1302
1337
|
);
|
|
1303
|
-
return useSWRMutation__default.default("update-cart-attributes", updateAttributes,
|
|
1338
|
+
return useSWRMutation__default.default("update-cart-attributes", updateAttributes, swrOptions);
|
|
1304
1339
|
}
|
|
1305
1340
|
function useBuyNow({ withTrack = true } = {}, swrOptions) {
|
|
1306
1341
|
const { client, config, locale, cartCookieAdapter, userAdapter } = useShopify();
|
|
@@ -1320,13 +1355,15 @@ function useBuyNow({ withTrack = true } = {}, swrOptions) {
|
|
|
1320
1355
|
if (!lineItems || lineItems.length === 0) {
|
|
1321
1356
|
return;
|
|
1322
1357
|
}
|
|
1323
|
-
const linesWithFunctionAttributes =
|
|
1358
|
+
const linesWithFunctionAttributes = getLinesWithAttributes({
|
|
1359
|
+
lineItems
|
|
1360
|
+
});
|
|
1324
1361
|
const lines = linesWithFunctionAttributes.map((item) => ({
|
|
1325
1362
|
merchandiseId: item.variant?.id || "",
|
|
1326
1363
|
quantity: item.quantity || 1,
|
|
1327
1364
|
attributes: item.attributes,
|
|
1328
1365
|
sellingPlanId: item.sellingPlanId
|
|
1329
|
-
})).filter((item) => item.merchandiseId
|
|
1366
|
+
})).filter((item) => item.merchandiseId);
|
|
1330
1367
|
if (lines.length === 0) {
|
|
1331
1368
|
return;
|
|
1332
1369
|
}
|
|
@@ -1381,17 +1418,41 @@ function useCalcGiftsFromLines({
|
|
|
1381
1418
|
lines
|
|
1382
1419
|
});
|
|
1383
1420
|
const allGiftLines = react.useMemo(() => {
|
|
1384
|
-
const functionGiftLines = functionGift.qualifyingGift?.itemsToAdd || []
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
(p) => p.handle === product.handle
|
|
1421
|
+
const functionGiftLines = (functionGift.qualifyingGift?.itemsToAdd || []).map((item) => {
|
|
1422
|
+
const product = functionGift.giftProductsResult?.find(
|
|
1423
|
+
(product2) => product2.handle === item.variant.handle
|
|
1388
1424
|
);
|
|
1389
|
-
const
|
|
1425
|
+
const variants = product?.variants;
|
|
1426
|
+
const variant = Array.isArray(variants) ? variants.find((v) => v.sku === item.variant.sku) : void 0;
|
|
1427
|
+
if (!variant) {
|
|
1428
|
+
console.warn(
|
|
1429
|
+
`Function gift: Variant not found for handle=${item.variant.handle}, sku=${item.variant.sku}`
|
|
1430
|
+
);
|
|
1431
|
+
return null;
|
|
1432
|
+
}
|
|
1390
1433
|
return {
|
|
1391
1434
|
variant: {
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1435
|
+
...variant,
|
|
1436
|
+
product
|
|
1437
|
+
},
|
|
1438
|
+
quantity: item.quantity ?? 1,
|
|
1439
|
+
attributes: item.attributes
|
|
1440
|
+
};
|
|
1441
|
+
}).filter((item) => item !== null);
|
|
1442
|
+
const scriptGiftLines = scriptGift.freeGiftLevel ? scriptGift.freeGiftLevel.giveawayProducts.map((item) => {
|
|
1443
|
+
const product = scriptGift.giftProductsResult?.find(
|
|
1444
|
+
(product2) => product2.handle === item.handle
|
|
1445
|
+
);
|
|
1446
|
+
const variants = product?.variants;
|
|
1447
|
+
const variant = Array.isArray(variants) ? variants.find((v) => v.sku === item.sku) : void 0;
|
|
1448
|
+
if (!variant) {
|
|
1449
|
+
console.warn(`Script gift: Variant not found for handle=${item.handle}, sku=${item.sku}`);
|
|
1450
|
+
return null;
|
|
1451
|
+
}
|
|
1452
|
+
return {
|
|
1453
|
+
variant: {
|
|
1454
|
+
...variant,
|
|
1455
|
+
product
|
|
1395
1456
|
},
|
|
1396
1457
|
quantity: 1,
|
|
1397
1458
|
attributes: [
|
|
@@ -1401,10 +1462,11 @@ function useCalcGiftsFromLines({
|
|
|
1401
1462
|
}
|
|
1402
1463
|
]
|
|
1403
1464
|
};
|
|
1404
|
-
}).filter((item) => item
|
|
1465
|
+
}).filter((item) => item !== null) : [];
|
|
1405
1466
|
return [...functionGiftLines, ...scriptGiftLines];
|
|
1406
1467
|
}, [
|
|
1407
1468
|
functionGift.qualifyingGift,
|
|
1469
|
+
functionGift.giftProductsResult,
|
|
1408
1470
|
scriptGift.freeGiftLevel,
|
|
1409
1471
|
scriptGift.giftProductsResult,
|
|
1410
1472
|
scriptGiveawayKey
|
|
@@ -1637,7 +1699,7 @@ var useCartAttributes = ({
|
|
|
1637
1699
|
})
|
|
1638
1700
|
}
|
|
1639
1701
|
] : [];
|
|
1640
|
-
}, [cart]);
|
|
1702
|
+
}, [cart, customer]);
|
|
1641
1703
|
const presellAttributes = react.useMemo(() => {
|
|
1642
1704
|
return [
|
|
1643
1705
|
{
|
|
@@ -1701,9 +1763,7 @@ var useCartAttributes = ({
|
|
|
1701
1763
|
"_play_mode_id",
|
|
1702
1764
|
"_popup"
|
|
1703
1765
|
];
|
|
1704
|
-
return cart?.customAttributes?.filter(
|
|
1705
|
-
(item) => !commonAttributeKeys.includes(item.key)
|
|
1706
|
-
) || [];
|
|
1766
|
+
return cart?.customAttributes?.filter((item) => !commonAttributeKeys.includes(item.key)) || [];
|
|
1707
1767
|
}, [cart]);
|
|
1708
1768
|
return react.useMemo(
|
|
1709
1769
|
() => ({
|
|
@@ -2557,8 +2617,9 @@ var createInitialValue = () => ({
|
|
|
2557
2617
|
tddCoupon: void 0,
|
|
2558
2618
|
isLoadingCoupon: false
|
|
2559
2619
|
},
|
|
2560
|
-
|
|
2561
|
-
|
|
2620
|
+
selectedPlusMemberVariant: void 0,
|
|
2621
|
+
monthlyVariant: void 0,
|
|
2622
|
+
annualVariant: void 0,
|
|
2562
2623
|
showPlusMemberBenefit: false,
|
|
2563
2624
|
setShowPlusMemberBenefit: () => {
|
|
2564
2625
|
},
|
|
@@ -2572,33 +2633,39 @@ var PlusMemberContext = react.createContext(createInitialValue());
|
|
|
2572
2633
|
function usePlusMemberContext() {
|
|
2573
2634
|
return react.useContext(PlusMemberContext);
|
|
2574
2635
|
}
|
|
2575
|
-
function
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
const
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
);
|
|
2582
|
-
|
|
2583
|
-
|
|
2584
|
-
|
|
2585
|
-
|
|
2636
|
+
function usePlusMemberVariants({
|
|
2637
|
+
memberSetting
|
|
2638
|
+
}) {
|
|
2639
|
+
const plusMonthly = memberSetting?.plus_monthly_product;
|
|
2640
|
+
const plusAnnual = memberSetting?.plus_annual_product;
|
|
2641
|
+
const plusMemberHandles = react.useMemo(() => {
|
|
2642
|
+
return [plusMonthly?.handle, plusAnnual?.handle].filter(Boolean);
|
|
2643
|
+
}, [plusMonthly?.handle, plusAnnual?.handle]);
|
|
2644
|
+
const { data: plusMemberProducts = [] } = useProductsByHandles({
|
|
2645
|
+
handles: plusMemberHandles
|
|
2646
|
+
});
|
|
2647
|
+
const monthlyProduct = react.useMemo(() => {
|
|
2648
|
+
return plusMemberProducts?.find((item) => item?.handle === plusMonthly?.handle);
|
|
2586
2649
|
}, [plusMemberProducts, plusMonthly]);
|
|
2587
|
-
|
|
2588
|
-
|
|
2589
|
-
function usePlusAnnualProductVariant() {
|
|
2590
|
-
const { plusMemberProducts, plusMemberMetafields } = usePlusMemberContext();
|
|
2591
|
-
const plusAnnual = plusMemberMetafields?.plus_annual_product;
|
|
2592
|
-
const plusAnnualProductVariant = react.useMemo(() => {
|
|
2593
|
-
const product = plusMemberProducts?.find(
|
|
2594
|
-
(item) => item?.handle === plusAnnual?.handle
|
|
2595
|
-
);
|
|
2596
|
-
const productVariant = product?.variants?.find(
|
|
2597
|
-
(item) => item.sku === plusAnnual?.sku
|
|
2598
|
-
);
|
|
2599
|
-
return productVariant;
|
|
2650
|
+
const annualProduct = react.useMemo(() => {
|
|
2651
|
+
return plusMemberProducts?.find((item) => item?.handle === plusAnnual?.handle);
|
|
2600
2652
|
}, [plusMemberProducts, plusAnnual]);
|
|
2601
|
-
|
|
2653
|
+
const monthlyVariant = react.useMemo(() => {
|
|
2654
|
+
return monthlyProduct?.variants?.find((item) => item.sku === plusMonthly?.sku);
|
|
2655
|
+
}, [monthlyProduct, plusMonthly]);
|
|
2656
|
+
const annualVariant = react.useMemo(() => {
|
|
2657
|
+
return annualProduct?.variants?.find((item) => item.sku === plusAnnual?.sku);
|
|
2658
|
+
}, [annualProduct, plusAnnual]);
|
|
2659
|
+
return {
|
|
2660
|
+
monthlyVariant: monthlyVariant ? {
|
|
2661
|
+
...monthlyVariant,
|
|
2662
|
+
product: monthlyProduct
|
|
2663
|
+
} : void 0,
|
|
2664
|
+
annualVariant: annualVariant ? {
|
|
2665
|
+
...annualVariant,
|
|
2666
|
+
product: annualProduct
|
|
2667
|
+
} : void 0
|
|
2668
|
+
};
|
|
2602
2669
|
}
|
|
2603
2670
|
var useAvailableDeliveryCoupon = ({
|
|
2604
2671
|
profile
|
|
@@ -2999,13 +3066,13 @@ function usePlusMemberNeedAddToCart({
|
|
|
2999
3066
|
cart,
|
|
3000
3067
|
profile
|
|
3001
3068
|
}) {
|
|
3002
|
-
const { selectedPlusMemberMode,
|
|
3069
|
+
const { selectedPlusMemberMode, selectedPlusMemberVariant, plusMemberMetafields } = usePlusMemberContext();
|
|
3003
3070
|
const { hasMonthlyPlus, hasAnnualPlus } = useHasPlusMemberInCart({
|
|
3004
3071
|
memberSetting: plusMemberMetafields,
|
|
3005
3072
|
cart
|
|
3006
3073
|
});
|
|
3007
|
-
const
|
|
3008
|
-
if (!
|
|
3074
|
+
const plusMemberVariant = react.useMemo(() => {
|
|
3075
|
+
if (!selectedPlusMemberVariant || selectedPlusMemberMode === "free" /* FREE */) {
|
|
3009
3076
|
return void 0;
|
|
3010
3077
|
}
|
|
3011
3078
|
if (selectedPlusMemberMode === "monthly" /* MONTHLY */ && hasMonthlyPlus) {
|
|
@@ -3020,15 +3087,9 @@ function usePlusMemberNeedAddToCart({
|
|
|
3020
3087
|
if (profile?.isAnnualPlus && selectedPlusMemberMode === "annual" /* ANNUAL */) {
|
|
3021
3088
|
return void 0;
|
|
3022
3089
|
}
|
|
3023
|
-
return
|
|
3024
|
-
}, [
|
|
3025
|
-
|
|
3026
|
-
selectedPlusMemberProduct?.variant,
|
|
3027
|
-
selectedPlusMemberProduct?.product,
|
|
3028
|
-
hasMonthlyPlus,
|
|
3029
|
-
hasAnnualPlus
|
|
3030
|
-
]);
|
|
3031
|
-
return plusMemberProduct;
|
|
3090
|
+
return selectedPlusMemberVariant;
|
|
3091
|
+
}, [selectedPlusMemberMode, selectedPlusMemberVariant, hasMonthlyPlus, hasAnnualPlus]);
|
|
3092
|
+
return plusMemberVariant;
|
|
3032
3093
|
}
|
|
3033
3094
|
var PlusMemberProvider = ({
|
|
3034
3095
|
variant,
|
|
@@ -3058,26 +3119,15 @@ var PlusMemberProvider = ({
|
|
|
3058
3119
|
profile,
|
|
3059
3120
|
isPlus: profile?.isPlus || false
|
|
3060
3121
|
});
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
return [
|
|
3064
|
-
memberSetting?.plus_monthly_product?.handle,
|
|
3065
|
-
memberSetting?.plus_annual_product?.handle
|
|
3066
|
-
].filter(Boolean);
|
|
3067
|
-
}, [memberSetting]);
|
|
3068
|
-
const { data: plusMemberProducts = [] } = useProductsByHandles({
|
|
3069
|
-
handles: plusMemberHandles
|
|
3122
|
+
const { monthlyVariant, annualVariant } = usePlusMemberVariants({
|
|
3123
|
+
memberSetting
|
|
3070
3124
|
});
|
|
3071
|
-
const
|
|
3125
|
+
const selectedPlusMemberVariant = react.useMemo(() => {
|
|
3072
3126
|
if (selectedPlusMemberMode === "free" /* FREE */) {
|
|
3073
|
-
return
|
|
3127
|
+
return void 0;
|
|
3074
3128
|
}
|
|
3075
|
-
|
|
3076
|
-
|
|
3077
|
-
const product2 = plusMemberProducts?.find((p) => p.handle === handle);
|
|
3078
|
-
const variant2 = product2?.variants?.find((v) => v.sku === sku);
|
|
3079
|
-
return product2 && variant2 ? { product: product2, variant: variant2 } : null;
|
|
3080
|
-
}, [plusMemberProducts, memberSetting, selectedPlusMemberMode]);
|
|
3129
|
+
return selectedPlusMemberMode === "monthly" /* MONTHLY */ ? monthlyVariant : annualVariant;
|
|
3130
|
+
}, [monthlyVariant, annualVariant, selectedPlusMemberMode]);
|
|
3081
3131
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
3082
3132
|
PlusMemberContext.Provider,
|
|
3083
3133
|
{
|
|
@@ -3101,8 +3151,9 @@ var PlusMemberProvider = ({
|
|
|
3101
3151
|
setShowTip,
|
|
3102
3152
|
showMoreShippingMethod,
|
|
3103
3153
|
setShowMoreShippingMethod,
|
|
3104
|
-
|
|
3105
|
-
|
|
3154
|
+
selectedPlusMemberVariant,
|
|
3155
|
+
monthlyVariant,
|
|
3156
|
+
annualVariant,
|
|
3106
3157
|
product,
|
|
3107
3158
|
showPlusMemberBenefit,
|
|
3108
3159
|
setShowPlusMemberBenefit,
|
|
@@ -3336,7 +3387,11 @@ function CartProvider({
|
|
|
3336
3387
|
refreshDeps: [locale]
|
|
3337
3388
|
}
|
|
3338
3389
|
);
|
|
3339
|
-
const { trigger: updateAttributes } = useUpdateCartAttributes(
|
|
3390
|
+
const { trigger: updateAttributes } = useUpdateCartAttributes({
|
|
3391
|
+
mutate: mutateCart,
|
|
3392
|
+
metafieldIdentifiers,
|
|
3393
|
+
disabled: isCartLoading
|
|
3394
|
+
});
|
|
3340
3395
|
const { attributes } = useCartAttributes({ profile, customer, cart, memberSetting });
|
|
3341
3396
|
ahooks.useRequest(
|
|
3342
3397
|
() => {
|
|
@@ -3527,6 +3582,7 @@ exports.CUSTOMER_SCRIPT_GIFT_KEY = CUSTOMER_SCRIPT_GIFT_KEY;
|
|
|
3527
3582
|
exports.CartProvider = CartProvider;
|
|
3528
3583
|
exports.DeliveryPlusType = DeliveryPlusType;
|
|
3529
3584
|
exports.MAIN_PRODUCT_CODE = MAIN_PRODUCT_CODE;
|
|
3585
|
+
exports.MEMBER_PRICE_ATTRIBUTE_KEY = MEMBER_PRICE_ATTRIBUTE_KEY;
|
|
3530
3586
|
exports.OrderBasePriceType = OrderBasePriceType;
|
|
3531
3587
|
exports.OrderDiscountType = OrderDiscountType;
|
|
3532
3588
|
exports.PLUS_MEMBER_TYPE = PLUS_MEMBER_TYPE;
|
|
@@ -3590,13 +3646,12 @@ exports.useExposure = useExposure;
|
|
|
3590
3646
|
exports.useGeoLocation = useGeoLocation;
|
|
3591
3647
|
exports.useHasPlusMemberInCart = useHasPlusMemberInCart;
|
|
3592
3648
|
exports.useIntersection = useIntersection;
|
|
3593
|
-
exports.usePlusAnnualProductVariant = usePlusAnnualProductVariant;
|
|
3594
3649
|
exports.usePlusMemberCheckoutCustomAttributes = usePlusMemberCheckoutCustomAttributes;
|
|
3595
3650
|
exports.usePlusMemberContext = usePlusMemberContext;
|
|
3596
3651
|
exports.usePlusMemberDeliveryCodes = usePlusMemberDeliveryCodes;
|
|
3597
3652
|
exports.usePlusMemberItemCustomAttributes = usePlusMemberItemCustomAttributes;
|
|
3598
3653
|
exports.usePlusMemberNeedAddToCart = usePlusMemberNeedAddToCart;
|
|
3599
|
-
exports.
|
|
3654
|
+
exports.usePlusMemberVariants = usePlusMemberVariants;
|
|
3600
3655
|
exports.usePrice = usePrice;
|
|
3601
3656
|
exports.useProduct = useProduct;
|
|
3602
3657
|
exports.useProductUrl = useProductUrl;
|