@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/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, usePlusAnnualProductVariant, usePlusMemberCheckoutCustomAttributes, usePlusMemberContext, usePlusMemberDeliveryCodes, usePlusMemberItemCustomAttributes, usePlusMemberNeedAddToCart, usePlusMonthlyProductVariant, 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 SelectedPlusMemberProduct, 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-BSsb8OPm.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, 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, usePlusAnnualProductVariant, usePlusMemberCheckoutCustomAttributes, usePlusMemberContext, usePlusMemberDeliveryCodes, usePlusMemberItemCustomAttributes, usePlusMemberNeedAddToCart, usePlusMonthlyProductVariant, 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 SelectedPlusMemberProduct, 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-BSsb8OPm.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, 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
- lineItems
1067
+ line
1069
1068
  }) => {
1070
- return lineItems.map((line) => {
1071
- const sameLineInCart = cart?.lineItems.find(
1072
- (lineInCart) => lineInCart.variant.sku === line.variant?.sku && lineInCart.product?.handle === line.variant?.product?.handle
1073
- );
1074
- const codeAmountAttribute = sameLineInCart?.customAttributes?.find(
1075
- (attr) => attr.key === CODE_AMOUNT_KEY
1076
- );
1077
- const scriptCodeAmountAttribute = sameLineInCart?.customAttributes?.find(
1078
- (attr) => attr.key === SCRIPT_CODE_AMOUNT_KEY
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
- let functionAttribute = null;
1081
- try {
1082
- functionAttribute = sameLineInCart?.customAttributes?.find(
1083
- (attr) => attr.key === CUSTOMER_ATTRIBUTE_KEY && JSON.parse(attr.value)?.discounted_amount
1084
- );
1085
- } catch (error) {
1086
- }
1087
- if (codeAmountAttribute || functionAttribute || scriptCodeAmountAttribute) {
1088
- return {
1089
- ...line,
1090
- attributes: [
1091
- ...line.attributes || [],
1092
- codeAmountAttribute,
1093
- functionAttribute,
1094
- scriptCodeAmountAttribute
1095
- ].filter(Boolean)
1096
- };
1097
- }
1098
- return line;
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 getLinesWithFunctionAttributes = (lineItems) => {
1141
+ var getLinesWithAttributes = ({
1142
+ cart,
1143
+ lineItems
1144
+ }) => {
1102
1145
  return lineItems.map((line) => {
1103
- let itemAttributes = line.attributes || [];
1104
- const functionEnvAttribute = itemAttributes.find((attr) => attr.key === CUSTOMER_ATTRIBUTE_KEY);
1105
- if (!functionEnvAttribute) {
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 linesWithAttributes = getLinesWithAttributes({
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(mutate, metafieldIdentifiers, options) {
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, options);
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 = getLinesWithFunctionAttributes(lineItems);
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 && item.quantity);
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
- const scriptGiftLines = scriptGift.freeGiftLevel ? scriptGift.freeGiftLevel.giveawayProducts.map((product) => {
1386
- const giftProduct = scriptGift.giftProductsResult?.find(
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 variant = giftProduct?.variants?.[0];
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
- id: variant?.id || "",
1393
- handle: product.handle,
1394
- sku: product.sku
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.variant.id) : [];
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
- selectedPlusMemberProduct: null,
2561
- plusMemberProducts: [],
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 usePlusMonthlyProductVariant() {
2576
- const { plusMemberProducts, plusMemberMetafields } = usePlusMemberContext();
2577
- const plusMonthly = plusMemberMetafields?.plus_monthly_product;
2578
- const plusMonthlyProductVariant = react.useMemo(() => {
2579
- const product = plusMemberProducts?.find(
2580
- (item) => item?.handle === plusMonthly?.handle
2581
- );
2582
- const productVariant = product?.variants?.find(
2583
- (item) => item.sku === plusMonthly?.sku
2584
- );
2585
- return productVariant;
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
- return plusMonthlyProductVariant;
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
- return plusAnnualProductVariant;
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, selectedPlusMemberProduct, plusMemberMetafields } = usePlusMemberContext();
3069
+ const { selectedPlusMemberMode, selectedPlusMemberVariant, plusMemberMetafields } = usePlusMemberContext();
3003
3070
  const { hasMonthlyPlus, hasAnnualPlus } = useHasPlusMemberInCart({
3004
3071
  memberSetting: plusMemberMetafields,
3005
3072
  cart
3006
3073
  });
3007
- const plusMemberProduct = react.useMemo(() => {
3008
- if (!selectedPlusMemberProduct || selectedPlusMemberMode === "free" /* FREE */) {
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 selectedPlusMemberProduct;
3024
- }, [
3025
- selectedPlusMemberMode,
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
- console.log("shippingMethodsContext", shippingMethodsContext);
3062
- const plusMemberHandles = react.useMemo(() => {
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 selectedPlusMemberProduct = react.useMemo(() => {
3125
+ const selectedPlusMemberVariant = react.useMemo(() => {
3072
3126
  if (selectedPlusMemberMode === "free" /* FREE */) {
3073
- return null;
3127
+ return void 0;
3074
3128
  }
3075
- const handle = selectedPlusMemberMode === "monthly" /* MONTHLY */ ? memberSetting?.plus_monthly_product?.handle : memberSetting?.plus_annual_product?.handle;
3076
- const sku = selectedPlusMemberMode === "monthly" /* MONTHLY */ ? memberSetting?.plus_monthly_product?.sku : memberSetting?.plus_annual_product?.sku;
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
- selectedPlusMemberProduct,
3105
- plusMemberProducts,
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(mutateCart, metafieldIdentifiers);
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.usePlusMonthlyProductVariant = usePlusMonthlyProductVariant;
3654
+ exports.usePlusMemberVariants = usePlusMemberVariants;
3600
3655
  exports.usePrice = usePrice;
3601
3656
  exports.useProduct = useProduct;
3602
3657
  exports.useProductUrl = useProductUrl;