@anker-in/shopify-react 0.1.1-beta.2 → 0.1.1-beta.3

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.
@@ -1,4 +1,4 @@
1
- export { A as AddCartLinesInput, d as ApplyCartCodesInput, s as AutoFreeGift, v as AutoFreeGiftConfig, L as AutoFreeGiftItem, N as AutoFreeGiftList, t as AutoFreeGiftMainProduct, B as BuyNowInput, H as BuyRuleType, a2 as CODE_AMOUNT_KEY, a0 as CUSTOMER_ATTRIBUTE_KEY, a1 as CUSTOMER_SCRIPT_GIFT_KEY, K as CartLineInput, x as Config, C as CreateCartInput, b8 as Customer, b7 as CustomerOrder, D as DiscountLabel, J as FormattedGift, I as FunctionGiftResult, bn as GeoLocationData, G as GiftProduct, E as GiftProductItem, y as GiftTier, bd as HasPlusMemberInCartResult, au as ImageMedia, bo as LocaleMapping, a4 as MAIN_PRODUCT_CODE, M as MainProductInfo, an as Options, Q as OrderBasePriceType, W as OrderDiscountConfig, O as OrderDiscountResult, P as OrderDiscountType, aY as PlusMemberContext, aX as PlusMemberContextValue, bi as PlusMemberProvider, bh as PlusMemberProviderProps, Y as PriceBasePriceType, Z as PriceDiscountConfig, X as PriceDiscountType, f as RemoveCartCodesInput, R as RemoveCartLinesInput, z as RewardItem, w as RuleCondition, F as RuleType, a3 as SCRIPT_CODE_AMOUNT_KEY, aQ as SearchResult, aP as SearchResultItem, aO as SearchResultType, ag as SelectedOptionsResult, aW as ShippingMethodsContext, aT as SiteInfo, S as SpendMoneyType, T as TieredDiscount, U as UpdateCartAttributesInput, bf as UseAddPlusMemberProductsToCartProps, aG as UseAllBlogsOptions, aA as UseAllCollectionsOptions, aj as UseAllProductsOptions, aI as UseArticleOptions, aM as UseArticlesInBlogOptions, aK as UseArticlesOptions, ba as UseAutoRemovePlusMemberInCartProps, aE as UseBlogOptions, i as UseBuyNowOptions, ay as UseCollectionOptions, aC as UseCollectionsOptions, bl as UseExposureOptions, bp as UseGeoLocationOptions, bc as UseHasPlusMemberInCartProps, bj as UseIntersectionOptions, ap as UsePriceOptions, aq as UsePriceResult, ah as UseProductOptions, al as UseProductsByHandlesOptions, p as UseScriptAutoFreeGiftResult, aR as UseSearchOptions, b0 as UseShippingMethodsOptions, b1 as UseShippingMethodsResult, aU as UseSiteOptions, V as VariantItem, aw as VariantMedia, av as VideoMedia, a6 as atobID, a7 as btoaID, ab as checkAttributesUpdateNeeded, bs as clearGeoLocationCache, _ as currencyCodeMapping, $ as defaultSWRMutationConfiguration, ae as formatFunctionAutoFreeGift, ad as formatScriptAutoFreeGift, br as getCachedGeoLocation, aa as getDiscountEnvAttributeValue, a8 as getMatchedMainProductSubTotal, a5 as getQuery, m as getReferralAttributes, ac as preCheck, a9 as safeParse, a as useAddCartLines, bg as useAddPlusMemberProductsToCart, aH as useAllBlogs, aB as useAllCollections, ak as useAllProducts, e as useApplyCartCodes, aJ as useArticle, aL as useArticles, aN as useArticlesInBlog, bb as useAutoRemovePlusMemberInCart, aF as useBlog, j as useBuyNow, k as useCalcAutoFreeGift, l as useCalcOrderDiscount, n as useCartAttributes, o as useCartItemQuantityLimit, az as useCollection, aD as useCollections, u as useCreateCart, bm as useExposure, bq as useGeoLocation, be as useHasPlusMemberInCart, bk as useIntersection, a$ as usePlusAnnualProductVariant, b9 as usePlusMemberCheckoutCustomAttributes, aZ as usePlusMemberContext, b5 as usePlusMemberDeliveryCodes, b6 as usePlusMemberItemCustomAttributes, a_ as usePlusMonthlyProductVariant, ar as usePrice, ai as useProduct, as as useProductUrl, am as useProductsByHandles, g as useRemoveCartCodes, c as useRemoveCartLines, b4 as useReplaceCartPlusMember, q as useScriptAutoFreeGift, aS as useSearch, af as useSelectedOptions, b3 as useShippingMethodAvailableCheck, b2 as useShippingMethods, aV as useSite, h as useUpdateCartAttributes, b as useUpdateCartLines, r as useUpdateLineCodeAmountAttributes, at as useUpdateVariantQuery, ao as useVariant, ax as useVariantMedia } from '../index-Bea95u2X.mjs';
1
+ export { A as AddCartLinesInput, d as ApplyCartCodesInput, w as AutoFreeGift, y as AutoFreeGiftConfig, Q as AutoFreeGiftItem, T as AutoFreeGiftList, x as AutoFreeGiftMainProduct, B as BuyNowInput, K as BuyRuleType, a5 as CODE_AMOUNT_KEY, a3 as CUSTOMER_ATTRIBUTE_KEY, a4 as CUSTOMER_SCRIPT_GIFT_KEY, P as CartLineInput, E as Config, C as CreateCartInput, bd as Customer, bc as CustomerOrder, D as DiscountLabel, N as FormattedGift, L as FunctionGiftResult, bs as GeoLocationData, G as GiftProduct, I as GiftProductItem, F as GiftTier, bi as HasPlusMemberInCartResult, az as ImageMedia, bt as LocaleMapping, a7 as MAIN_PRODUCT_CODE, M as MainProductInfo, as as Options, X as OrderBasePriceType, Z as OrderDiscountConfig, O as OrderDiscountResult, W as OrderDiscountType, b1 as PlusMemberContext, b0 as PlusMemberContextValue, bn as PlusMemberProvider, bm as PlusMemberProviderProps, $ as PriceBasePriceType, a0 as PriceDiscountConfig, _ as PriceDiscountType, f as RemoveCartCodesInput, R as RemoveCartLinesInput, H as RewardItem, z as RuleCondition, J as RuleType, a6 as SCRIPT_CODE_AMOUNT_KEY, aV as SearchResult, aU as SearchResultItem, aT as SearchResultType, al as SelectedOptionsResult, a$ as ShippingMethodsContext, aY as SiteInfo, S as SpendMoneyType, Y as TieredDiscount, U as UpdateCartAttributesInput, bk as UseAddPlusMemberProductsToCartProps, aL as UseAllBlogsOptions, aF as UseAllCollectionsOptions, ao as UseAllProductsOptions, aN as UseArticleOptions, aR as UseArticlesInBlogOptions, aP as UseArticlesOptions, bf as UseAutoRemovePlusMemberInCartProps, aJ as UseBlogOptions, i as UseBuyNowOptions, l as UseCalcGiftsFromLinesOptions, m as UseCalcGiftsFromLinesResult, aD as UseCollectionOptions, aH as UseCollectionsOptions, bq as UseExposureOptions, bu as UseGeoLocationOptions, bh as UseHasPlusMemberInCartProps, bo as UseIntersectionOptions, au as UsePriceOptions, av as UsePriceResult, am as UseProductOptions, aq as UseProductsByHandlesOptions, s as UseScriptAutoFreeGiftResult, aW as UseSearchOptions, b5 as UseShippingMethodsOptions, b6 as UseShippingMethodsResult, aZ as UseSiteOptions, V as VariantItem, aB as VariantMedia, aA as VideoMedia, a9 as atobID, aa as btoaID, ag as checkAttributesUpdateNeeded, bx as clearGeoLocationCache, ac as createMockCartFromLines, a1 as currencyCodeMapping, a2 as defaultSWRMutationConfiguration, aj as formatFunctionAutoFreeGift, ai as formatScriptAutoFreeGift, bw as getCachedGeoLocation, af as getDiscountEnvAttributeValue, ad as getMatchedMainProductSubTotal, a8 as getQuery, p as getReferralAttributes, ab as normalizeAddToCartLines, ah as preCheck, ae as safeParse, a as useAddCartLines, bl as useAddPlusMemberProductsToCart, aM as useAllBlogs, aG as useAllCollections, ap as useAllProducts, e as useApplyCartCodes, aO as useArticle, aQ as useArticles, aS as useArticlesInBlog, bg as useAutoRemovePlusMemberInCart, aK as useBlog, j as useBuyNow, k as useCalcAutoFreeGift, n as useCalcGiftsFromLines, o as useCalcOrderDiscount, q as useCartAttributes, r as useCartItemQuantityLimit, aE as useCollection, aI as useCollections, u as useCreateCart, br as useExposure, bv as useGeoLocation, bj as useHasPlusMemberInCart, bp as useIntersection, b4 as usePlusAnnualProductVariant, be as usePlusMemberCheckoutCustomAttributes, b2 as usePlusMemberContext, ba as usePlusMemberDeliveryCodes, bb as usePlusMemberItemCustomAttributes, b3 as usePlusMonthlyProductVariant, aw as usePrice, an as useProduct, ax as useProductUrl, ar as useProductsByHandles, g as useRemoveCartCodes, c as useRemoveCartLines, b9 as useReplaceCartPlusMember, t as useScriptAutoFreeGift, aX as useSearch, ak as useSelectedOptions, b8 as useShippingMethodAvailableCheck, b7 as useShippingMethods, a_ as useSite, h as useUpdateCartAttributes, b as useUpdateCartLines, v as useUpdateLineCodeAmountAttributes, ay as useUpdateVariantQuery, at as useVariant, aC as useVariantMedia } from '../index-Utuz9i5x.mjs';
2
2
  export { a as AddToCartInput, A as AddToCartLineItem, h as DeliveryCustomData, i as DeliveryData, g as DeliveryOption, D as DeliveryPlusType, M as MailingAddress, 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, u as useAddToCart } from '../types-CICUnw0v.mjs';
