@anker-in/shopify-react 0.1.1-beta.2 → 0.1.1-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks/index.d.mts +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.js +155 -9
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +153 -10
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/{index-Bea95u2X.d.mts → index-Utuz9i5x.d.mts} +113 -36
- package/dist/{index-BZ6WbAdZ.d.ts → index-aSsTcW2O.d.ts} +113 -36
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +157 -9
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +155 -10
- package/dist/index.mjs.map +1 -1
- package/dist/provider/index.d.mts +2 -0
- package/dist/provider/index.d.ts +2 -0
- package/dist/provider/index.js +96 -9
- package/dist/provider/index.js.map +1 -1
- package/dist/provider/index.mjs +96 -9
- package/dist/provider/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/hooks/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as AddCartLinesInput, d as ApplyCartCodesInput,
|
|
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';
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { A as AddCartLinesInput, d as ApplyCartCodesInput,
|
|
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';
|
package/dist/hooks/index.js
CHANGED
|
@@ -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
|
-
|
|
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,13 +403,13 @@ var useCalcAutoFreeGift = (cart, autoFreeGiftConfig, customer) => {
|
|
|
322
403
|
}
|
|
323
404
|
}
|
|
324
405
|
return { activeCampaign: null, subtotal: 0 };
|
|
325
|
-
}, [autoFreeGiftConfig,
|
|
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 };
|
|
329
410
|
}
|
|
330
411
|
const giftTiers = activeCampaign.rule_result.spend_get_reward.gift_product;
|
|
331
|
-
const qualifyingTier = [...giftTiers].
|
|
412
|
+
const qualifyingTier = [...giftTiers].sort((a, b) => Number(b.spend_sum_money) - Number(a.spend_sum_money)).find((tier) => subtotal >= Number(tier.spend_sum_money));
|
|
332
413
|
const nextGoal = giftTiers.find((tier) => subtotal < Number(tier.spend_sum_money));
|
|
333
414
|
if (!qualifyingTier) {
|
|
334
415
|
return { qualifyingGift: null, nextTierGoal: nextGoal || 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
|
-
|
|
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
|
-
}, [
|
|
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 (
|
|
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
|
-
}, [
|
|
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;
|