@anker-in/shopify-react 0.1.1-beta.40 → 0.1.1-beta.41

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, 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-y1Wa95P3.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, 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-y1Wa95P3.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,
@@ -1320,13 +1348,15 @@ function useBuyNow({ withTrack = true } = {}, swrOptions) {
1320
1348
  if (!lineItems || lineItems.length === 0) {
1321
1349
  return;
1322
1350
  }
1323
- const linesWithFunctionAttributes = getLinesWithFunctionAttributes(lineItems);
1351
+ const linesWithFunctionAttributes = getLinesWithAttributes({
1352
+ lineItems
1353
+ });
1324
1354
  const lines = linesWithFunctionAttributes.map((item) => ({
1325
1355
  merchandiseId: item.variant?.id || "",
1326
1356
  quantity: item.quantity || 1,
1327
1357
  attributes: item.attributes,
1328
1358
  sellingPlanId: item.sellingPlanId
1329
- })).filter((item) => item.merchandiseId && item.quantity);
1359
+ })).filter((item) => item.merchandiseId);
1330
1360
  if (lines.length === 0) {
1331
1361
  return;
1332
1362
  }
@@ -1381,17 +1411,41 @@ function useCalcGiftsFromLines({
1381
1411
  lines
1382
1412
  });
1383
1413
  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
1414
+ const functionGiftLines = (functionGift.qualifyingGift?.itemsToAdd || []).map((item) => {
1415
+ const product = functionGift.giftProductsResult?.find(
1416
+ (product2) => product2.handle === item.variant.handle
1388
1417
  );
1389
- const variant = giftProduct?.variants?.[0];
1418
+ const variants = product?.variants;
1419
+ const variant = Array.isArray(variants) ? variants.find((v) => v.sku === item.variant.sku) : void 0;
1420
+ if (!variant) {
1421
+ console.warn(
1422
+ `Function gift: Variant not found for handle=${item.variant.handle}, sku=${item.variant.sku}`
1423
+ );
1424
+ return null;
1425
+ }
1426
+ return {
1427
+ variant: {
1428
+ ...variant,
1429
+ product
1430
+ },
1431
+ quantity: item.quantity ?? 1,
1432
+ attributes: item.attributes
1433
+ };
1434
+ }).filter((item) => item !== null);
1435
+ const scriptGiftLines = scriptGift.freeGiftLevel ? scriptGift.freeGiftLevel.giveawayProducts.map((item) => {
1436
+ const product = scriptGift.giftProductsResult?.find(
1437
+ (product2) => product2.handle === item.handle
1438
+ );
1439
+ const variants = product?.variants;
1440
+ const variant = Array.isArray(variants) ? variants.find((v) => v.sku === item.sku) : void 0;
1441
+ if (!variant) {
1442
+ console.warn(`Script gift: Variant not found for handle=${item.handle}, sku=${item.sku}`);
1443
+ return null;
1444
+ }
1390
1445
  return {
1391
1446
  variant: {
1392
- id: variant?.id || "",
1393
- handle: product.handle,
1394
- sku: product.sku
1447
+ ...variant,
1448
+ product
1395
1449
  },
1396
1450
  quantity: 1,
1397
1451
  attributes: [
@@ -1401,10 +1455,11 @@ function useCalcGiftsFromLines({
1401
1455
  }
1402
1456
  ]
1403
1457
  };
1404
- }).filter((item) => item.variant.id) : [];
1458
+ }).filter((item) => item !== null) : [];
1405
1459
  return [...functionGiftLines, ...scriptGiftLines];
1406
1460
  }, [
1407
1461
  functionGift.qualifyingGift,
1462
+ functionGift.giftProductsResult,
1408
1463
  scriptGift.freeGiftLevel,
1409
1464
  scriptGift.giftProductsResult,
1410
1465
  scriptGiveawayKey
@@ -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;