3
3
  import 'swr/mutation';
4
4
  import '@anker-in/shopify-sdk';
@@ -1,4 +1,4 @@
1
- export { A as AddCartLinesInput, d as ApplyCartCodesInput, s as AutoFreeGift, v as AutoFreeGiftConfig, L as AutoFreeGiftItem, N as AutoFreeGiftList, t as AutoFreeGiftMainProduct, B as BuyNowInput, H as BuyRuleType, a2 as CODE_AMOUNT_KEY, a0 as CUSTOMER_ATTRIBUTE_KEY, a1 as CUSTOMER_SCRIPT_GIFT_KEY, K as CartLineInput, x as Config, C as CreateCartInput, b8 as Customer, b7 as CustomerOrder, D as DiscountLabel, J as FormattedGift, I as FunctionGiftResult, bn as GeoLocationData, G as GiftProduct, E as GiftProductItem, y as GiftTier, bd as HasPlusMemberInCartResult, au as ImageMedia, bo as LocaleMapping, a4 as MAIN_PRODUCT_CODE, M as MainProductInfo, an as Options, Q as OrderBasePriceType, W as OrderDiscountConfig, O as OrderDiscountResult, P as OrderDiscountType, aY as PlusMemberContext, aX as PlusMemberContextValue, bi as PlusMemberProvider, bh as PlusMemberProviderProps, Y as PriceBasePriceType, Z as PriceDiscountConfig, X as PriceDiscountType, f as RemoveCartCodesInput, R as RemoveCartLinesInput, z as RewardItem, w as RuleCondition, F as RuleType, a3 as SCRIPT_CODE_AMOUNT_KEY, aQ as SearchResult, aP as SearchResultItem, aO as SearchResultType, ag as SelectedOptionsResult, aW as ShippingMethodsContext, aT as SiteInfo, S as SpendMoneyType, T as TieredDiscount, U as UpdateCartAttributesInput, bf as UseAddPlusMemberProductsToCartProps, aG as UseAllBlogsOptions, aA as UseAllCollectionsOptions, aj as UseAllProductsOptions, aI as UseArticleOptions, aM as UseArticlesInBlogOptions, aK as UseArticlesOptions, ba as UseAutoRemovePlusMemberInCartProps, aE as UseBlogOptions, i as UseBuyNowOptions, ay as UseCollectionOptions, aC as UseCollectionsOptions, bl as UseExposureOptions, bp as UseGeoLocationOptions, bc as UseHasPlusMemberInCartProps, bj as UseIntersectionOptions, ap as UsePriceOptions, aq as UsePriceResult, ah as UseProductOptions, al as UseProductsByHandlesOptions, p as UseScriptAutoFreeGiftResult, aR as UseSearchOptions, b0 as UseShippingMethodsOptions, b1 as UseShippingMethodsResult, aU as UseSiteOptions, V as VariantItem, aw as VariantMedia, av as VideoMedia, a6 as atobID, a7 as btoaID, ab as checkAttributesUpdateNeeded, bs as clearGeoLocationCache, _ as currencyCodeMapping, $ as defaultSWRMutationConfiguration, ae as formatFunctionAutoFreeGift, ad as formatScriptAutoFreeGift, br as getCachedGeoLocation, aa as getDiscountEnvAttributeValue, a8 as getMatchedMainProductSubTotal, a5 as getQuery, m as getReferralAttributes, ac as preCheck, a9 as safeParse, a as useAddCartLines, bg as useAddPlusMemberProductsToCart, aH as useAllBlogs, aB as useAllCollections, ak as useAllProducts, e as useApplyCartCodes, aJ as useArticle, aL as useArticles, aN as useArticlesInBlog, bb as useAutoRemovePlusMemberInCart, aF as useBlog, j as useBuyNow, k as useCalcAutoFreeGift, l as useCalcOrderDiscount, n as useCartAttributes, o as useCartItemQuantityLimit, az as useCollection, aD as useCollections, u as useCreateCart, bm as useExposure, bq as useGeoLocation, be as useHasPlusMemberInCart, bk as useIntersection, a$ as usePlusAnnualProductVariant, b9 as usePlusMemberCheckoutCustomAttributes, aZ as usePlusMemberContext, b5 as usePlusMemberDeliveryCodes, b6 as usePlusMemberItemCustomAttributes, a_ as usePlusMonthlyProductVariant, ar as usePrice, ai as useProduct, as as useProductUrl, am as useProductsByHandles, g as useRemoveCartCodes, c as useRemoveCartLines, b4 as useReplaceCartPlusMember, q as useScriptAutoFreeGift, aS as useSearch, af as useSelectedOptions, b3 as useShippingMethodAvailableCheck, b2 as useShippingMethods, aV as useSite, h as useUpdateCartAttributes, b as useUpdateCartLines, r as useUpdateLineCodeAmountAttributes, at as useUpdateVariantQuery, ao as useVariant, ax as useVariantMedia } from '../index-BZ6WbAdZ.js';
1
+ export { A as AddCartLinesInput, d as ApplyCartCodesInput, w as AutoFreeGift, y as AutoFreeGiftConfig, Q as AutoFreeGiftItem, T as AutoFreeGiftList, x as AutoFreeGiftMainProduct, B as BuyNowInput, K as BuyRuleType, a5 as CODE_AMOUNT_KEY, a3 as CUSTOMER_ATTRIBUTE_KEY, a4 as CUSTOMER_SCRIPT_GIFT_KEY, P as CartLineInput, E as Config, C as CreateCartInput, bd as Customer, bc as CustomerOrder, D as DiscountLabel, N as FormattedGift, L as FunctionGiftResult, bs as GeoLocationData, G as GiftProduct, I as GiftProductItem, F as GiftTier, bi as HasPlusMemberInCartResult, az as ImageMedia, bt as LocaleMapping, a7 as MAIN_PRODUCT_CODE, M as MainProductInfo, as as Options, X as OrderBasePriceType, Z as OrderDiscountConfig, O as OrderDiscountResult, W as OrderDiscountType, b1 as PlusMemberContext, b0 as PlusMemberContextValue, bn as PlusMemberProvider, bm as PlusMemberProviderProps, $ as PriceBasePriceType, a0 as PriceDiscountConfig, _ as PriceDiscountType, f as RemoveCartCodesInput, R as RemoveCartLinesInput, H as RewardItem, z as RuleCondition, J as RuleType, a6 as SCRIPT_CODE_AMOUNT_KEY, aV as SearchResult, aU as SearchResultItem, aT as SearchResultType, al as SelectedOptionsResult, a$ as ShippingMethodsContext, aY as SiteInfo, S as SpendMoneyType, Y as TieredDiscount, U as UpdateCartAttributesInput, bk as UseAddPlusMemberProductsToCartProps, aL as UseAllBlogsOptions, aF as UseAllCollectionsOptions, ao as UseAllProductsOptions, aN as UseArticleOptions, aR as UseArticlesInBlogOptions, aP as UseArticlesOptions, bf as UseAutoRemovePlusMemberInCartProps, aJ as UseBlogOptions, i as UseBuyNowOptions, l as UseCalcGiftsFromLinesOptions, m as UseCalcGiftsFromLinesResult, aD as UseCollectionOptions, aH as UseCollectionsOptions, bq as UseExposureOptions, bu as UseGeoLocationOptions, bh as UseHasPlusMemberInCartProps, bo as UseIntersectionOptions, au as UsePriceOptions, av as UsePriceResult, am as UseProductOptions, aq as UseProductsByHandlesOptions, s as UseScriptAutoFreeGiftResult, aW as UseSearchOptions, b5 as UseShippingMethodsOptions, b6 as UseShippingMethodsResult, aZ as UseSiteOptions, V as VariantItem, aB as VariantMedia, aA as VideoMedia, a9 as atobID, aa as btoaID, ag as checkAttributesUpdateNeeded, bx as clearGeoLocationCache, ac as createMockCartFromLines, a1 as currencyCodeMapping, a2 as defaultSWRMutationConfiguration, aj as formatFunctionAutoFreeGift, ai as formatScriptAutoFreeGift, bw as getCachedGeoLocation, af as getDiscountEnvAttributeValue, ad as getMatchedMainProductSubTotal, a8 as getQuery, p as getReferralAttributes, ab as normalizeAddToCartLines, ah as preCheck, ae as safeParse, a as useAddCartLines, bl as useAddPlusMemberProductsToCart, aM as useAllBlogs, aG as useAllCollections, ap as useAllProducts, e as useApplyCartCodes, aO as useArticle, aQ as useArticles, aS as useArticlesInBlog, bg as useAutoRemovePlusMemberInCart, aK as useBlog, j as useBuyNow, k as useCalcAutoFreeGift, n as useCalcGiftsFromLines, o as useCalcOrderDiscount, q as useCartAttributes, r as useCartItemQuantityLimit, aE as useCollection, aI as useCollections, u as useCreateCart, br as useExposure, bv as useGeoLocation, bj as useHasPlusMemberInCart, bp as useIntersection, b4 as usePlusAnnualProductVariant, be as usePlusMemberCheckoutCustomAttributes, b2 as usePlusMemberContext, ba as usePlusMemberDeliveryCodes, bb as usePlusMemberItemCustomAttributes, b3 as usePlusMonthlyProductVariant, aw as usePrice, an as useProduct, ax as useProductUrl, ar as useProductsByHandles, g as useRemoveCartCodes, c as useRemoveCartLines, b9 as useReplaceCartPlusMember, t as useScriptAutoFreeGift, aX as useSearch, ak as useSelectedOptions, b8 as useShippingMethodAvailableCheck, b7 as useShippingMethods, a_ as useSite, h as useUpdateCartAttributes, b as useUpdateCartLines, v as useUpdateLineCodeAmountAttributes, ay as useUpdateVariantQuery, at as useVariant, aC as useVariantMedia } from '../index-aSsTcW2O.js';
2
2
  export { a as AddToCartInput, A as AddToCartLineItem, h as DeliveryCustomData, i as DeliveryData, g as DeliveryOption, D as DeliveryPlusType, M as MailingAddress, 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, u as useAddToCart } from '../types-CICUnw0v.js';
