@anker-in/shopify-react 0.1.1-beta.1 → 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.
- package/dist/hooks/index.d.mts +1 -1
- package/dist/hooks/index.d.ts +1 -1
- package/dist/hooks/index.js +242 -47
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +237 -46
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/{index-RevQokdZ.d.mts → index-Utuz9i5x.d.mts} +165 -49
- package/dist/{index-CCMIeIUh.d.ts → index-aSsTcW2O.d.ts} +165 -49
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +265 -57
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +260 -56
- 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 +138 -34
- package/dist/provider/index.js.map +1 -1
- package/dist/provider/index.mjs +138 -34
- 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 : "";
|
|
@@ -110,25 +185,25 @@ var getMatchedMainProductSubTotal = (cartData, variant_list, main_product) => {
|
|
|
110
185
|
return acc + (main_product?.spend_money_type === 1 /* ORIGIN_PRICE */ ? Number(line.subtotalAmount) || 0 : Number(line.totalAmount) || 0);
|
|
111
186
|
}, 0) || 0;
|
|
112
187
|
};
|
|
113
|
-
var
|
|
114
|
-
const attr = attributes.find((attr2) => attr2.key === CUSTOMER_ATTRIBUTE_KEY);
|
|
115
|
-
return safeParseJson(attr?.value ?? "") ?? {};
|
|
116
|
-
};
|
|
117
|
-
var isAttributesEqual = (attrs1 = [], attrs2 = []) => {
|
|
118
|
-
if (attrs1.length !== attrs2.length) return false;
|
|
119
|
-
const sorted1 = [...attrs1].sort((a, b) => a.key.localeCompare(b.key));
|
|
120
|
-
const sorted2 = [...attrs2].sort((a, b) => a.key.localeCompare(b.key));
|
|
121
|
-
return sorted1.every(
|
|
122
|
-
(attr, i) => attr.key === sorted2[i]?.key && attr.value === sorted2[i]?.value
|
|
123
|
-
);
|
|
124
|
-
};
|
|
125
|
-
var safeParseJson = (str) => {
|
|
188
|
+
var safeParse = (str) => {
|
|
126
189
|
try {
|
|
127
190
|
return JSON.parse(str);
|
|
128
191
|
} catch (err) {
|
|
129
192
|
return {};
|
|
130
193
|
}
|
|
131
194
|
};
|
|
195
|
+
var getDiscountEnvAttributeValue = (attributes = []) => {
|
|
196
|
+
const attr = attributes.find((attr2) => attr2.key === CUSTOMER_ATTRIBUTE_KEY);
|
|
197
|
+
return safeParse(attr?.value ?? "") ?? {};
|
|
198
|
+
};
|
|
199
|
+
var checkAttributesUpdateNeeded = (oldAttributes, newAttributes, customAttributesNeedRemove) => {
|
|
200
|
+
return oldAttributes.some((attr) => {
|
|
201
|
+
const newAttr = newAttributes.find((newAttr2) => newAttr2.key === attr.key);
|
|
202
|
+
return newAttr ? newAttr.value !== attr.value : true;
|
|
203
|
+
}) || newAttributes.some((attr) => !oldAttributes.some((oldAttr) => oldAttr.key === attr.key)) || customAttributesNeedRemove.some(
|
|
204
|
+
(removeAttr) => oldAttributes.some((oldAttr) => oldAttr.key === removeAttr.key)
|
|
205
|
+
);
|
|
206
|
+
};
|
|
132
207
|
var containsAll = (source, requiredItems = []) => {
|
|
133
208
|
if (!requiredItems?.length) return true;
|
|
134
209
|
const sourceSet = new Set(source);
|
|
@@ -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,7 +403,7 @@ 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 };
|
|
@@ -405,18 +486,33 @@ 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");
|
|
417
505
|
set_points_subscribe(!!isPointsSubscribe);
|
|
418
506
|
}
|
|
419
507
|
}, [locale]);
|
|
508
|
+
const isActivityAvailable = react.useMemo(() => {
|
|
509
|
+
if (!campaign) return false;
|
|
510
|
+
const query = getQuery();
|
|
511
|
+
const utmCampaign = Cookies5__default.default.get("utm_campaign") || query?.utm_campaign;
|
|
512
|
+
if (campaign.activityAvailableQuery && !utmCampaign?.includes(campaign.activityAvailableQuery))
|
|
513
|
+
return false;
|
|
514
|
+
return true;
|
|
515
|
+
}, [campaign]);
|
|
420
516
|
const [upgrade_multiple, upgrade_value] = react.useMemo(() => {
|
|
421
517
|
let upgrade_multiple2 = 1;
|
|
422
518
|
let upgrade_value2 = 0;
|
|
@@ -424,17 +520,17 @@ var useScriptAutoFreeGift = ({
|
|
|
424
520
|
upgrade_multiple2 = 1.2;
|
|
425
521
|
upgrade_value2 = 40;
|
|
426
522
|
}
|
|
427
|
-
|
|
523
|
+
effectiveCart?.lineItems?.forEach(({ customAttributes }) => {
|
|
428
524
|
customAttributes?.forEach(({ key, value }) => {
|
|
429
525
|
if (key === "_amount_upgrade_multiple") upgrade_multiple2 = Number(value) || 1;
|
|
430
526
|
if (key === "_amount_upgrade_value") upgrade_value2 = Number(value) || 0;
|
|
431
527
|
});
|
|
432
528
|
});
|
|
433
529
|
return [upgrade_multiple2, upgrade_value2];
|
|
434
|
-
}, [
|
|
530
|
+
}, [effectiveCart?.lineItems, points_subscribe]);
|
|
435
531
|
const breakpoints = react.useMemo(() => {
|
|
436
|
-
if (!
|
|
437
|
-
return (campaign
|
|
532
|
+
if (!isActivityAvailable) return [];
|
|
533
|
+
return (campaign?.breakpoints || []).map((item) => ({
|
|
438
534
|
breakpoint: new Decimal2__default.default(item.breakpoint).minus(new Decimal2__default.default(upgrade_value)).dividedBy(new Decimal2__default.default(upgrade_multiple)).toFixed(2, Decimal2__default.default.ROUND_DOWN),
|
|
439
535
|
giveawayProducts: item.giveawayProducts || []
|
|
440
536
|
}));
|
|
@@ -458,25 +554,26 @@ var useScriptAutoFreeGift = ({
|
|
|
458
554
|
return true;
|
|
459
555
|
}, [giftHandles]);
|
|
460
556
|
const involvedLines = react.useMemo(() => {
|
|
461
|
-
if (!
|
|
462
|
-
return (
|
|
557
|
+
if (!isActivityAvailable) return [];
|
|
558
|
+
return (effectiveCart?.lineItems || []).filter((line) => {
|
|
463
559
|
const isNotGift = line?.totalAmount && Number(line.totalAmount) > 0 && line.customAttributes?.every(
|
|
464
560
|
(item) => item.key !== _giveaway
|
|
465
561
|
);
|
|
466
562
|
const hasCampaignTag = line.product?.tags?.some(
|
|
467
|
-
(tag) => campaign
|
|
563
|
+
(tag) => campaign?.includeTags?.includes(tag.trim()) && line.variant?.availableForSale
|
|
468
564
|
);
|
|
469
565
|
return isNotGift && hasCampaignTag;
|
|
470
566
|
});
|
|
471
|
-
}, [
|
|
567
|
+
}, [effectiveCart?.lineItems, isActivityAvailable, _giveaway]);
|
|
472
568
|
const involvedSubTotal = react.useMemo(() => {
|
|
473
|
-
if (!
|
|
569
|
+
if (!isActivityAvailable) return new Decimal2__default.default(0);
|
|
474
570
|
return involvedLines.reduce((prev, item) => {
|
|
475
|
-
const amount = campaign
|
|
571
|
+
const amount = campaign?.useTotalAmount ? item.totalAmount : item.subtotalAmount;
|
|
476
572
|
return new Decimal2__default.default(prev).plus(new Decimal2__default.default(amount || 0));
|
|
477
573
|
}, new Decimal2__default.default(0));
|
|
478
|
-
}, [involvedLines,
|
|
574
|
+
}, [involvedLines, isActivityAvailable]);
|
|
479
575
|
const [freeGiftLevel, nextFreeGiftLevel] = react.useMemo(() => {
|
|
576
|
+
if (!isActivityAvailable) return [null, null];
|
|
480
577
|
const sortedLevels = [...breakpoints].sort(
|
|
481
578
|
(a, b) => Number(b.breakpoint) - Number(a.breakpoint)
|
|
482
579
|
);
|
|
@@ -630,8 +727,12 @@ var trackAddToCartGA = ({
|
|
|
630
727
|
}
|
|
631
728
|
const { variant } = lineItems[0];
|
|
632
729
|
const currencyCode = variant.product?.price?.currencyCode;
|
|
633
|
-
const
|
|
634
|
-
|
|
730
|
+
const totalPrice = lineItems?.reduce(
|
|
731
|
+
(prev, { variant: variant2 }) => prev.plus(
|
|
732
|
+
variant2?.finalPrice?.amount ?? variant2?.compareAtPrice?.amount ?? variant2?.price?.amount ?? 0
|
|
733
|
+
),
|
|
734
|
+
new Decimal2__default.default(0)
|
|
735
|
+
).toNumber();
|
|
635
736
|
gaTrack({
|
|
636
737
|
event: "ga4Event",
|
|
637
738
|
event_name: "add_to_cart",
|
|
@@ -646,7 +747,7 @@ var trackAddToCartGA = ({
|
|
|
646
747
|
item_brand: gtmParams?.brand || "",
|
|
647
748
|
item_category: variant2?.product?.productType || "",
|
|
648
749
|
item_variant: variant2?.title || variant2?.title,
|
|
649
|
-
price,
|
|
750
|
+
price: variant2?.compareAtPrice?.amount ?? variant2?.price?.amount,
|
|
650
751
|
quantity: quantity || 1
|
|
651
752
|
})),
|
|
652
753
|
...gtmParams?.ga4Params
|
|
@@ -662,8 +763,12 @@ var trackBuyNowGA = ({
|
|
|
662
763
|
}
|
|
663
764
|
const { variant } = lineItems[0];
|
|
664
765
|
const currencyCode = variant.price?.currencyCode;
|
|
665
|
-
const
|
|
666
|
-
|
|
766
|
+
const totalPrice = lineItems?.reduce(
|
|
767
|
+
(prev, { variant: variant2 }) => prev.plus(
|
|
768
|
+
variant2?.finalPrice?.amount ?? variant2?.compareAtPrice?.amount ?? (variant2?.price?.amount || 0)
|
|
769
|
+
),
|
|
770
|
+
new Decimal2__default.default(0)
|
|
771
|
+
).toNumber();
|
|
667
772
|
gaTrack({
|
|
668
773
|
event: "ga4Event",
|
|
669
774
|
event_name: "begin_checkout",
|
|
@@ -678,7 +783,7 @@ var trackBuyNowGA = ({
|
|
|
678
783
|
item_brand: gtmParams?.brand || "",
|
|
679
784
|
item_category: item.variant?.product?.productType || "",
|
|
680
785
|
item_variant: item.variant?.title,
|
|
681
|
-
price,
|
|
786
|
+
price: item.variant?.compareAtPrice?.amount ?? item.variant?.price?.amount,
|
|
682
787
|
quantity: item.quantity || 1
|
|
683
788
|
})),
|
|
684
789
|
...gtmParams?.ga4Params
|
|
@@ -821,6 +926,7 @@ function useAddToCart({ withTrack = true } = {}, swrOptions) {
|
|
|
821
926
|
if (!resultCart) {
|
|
822
927
|
return void 0;
|
|
823
928
|
}
|
|
929
|
+
console.log("npm addCartLines resultCart", resultCart);
|
|
824
930
|
if (resultCart.discountCodes && resultCart.discountCodes.length > 0) {
|
|
825
931
|
const unapplicableCodes = resultCart.discountCodes.filter((item) => !item.applicable).map((item) => item.code);
|
|
826
932
|
if (unapplicableCodes.length > 0) {
|
|
@@ -994,6 +1100,60 @@ function useBuyNow({ withTrack = true } = {}, swrOptions) {
|
|
|
994
1100
|
);
|
|
995
1101
|
return useSWRMutation__default.default("buy-now", buyNow, swrOptions);
|
|
996
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
|
+
}
|
|
997
1157
|
|
|
998
1158
|
// src/hooks/cart/types/order-discount.ts
|
|
999
1159
|
var OrderDiscountType = /* @__PURE__ */ ((OrderDiscountType2) => {
|
|
@@ -2499,11 +2659,43 @@ function useAutoRemovePlusMemberInCart({
|
|
|
2499
2659
|
removeCartLines2
|
|
2500
2660
|
]);
|
|
2501
2661
|
}
|
|
2662
|
+
function useAddPlusMemberProductsToCart({
|
|
2663
|
+
cart,
|
|
2664
|
+
memberSetting,
|
|
2665
|
+
selectedPlusMemberMode,
|
|
2666
|
+
selectedPlusMemberProduct
|
|
2667
|
+
}) {
|
|
2668
|
+
const { hasMonthlyPlus, hasAnnualPlus } = useHasPlusMemberInCart({
|
|
2669
|
+
cart,
|
|
2670
|
+
memberSetting
|
|
2671
|
+
});
|
|
2672
|
+
const plusMemberProduct = react.useMemo(() => {
|
|
2673
|
+
if (selectedPlusMemberMode === "free" /* FREE */) {
|
|
2674
|
+
return void 0;
|
|
2675
|
+
}
|
|
2676
|
+
if (selectedPlusMemberMode === "monthly" /* MONTHLY */ && hasMonthlyPlus) {
|
|
2677
|
+
return void 0;
|
|
2678
|
+
}
|
|
2679
|
+
if (selectedPlusMemberMode === "annual" /* ANNUAL */ && hasAnnualPlus) {
|
|
2680
|
+
return void 0;
|
|
2681
|
+
}
|
|
2682
|
+
if (!selectedPlusMemberProduct) {
|
|
2683
|
+
return void 0;
|
|
2684
|
+
}
|
|
2685
|
+
return selectedPlusMemberProduct;
|
|
2686
|
+
}, [
|
|
2687
|
+
selectedPlusMemberMode,
|
|
2688
|
+
selectedPlusMemberProduct?.variant,
|
|
2689
|
+
selectedPlusMemberProduct?.product,
|
|
2690
|
+
hasMonthlyPlus,
|
|
2691
|
+
hasAnnualPlus
|
|
2692
|
+
]);
|
|
2693
|
+
return plusMemberProduct;
|
|
2694
|
+
}
|
|
2502
2695
|
var PlusMemberProvider = ({
|
|
2503
2696
|
variant,
|
|
2504
2697
|
product,
|
|
2505
|
-
|
|
2506
|
-
metafields,
|
|
2698
|
+
memberSetting,
|
|
2507
2699
|
initialSelectedPlusMemberMode = "free",
|
|
2508
2700
|
profile,
|
|
2509
2701
|
locale,
|
|
@@ -2523,14 +2715,14 @@ var PlusMemberProvider = ({
|
|
|
2523
2715
|
const [deleteMarginBottom, setDeleteMarginBottom] = react.useState(false);
|
|
2524
2716
|
const shippingMethodsContext = useShippingMethods({
|
|
2525
2717
|
variant,
|
|
2526
|
-
plusMemberMetafields:
|
|
2718
|
+
plusMemberMetafields: memberSetting,
|
|
2527
2719
|
selectedPlusMemberMode});
|
|
2528
2720
|
const plusMemberHandles = react.useMemo(() => {
|
|
2529
2721
|
return [
|
|
2530
|
-
|
|
2531
|
-
|
|
2722
|
+
memberSetting?.plus_monthly_product?.handle,
|
|
2723
|
+
memberSetting?.plus_annual_product?.handle
|
|
2532
2724
|
].filter(Boolean);
|
|
2533
|
-
}, [
|
|
2725
|
+
}, [memberSetting]);
|
|
2534
2726
|
const { data: plusMemberProducts = [] } = useProductsByHandles({
|
|
2535
2727
|
handles: plusMemberHandles
|
|
2536
2728
|
});
|
|
@@ -2538,25 +2730,24 @@ var PlusMemberProvider = ({
|
|
|
2538
2730
|
if (selectedPlusMemberMode === "free" /* FREE */) {
|
|
2539
2731
|
return null;
|
|
2540
2732
|
}
|
|
2541
|
-
const handle = selectedPlusMemberMode === "monthly" /* MONTHLY */ ?
|
|
2542
|
-
const sku = selectedPlusMemberMode === "monthly" /* MONTHLY */ ?
|
|
2733
|
+
const handle = selectedPlusMemberMode === "monthly" /* MONTHLY */ ? memberSetting?.plus_monthly_product?.handle : memberSetting?.plus_annual_product?.handle;
|
|
2734
|
+
const sku = selectedPlusMemberMode === "monthly" /* MONTHLY */ ? memberSetting?.plus_monthly_product?.sku : memberSetting?.plus_annual_product?.sku;
|
|
2543
2735
|
const product2 = plusMemberProducts?.find((p) => p.handle === handle);
|
|
2544
2736
|
const variant2 = product2?.variants?.find((v) => v.sku === sku);
|
|
2545
2737
|
return product2 && variant2 ? { product: product2, variant: variant2 } : null;
|
|
2546
|
-
}, [plusMemberProducts,
|
|
2738
|
+
}, [plusMemberProducts, memberSetting, selectedPlusMemberMode]);
|
|
2547
2739
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2548
2740
|
PlusMemberContext.Provider,
|
|
2549
2741
|
{
|
|
2550
2742
|
value: {
|
|
2551
2743
|
variant,
|
|
2552
|
-
shopCommon,
|
|
2553
2744
|
zipCode,
|
|
2554
2745
|
setZipCode,
|
|
2555
2746
|
allowNextDayDelivery,
|
|
2556
2747
|
setAllowNextDayDelivery,
|
|
2557
2748
|
allowThirdDayDelivery,
|
|
2558
2749
|
setAllowThirdDayDelivery,
|
|
2559
|
-
plusMemberMetafields:
|
|
2750
|
+
plusMemberMetafields: memberSetting,
|
|
2560
2751
|
selectedPlusMemberMode,
|
|
2561
2752
|
setSelectedPlusMemberMode,
|
|
2562
2753
|
showAreaCheckModal,
|
|
@@ -2782,7 +2973,9 @@ exports.ShippingMethodMode = ShippingMethodMode;
|
|
|
2782
2973
|
exports.SpendMoneyType = SpendMoneyType;
|
|
2783
2974
|
exports.atobID = atobID;
|
|
2784
2975
|
exports.btoaID = btoaID;
|
|
2976
|
+
exports.checkAttributesUpdateNeeded = checkAttributesUpdateNeeded;
|
|
2785
2977
|
exports.clearGeoLocationCache = clearGeoLocationCache;
|
|
2978
|
+
exports.createMockCartFromLines = createMockCartFromLines;
|
|
2786
2979
|
exports.currencyCodeMapping = currencyCodeMapping;
|
|
2787
2980
|
exports.defaultSWRMutationConfiguration = defaultSWRMutationConfiguration;
|
|
2788
2981
|
exports.formatFunctionAutoFreeGift = formatFunctionAutoFreeGift;
|
|
@@ -2792,10 +2985,11 @@ exports.getDiscountEnvAttributeValue = getDiscountEnvAttributeValue;
|
|
|
2792
2985
|
exports.getMatchedMainProductSubTotal = getMatchedMainProductSubTotal;
|
|
2793
2986
|
exports.getQuery = getQuery;
|
|
2794
2987
|
exports.getReferralAttributes = getReferralAttributes;
|
|
2795
|
-
exports.
|
|
2988
|
+
exports.normalizeAddToCartLines = normalizeAddToCartLines;
|
|
2796
2989
|
exports.preCheck = preCheck;
|
|
2797
|
-
exports.
|
|
2990
|
+
exports.safeParse = safeParse;
|
|
2798
2991
|
exports.useAddCartLines = useAddCartLines;
|
|
2992
|
+
exports.useAddPlusMemberProductsToCart = useAddPlusMemberProductsToCart;
|
|
2799
2993
|
exports.useAddToCart = useAddToCart;
|
|
2800
2994
|
exports.useAllBlogs = useAllBlogs;
|
|
2801
2995
|
exports.useAllCollections = useAllCollections;
|
|
@@ -2808,6 +3002,7 @@ exports.useAutoRemovePlusMemberInCart = useAutoRemovePlusMemberInCart;
|
|
|
2808
3002
|
exports.useBlog = useBlog;
|
|
2809
3003
|
exports.useBuyNow = useBuyNow;
|
|
2810
3004
|
exports.useCalcAutoFreeGift = useCalcAutoFreeGift;
|
|
3005
|
+
exports.useCalcGiftsFromLines = useCalcGiftsFromLines;
|
|
2811
3006
|
exports.useCalcOrderDiscount = useCalcOrderDiscount;
|
|
2812
3007
|
exports.useCartAttributes = useCartAttributes;
|
|
2813
3008
|
exports.useCartItemQuantityLimit = useCartItemQuantityLimit;
|