3
3
  import 'swr/mutation';
4
4
  import '@anker-in/shopify-sdk';
@@ -71,6 +71,81 @@ var CODE_AMOUNT_KEY = "_sku_code_money";
71
71
  var SCRIPT_CODE_AMOUNT_KEY = "_code_money";
72
72
  var MAIN_PRODUCT_CODE = ["WS24", "WSTD", "WS7D", "WSCP", "WSPE", "WSPD"];
73
73
 
74
+ // src/hooks/cart/utils/normalize-add-to-cart-lines.ts
75
+ function normalizeAddToCartLines(lines) {
76
+ return lines.filter((line) => line.variant?.id).map((line, index) => {
77
+ const variant = line.variant;
78
+ const product = variant.product;
79
+ const quantity = line.quantity || 1;
80
+ const price = variant.finalPrice?.amount ? Number(variant.finalPrice.amount) : variant.compareAtPrice?.amount ? Number(variant.compareAtPrice.amount) : variant.price?.amount ? Number(variant.price.amount) : 0;
81
+ const subtotalAmount = price * quantity;
82
+ const totalAmount = subtotalAmount;
83
+ return {
84
+ id: `temp-line-${index}-${variant.id}`,
85
+ // Temporary ID for pre-cart lines
86
+ name: product?.title || variant.title || "",
87
+ quantity,
88
+ variantId: variant.id,
89
+ productId: product?.id || variant.id.split("/").slice(0, -2).join("/"),
90
+ totalAmount,
91
+ subtotalAmount,
92
+ discountAllocations: [],
93
+ customAttributes: line.attributes || [],
94
+ variant: {
95
+ id: variant.id,
96
+ price,
97
+ listPrice: variant.compareAtPrice?.amount ? Number(variant.compareAtPrice.amount) : 0,
98
+ sku: variant.sku || "",
99
+ name: variant.title || "",
100
+ image: variant.image ? {
101
+ url: variant.image.url,
102
+ altText: variant.image.altText || void 0
103
+ } : void 0,
104
+ requiresShipping: false,
105
+ // Default value, not available in NormalizedProductVariant
106
+ availableForSale: variant.availableForSale ?? true,
107
+ quantityAvailable: variant.quantityAvailable ?? 0,
108
+ currentlyNotInStock: false,
109
+ // Default value, will be updated when added to cart
110
+ weight: variant.weight,
111
+ metafields: variant.metafields
112
+ },
113
+ product,
114
+ path: product?.handle ? `/products/${product.handle}` : "",
115
+ discounts: [],
116
+ options: variant.selectedOptions?.map((opt) => ({
117
+ name: opt.name,
118
+ value: opt.value
119
+ }))
120
+ };
121
+ });
122
+ }
123
+ function createMockCartFromLines(lines, existingCart) {
124
+ const normalizedLines = normalizeAddToCartLines(lines);
125
+ const subtotalPrice = normalizedLines.reduce((sum, line) => sum + line.subtotalAmount, 0);
126
+ const totalPrice = normalizedLines.reduce((sum, line) => sum + line.totalAmount, 0);
127
+ return {
128
+ id: existingCart?.id || "temp-cart-id",
129
+ customerId: existingCart?.customerId,
130
+ email: existingCart?.email,
131
+ createdAt: existingCart?.createdAt || (/* @__PURE__ */ new Date()).toISOString(),
132
+ currency: existingCart?.currency || { code: "USD" },
133
+ taxesIncluded: existingCart?.taxesIncluded,
134
+ lineItems: normalizedLines,
135
+ totallineItemsDiscount: 0,
136
+ orderDiscounts: 0,
137
+ lineItemsSubtotalPrice: subtotalPrice,
138
+ subtotalPrice,
139
+ totalPrice,
140
+ totalTaxAmount: 0,
141
+ discountCodes: existingCart?.discountCodes || [],
142
+ discountAllocations: [],
143
+ url: existingCart?.url || "",
144
+ ready: true,
145
+ customAttributes: existingCart?.customAttributes
146
+ };
147
+ }
148
+
74
149
  // src/hooks/cart/utils/index.ts
75
150
  var getQuery = () => {
76
151
  const url = typeof window !== "undefined" ? window.location.search : "";
@@ -295,12 +370,18 @@ var formatFunctionAutoFreeGift = ({
295
370
  };
296
371
  return result;
297
372
  };
298
- var useCalcAutoFreeGift = (cart, autoFreeGiftConfig, customer) => {
373
+ var useCalcAutoFreeGift = (cart, autoFreeGiftConfig, customer, lines) => {
299
374
  const tags = react.useMemo(() => customer?.tags || [], [customer?.tags]);
300
375
  const isCustomerLoading = react.useMemo(() => !customer ? true : false, [customer]);
301
376
  const dealsType = "";
302
377
  const { client, locale } = useShopify();
303
378
  const giftProductsCache = react.useRef(null);
379
+ const effectiveCart = react.useMemo(() => {
380
+ if (lines && lines.length > 0) {
381
+ return createMockCartFromLines(lines, cart);
382
+ }
383
+ return cart;
384
+ }, [lines, cart]);
304
385
  const { activeCampaign, subtotal } = react.useMemo(() => {
305
386
  for (const campaign of autoFreeGiftConfig) {
306
387
  const { rule_conditions = [], rule_result } = campaign;
@@ -308,7 +389,7 @@ var useCalcAutoFreeGift = (cart, autoFreeGiftConfig, customer) => {
308
389
  const isPreCheckPassed = preCheck(rule_conditions, tags, []);
309
390
  if (isPreCheckPassed && spend_get_reward) {
310
391
  const matchedSubtotal = getMatchedMainProductSubTotal(
311
- cart,
392
+ effectiveCart,
312
393
  spend_get_reward.main_product?.variant_list?.map((v) => v.variant_id) || [],
313
394
  {
314
395
  spend_money_type: spend_get_reward.main_product?.spend_money_type || 1,
@@ -322,7 +403,7 @@ var useCalcAutoFreeGift = (cart, autoFreeGiftConfig, customer) => {
322
403
  }
323
404
  }
324
405
  return { activeCampaign: null, subtotal: 0 };
325
- }, [autoFreeGiftConfig, cart, tags, dealsType]);
406
+ }, [autoFreeGiftConfig, effectiveCart, tags, dealsType]);
326
407
  const { qualifyingGift, nextTierGoal } = react.useMemo(() => {
327
408
  if (!activeCampaign || !activeCampaign.rule_result?.spend_get_reward?.gift_product) {
328
409
  return { qualifyingGift: null, nextTierGoal: null };
@@ -405,12 +486,19 @@ var useScriptAutoFreeGift = ({
405
486
  campaign,
406
487
  _giveaway,
407
488
  cart,
408
- locale: providedLocale
489
+ locale: providedLocale,
490
+ lines
409
491
  }) => {
410
492
  const { client, locale: contextLocale } = useShopify();
411
493
  const locale = providedLocale || contextLocale;
412
494
  const [points_subscribe, set_points_subscribe] = react.useState(false);
413
495
  const giftProductsCache = react.useRef(null);
496
+ const effectiveCart = react.useMemo(() => {
497
+ if (lines && lines.length > 0) {
498
+ return createMockCartFromLines(lines, cart);
499
+ }
500
+ return cart;
501
+ }, [lines, cart]);
414
502
  react.useEffect(() => {
415
503
  if (locale === "au") {
416
504
  const isPointsSubscribe = Cookies5__default.default.get("points_subscribe");
@@ -432,14 +520,14 @@ var useScriptAutoFreeGift = ({
432
520
  upgrade_multiple2 = 1.2;
433
521
  upgrade_value2 = 40;
434
522
  }
435
- cart?.lineItems?.forEach(({ customAttributes }) => {
523
+ effectiveCart?.lineItems?.forEach(({ customAttributes }) => {
436
524
  customAttributes?.forEach(({ key, value }) => {
437
525
  if (key === "_amount_upgrade_multiple") upgrade_multiple2 = Number(value) || 1;
438
526
  if (key === "_amount_upgrade_value") upgrade_value2 = Number(value) || 0;
439
527
  });
440
528
  });
441
529
  return [upgrade_multiple2, upgrade_value2];
442
- }, [cart?.lineItems, points_subscribe]);
530
+ }, [effectiveCart?.lineItems, points_subscribe]);
443
531
  const breakpoints = react.useMemo(() => {
444
532
  if (!isActivityAvailable) return [];
445
533
  return (campaign?.breakpoints || []).map((item) => ({
@@ -467,7 +555,7 @@ var useScriptAutoFreeGift = ({
467
555
  }, [giftHandles]);
468
556
  const involvedLines = react.useMemo(() => {
469
557
  if (!isActivityAvailable) return [];
470
- return (cart?.lineItems || []).filter((line) => {
558
+ return (effectiveCart?.lineItems || []).filter((line) => {
471
559
  const isNotGift = line?.totalAmount && Number(line.totalAmount) > 0 && line.customAttributes?.every(
472
560
  (item) => item.key !== _giveaway
473
561
  );
@@ -476,7 +564,7 @@ var useScriptAutoFreeGift = ({
476
564
  );
477
565
  return isNotGift && hasCampaignTag;
478
566
  });
479
- }, [cart?.lineItems, isActivityAvailable, _giveaway]);
567
+ }, [effectiveCart?.lineItems, isActivityAvailable, _giveaway]);
480
568
  const involvedSubTotal = react.useMemo(() => {
481
569
  if (!isActivityAvailable) return new Decimal2__default.default(0);
482
570
  return involvedLines.reduce((prev, item) => {
@@ -838,6 +926,7 @@ function useAddToCart({ withTrack = true } = {}, swrOptions) {
838
926
  if (!resultCart) {
839
927
  return void 0;
840
928
  }
929
+ console.log("npm addCartLines resultCart", resultCart);
841
930
  if (resultCart.discountCodes && resultCart.discountCodes.length > 0) {
842
931
  const unapplicableCodes = resultCart.discountCodes.filter((item) => !item.applicable).map((item) => item.code);
843
932
  if (unapplicableCodes.length > 0) {
@@ -1011,6 +1100,60 @@ function useBuyNow({ withTrack = true } = {}, swrOptions) {
1011
1100
  );
1012
1101
  return useSWRMutation__default.default("buy-now", buyNow, swrOptions);
1013
1102
  }
1103
+ function useCalcGiftsFromLines({
1104
+ lines,
1105
+ customer,
1106
+ scriptGiveawayKey = CUSTOMER_SCRIPT_GIFT_KEY
1107
+ }) {
1108
+ const { locale } = useShopify();
1109
+ const { cart, autoFreeGiftConfig, gradientGiftsConfig } = useCartContext();
1110
+ const functionGift = useCalcAutoFreeGift(cart, autoFreeGiftConfig || [], customer, lines);
1111
+ const scriptGift = useScriptAutoFreeGift({
1112
+ campaign: gradientGiftsConfig || null,
1113
+ _giveaway: scriptGiveawayKey,
1114
+ cart,
1115
+ locale,
1116
+ lines
1117
+ });
1118
+ const allGiftLines = react.useMemo(() => {
1119
+ const functionGiftLines = functionGift.qualifyingGift?.itemsToAdd || [];
1120
+ const scriptGiftLines = scriptGift.freeGiftLevel ? scriptGift.freeGiftLevel.giveawayProducts.map((product) => {
1121
+ const giftProduct = scriptGift.giftProductsResult?.find(
1122
+ (p) => p.handle === product.handle
1123
+ );
1124
+ const variant = giftProduct?.variants?.[0];
1125
+ return {
1126
+ variant: {
1127
+ id: variant?.id || "",
1128
+ handle: product.handle,
1129
+ sku: product.sku
1130
+ },
1131
+ quantity: 1,
1132
+ attributes: [
1133
+ {
1134
+ key: scriptGiveawayKey,
1135
+ value: "true"
1136
+ }
1137
+ ]
1138
+ };
1139
+ }).filter((item) => item.variant.id) : [];
1140
+ return [...functionGiftLines, ...scriptGiftLines];
1141
+ }, [
1142
+ functionGift.qualifyingGift,
1143
+ scriptGift.freeGiftLevel,
1144
+ scriptGift.giftProductsResult,
1145
+ scriptGiveawayKey
1146
+ ]);
1147
+ const hasGifts = react.useMemo(() => {
1148
+ return allGiftLines.length > 0;
1149
+ }, [allGiftLines]);
1150
+ return {
1151
+ functionGift,
1152
+ scriptGift,
1153
+ allGiftLines,
1154
+ hasGifts
1155
+ };
1156
+ }
1014
1157
 
1015
1158
  // src/hooks/cart/types/order-discount.ts
1016
1159
  var OrderDiscountType = /* @__PURE__ */ ((OrderDiscountType2) => {
@@ -2832,6 +2975,7 @@ exports.atobID = atobID;
2832
2975
  exports.btoaID = btoaID;
2833
2976
  exports.checkAttributesUpdateNeeded = checkAttributesUpdateNeeded;
2834
2977
  exports.clearGeoLocationCache = clearGeoLocationCache;
2978
+ exports.createMockCartFromLines = createMockCartFromLines;
2835
2979
  exports.currencyCodeMapping = currencyCodeMapping;
2836
2980
  exports.defaultSWRMutationConfiguration = defaultSWRMutationConfiguration;
2837
2981
  exports.formatFunctionAutoFreeGift = formatFunctionAutoFreeGift;
@@ -2841,6 +2985,7 @@ exports.getDiscountEnvAttributeValue = getDiscountEnvAttributeValue;
2841
2985
  exports.getMatchedMainProductSubTotal = getMatchedMainProductSubTotal;
2842
2986
  exports.getQuery = getQuery;
2843
2987
  exports.getReferralAttributes = getReferralAttributes;
2988
+ exports.normalizeAddToCartLines = normalizeAddToCartLines;
2844
2989
  exports.preCheck = preCheck;
2845
2990
  exports.safeParse = safeParse;
2846
2991
  exports.useAddCartLines = useAddCartLines;
@@ -2857,6 +3002,7 @@ exports.useAutoRemovePlusMemberInCart = useAutoRemovePlusMemberInCart;
2857
3002
  exports.useBlog = useBlog;
2858
3003
  exports.useBuyNow = useBuyNow;
2859
3004
  exports.useCalcAutoFreeGift = useCalcAutoFreeGift;
3005
+ exports.useCalcGiftsFromLines = useCalcGiftsFromLines;
2860
3006
  exports.useCalcOrderDiscount = useCalcOrderDiscount;
2861
3007
  exports.useCartAttributes = useCartAttributes;
2862
3008
  exports.useCartItemQuantityLimit = useCartItemQuantityLimit;