@anker-in/shopify-react 0.1.1-beta.0 → 0.1.1-beta.2
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 +2 -2
- package/dist/hooks/index.d.ts +2 -2
- package/dist/hooks/index.js +116 -110
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/index.mjs +114 -109
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/{index-BUWkkUdh.d.ts → index-BZ6WbAdZ.d.ts} +56 -103
- package/dist/{index-DenyuVGJ.d.mts → index-Bea95u2X.d.mts} +56 -103
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +139 -121
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +137 -120
- package/dist/index.mjs.map +1 -1
- package/dist/provider/index.d.mts +2 -1
- package/dist/provider/index.d.ts +2 -1
- package/dist/provider/index.js +44 -27
- package/dist/provider/index.js.map +1 -1
- package/dist/provider/index.mjs +44 -27
- package/dist/provider/index.mjs.map +1 -1
- package/dist/{types-CMA6_FML.d.mts → types-CICUnw0v.d.mts} +85 -76
- package/dist/{types-CMA6_FML.d.ts → types-CICUnw0v.d.ts} +85 -76
- package/package.json +5 -5
package/dist/hooks/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { A as AddCartLinesInput,
|
|
2
|
-
export {
|
|
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';
|
|
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';
|
|
5
5
|
import 'decimal.js';
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { A as AddCartLinesInput,
|
|
2
|
-
export {
|
|
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';
|
|
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';
|
|
5
5
|
import 'decimal.js';
|
package/dist/hooks/index.js
CHANGED
|
@@ -110,25 +110,25 @@ var getMatchedMainProductSubTotal = (cartData, variant_list, main_product) => {
|
|
|
110
110
|
return acc + (main_product?.spend_money_type === 1 /* ORIGIN_PRICE */ ? Number(line.subtotalAmount) || 0 : Number(line.totalAmount) || 0);
|
|
111
111
|
}, 0) || 0;
|
|
112
112
|
};
|
|
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) => {
|
|
113
|
+
var safeParse = (str) => {
|
|
126
114
|
try {
|
|
127
115
|
return JSON.parse(str);
|
|
128
116
|
} catch (err) {
|
|
129
117
|
return {};
|
|
130
118
|
}
|
|
131
119
|
};
|
|
120
|
+
var getDiscountEnvAttributeValue = (attributes = []) => {
|
|
121
|
+
const attr = attributes.find((attr2) => attr2.key === CUSTOMER_ATTRIBUTE_KEY);
|
|
122
|
+
return safeParse(attr?.value ?? "") ?? {};
|
|
123
|
+
};
|
|
124
|
+
var checkAttributesUpdateNeeded = (oldAttributes, newAttributes, customAttributesNeedRemove) => {
|
|
125
|
+
return oldAttributes.some((attr) => {
|
|
126
|
+
const newAttr = newAttributes.find((newAttr2) => newAttr2.key === attr.key);
|
|
127
|
+
return newAttr ? newAttr.value !== attr.value : true;
|
|
128
|
+
}) || newAttributes.some((attr) => !oldAttributes.some((oldAttr) => oldAttr.key === attr.key)) || customAttributesNeedRemove.some(
|
|
129
|
+
(removeAttr) => oldAttributes.some((oldAttr) => oldAttr.key === removeAttr.key)
|
|
130
|
+
);
|
|
131
|
+
};
|
|
132
132
|
var containsAll = (source, requiredItems = []) => {
|
|
133
133
|
if (!requiredItems?.length) return true;
|
|
134
134
|
const sourceSet = new Set(source);
|
|
@@ -417,6 +417,14 @@ var useScriptAutoFreeGift = ({
|
|
|
417
417
|
set_points_subscribe(!!isPointsSubscribe);
|
|
418
418
|
}
|
|
419
419
|
}, [locale]);
|
|
420
|
+
const isActivityAvailable = react.useMemo(() => {
|
|
421
|
+
if (!campaign) return false;
|
|
422
|
+
const query = getQuery();
|
|
423
|
+
const utmCampaign = Cookies5__default.default.get("utm_campaign") || query?.utm_campaign;
|
|
424
|
+
if (campaign.activityAvailableQuery && !utmCampaign?.includes(campaign.activityAvailableQuery))
|
|
425
|
+
return false;
|
|
426
|
+
return true;
|
|
427
|
+
}, [campaign]);
|
|
420
428
|
const [upgrade_multiple, upgrade_value] = react.useMemo(() => {
|
|
421
429
|
let upgrade_multiple2 = 1;
|
|
422
430
|
let upgrade_value2 = 0;
|
|
@@ -433,8 +441,8 @@ var useScriptAutoFreeGift = ({
|
|
|
433
441
|
return [upgrade_multiple2, upgrade_value2];
|
|
434
442
|
}, [cart?.lineItems, points_subscribe]);
|
|
435
443
|
const breakpoints = react.useMemo(() => {
|
|
436
|
-
if (!
|
|
437
|
-
return (campaign
|
|
444
|
+
if (!isActivityAvailable) return [];
|
|
445
|
+
return (campaign?.breakpoints || []).map((item) => ({
|
|
438
446
|
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
447
|
giveawayProducts: item.giveawayProducts || []
|
|
440
448
|
}));
|
|
@@ -458,25 +466,26 @@ var useScriptAutoFreeGift = ({
|
|
|
458
466
|
return true;
|
|
459
467
|
}, [giftHandles]);
|
|
460
468
|
const involvedLines = react.useMemo(() => {
|
|
461
|
-
if (!
|
|
469
|
+
if (!isActivityAvailable) return [];
|
|
462
470
|
return (cart?.lineItems || []).filter((line) => {
|
|
463
471
|
const isNotGift = line?.totalAmount && Number(line.totalAmount) > 0 && line.customAttributes?.every(
|
|
464
472
|
(item) => item.key !== _giveaway
|
|
465
473
|
);
|
|
466
474
|
const hasCampaignTag = line.product?.tags?.some(
|
|
467
|
-
(tag) => campaign
|
|
475
|
+
(tag) => campaign?.includeTags?.includes(tag.trim()) && line.variant?.availableForSale
|
|
468
476
|
);
|
|
469
477
|
return isNotGift && hasCampaignTag;
|
|
470
478
|
});
|
|
471
|
-
}, [cart?.lineItems,
|
|
479
|
+
}, [cart?.lineItems, isActivityAvailable, _giveaway]);
|
|
472
480
|
const involvedSubTotal = react.useMemo(() => {
|
|
473
|
-
if (!
|
|
481
|
+
if (!isActivityAvailable) return new Decimal2__default.default(0);
|
|
474
482
|
return involvedLines.reduce((prev, item) => {
|
|
475
|
-
const amount = campaign
|
|
483
|
+
const amount = campaign?.useTotalAmount ? item.totalAmount : item.subtotalAmount;
|
|
476
484
|
return new Decimal2__default.default(prev).plus(new Decimal2__default.default(amount || 0));
|
|
477
485
|
}, new Decimal2__default.default(0));
|
|
478
|
-
}, [involvedLines,
|
|
486
|
+
}, [involvedLines, isActivityAvailable]);
|
|
479
487
|
const [freeGiftLevel, nextFreeGiftLevel] = react.useMemo(() => {
|
|
488
|
+
if (!isActivityAvailable) return [null, null];
|
|
480
489
|
const sortedLevels = [...breakpoints].sort(
|
|
481
490
|
(a, b) => Number(b.breakpoint) - Number(a.breakpoint)
|
|
482
491
|
);
|
|
@@ -606,8 +615,6 @@ function useAddCartLines(options) {
|
|
|
606
615
|
);
|
|
607
616
|
return useSWRMutation__default.default("add-cart-lines", addLines, options);
|
|
608
617
|
}
|
|
609
|
-
|
|
610
|
-
// src/tracking/ga.ts
|
|
611
618
|
var gaTrack = (data) => {
|
|
612
619
|
if (typeof window === "undefined") {
|
|
613
620
|
return;
|
|
@@ -625,18 +632,19 @@ var gaTrack = (data) => {
|
|
|
625
632
|
};
|
|
626
633
|
var trackAddToCartGA = ({
|
|
627
634
|
lineItems = [],
|
|
628
|
-
gtmParams = {}
|
|
629
|
-
brand
|
|
635
|
+
gtmParams = {}
|
|
630
636
|
}) => {
|
|
631
637
|
if (!lineItems.length || !lineItems[0]?.variant) {
|
|
632
638
|
return;
|
|
633
639
|
}
|
|
634
640
|
const { variant } = lineItems[0];
|
|
635
|
-
const currencyCode = variant?.price?.currencyCode;
|
|
636
|
-
const totalPrice = lineItems
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
641
|
+
const currencyCode = variant.product?.price?.currencyCode;
|
|
642
|
+
const totalPrice = lineItems?.reduce(
|
|
643
|
+
(prev, { variant: variant2 }) => prev.plus(
|
|
644
|
+
variant2?.finalPrice?.amount ?? variant2?.compareAtPrice?.amount ?? variant2?.price?.amount ?? 0
|
|
645
|
+
),
|
|
646
|
+
new Decimal2__default.default(0)
|
|
647
|
+
).toNumber();
|
|
640
648
|
gaTrack({
|
|
641
649
|
event: "ga4Event",
|
|
642
650
|
event_name: "add_to_cart",
|
|
@@ -647,11 +655,11 @@ var trackAddToCartGA = ({
|
|
|
647
655
|
position: gtmParams?.position || "",
|
|
648
656
|
items: lineItems.map(({ variant: variant2, quantity }) => ({
|
|
649
657
|
item_id: variant2?.sku,
|
|
650
|
-
item_name: variant2?.product?.title || variant2?.product?.
|
|
651
|
-
item_brand:
|
|
658
|
+
item_name: variant2?.product?.title || variant2?.product?.title,
|
|
659
|
+
item_brand: gtmParams?.brand || "",
|
|
652
660
|
item_category: variant2?.product?.productType || "",
|
|
653
|
-
item_variant: variant2?.title || variant2?.
|
|
654
|
-
price: variant2?.
|
|
661
|
+
item_variant: variant2?.title || variant2?.title,
|
|
662
|
+
price: variant2?.compareAtPrice?.amount ?? variant2?.price?.amount,
|
|
655
663
|
quantity: quantity || 1
|
|
656
664
|
})),
|
|
657
665
|
...gtmParams?.ga4Params
|
|
@@ -660,19 +668,19 @@ var trackAddToCartGA = ({
|
|
|
660
668
|
};
|
|
661
669
|
var trackBuyNowGA = ({
|
|
662
670
|
lineItems = [],
|
|
663
|
-
gtmParams = {}
|
|
664
|
-
brand
|
|
671
|
+
gtmParams = {}
|
|
665
672
|
}) => {
|
|
666
673
|
if (!lineItems.length || !lineItems[0]?.variant) {
|
|
667
674
|
return;
|
|
668
675
|
}
|
|
669
676
|
const { variant } = lineItems[0];
|
|
670
677
|
const currencyCode = variant.price?.currencyCode;
|
|
671
|
-
const totalPrice = lineItems
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
678
|
+
const totalPrice = lineItems?.reduce(
|
|
679
|
+
(prev, { variant: variant2 }) => prev.plus(
|
|
680
|
+
variant2?.finalPrice?.amount ?? variant2?.compareAtPrice?.amount ?? (variant2?.price?.amount || 0)
|
|
681
|
+
),
|
|
682
|
+
new Decimal2__default.default(0)
|
|
683
|
+
).toNumber();
|
|
676
684
|
gaTrack({
|
|
677
685
|
event: "ga4Event",
|
|
678
686
|
event_name: "begin_checkout",
|
|
@@ -684,10 +692,10 @@ var trackBuyNowGA = ({
|
|
|
684
692
|
items: lineItems.map((item) => ({
|
|
685
693
|
item_id: item.variant?.sku,
|
|
686
694
|
item_name: item.variant?.product?.title || item.variant?.title,
|
|
687
|
-
item_brand:
|
|
695
|
+
item_brand: gtmParams?.brand || "",
|
|
688
696
|
item_category: item.variant?.product?.productType || "",
|
|
689
697
|
item_variant: item.variant?.title,
|
|
690
|
-
price: item.
|
|
698
|
+
price: item.variant?.compareAtPrice?.amount ?? item.variant?.price?.amount,
|
|
691
699
|
quantity: item.quantity || 1
|
|
692
700
|
})),
|
|
693
701
|
...gtmParams?.ga4Params
|
|
@@ -701,10 +709,10 @@ var trackAddToCartFBQ = ({ lineItems = [] }) => {
|
|
|
701
709
|
return;
|
|
702
710
|
}
|
|
703
711
|
if (lineItems.length && lineItems[0]?.variant) {
|
|
704
|
-
const { variant, quantity
|
|
712
|
+
const { variant, quantity } = lineItems[0];
|
|
705
713
|
try {
|
|
706
714
|
window.fbq("track", "AddToCart", {
|
|
707
|
-
value:
|
|
715
|
+
value: variant?.compareAtPrice?.amount ?? (variant?.price?.amount || variant?.price || 0),
|
|
708
716
|
num_items: quantity,
|
|
709
717
|
currency: variant?.price?.currencyCode,
|
|
710
718
|
content_name: variant?.product?.title,
|
|
@@ -791,9 +799,9 @@ function useRemoveCartCodes(options) {
|
|
|
791
799
|
}
|
|
792
800
|
|
|
793
801
|
// src/hooks/cart/use-add-to-cart.ts
|
|
794
|
-
function useAddToCart({ withTrack = true
|
|
795
|
-
const { client, locale, cartCookieAdapter, userAdapter } = useShopify();
|
|
796
|
-
const {
|
|
802
|
+
function useAddToCart({ withTrack = true } = {}, swrOptions) {
|
|
803
|
+
const { client, config, locale, cartCookieAdapter, userAdapter } = useShopify();
|
|
804
|
+
const { cart } = useCartContext();
|
|
797
805
|
const { trigger: applyCartCodes } = useApplyCartCodes();
|
|
798
806
|
const { trigger: removeInvalidCodes } = useRemoveCartCodes();
|
|
799
807
|
const { trigger: addCartLines2 } = useAddCartLines();
|
|
@@ -815,7 +823,8 @@ function useAddToCart({ withTrack = true, brand } = {}, swrOptions) {
|
|
|
815
823
|
const lines = lineItems.map((item) => ({
|
|
816
824
|
merchandiseId: item.variant?.id || "",
|
|
817
825
|
quantity: item.quantity || 1,
|
|
818
|
-
attributes: item.attributes
|
|
826
|
+
attributes: item.attributes,
|
|
827
|
+
sellingPlanId: item.sellingPlanId
|
|
819
828
|
})).filter((item) => item.merchandiseId && item.quantity);
|
|
820
829
|
if (lines.length === 0) {
|
|
821
830
|
return;
|
|
@@ -850,34 +859,16 @@ function useAddToCart({ withTrack = true, brand } = {}, swrOptions) {
|
|
|
850
859
|
discountCodes
|
|
851
860
|
});
|
|
852
861
|
}
|
|
853
|
-
if (withTrack
|
|
854
|
-
const trackingLineItems = resultCart.lineItems.map((line) => ({
|
|
855
|
-
variant: {
|
|
856
|
-
id: line.variant.id,
|
|
857
|
-
sku: line.variant.sku || "",
|
|
858
|
-
title: line.variant.name,
|
|
859
|
-
price: {
|
|
860
|
-
amount: String(line.variant.price),
|
|
861
|
-
currencyCode: resultCart.currency.code
|
|
862
|
-
},
|
|
863
|
-
product: line.product ? {
|
|
864
|
-
title: line.product.title || line.name,
|
|
865
|
-
productType: line.product.productType,
|
|
866
|
-
vendor: line.product.vendor
|
|
867
|
-
} : void 0
|
|
868
|
-
},
|
|
869
|
-
quantity: line.quantity
|
|
870
|
-
}));
|
|
862
|
+
if (withTrack) {
|
|
871
863
|
trackAddToCartGA({
|
|
872
|
-
lineItems
|
|
873
|
-
gtmParams: { ...gtmParams, brand }
|
|
874
|
-
brand
|
|
864
|
+
lineItems,
|
|
865
|
+
gtmParams: { ...gtmParams, brand: config.getBrand() }
|
|
875
866
|
});
|
|
876
|
-
trackAddToCartFBQ({ lineItems
|
|
867
|
+
trackAddToCartFBQ({ lineItems });
|
|
877
868
|
}
|
|
878
869
|
return resultCart;
|
|
879
870
|
},
|
|
880
|
-
[client, locale, cartCookieAdapter, userAdapter, cart, withTrack
|
|
871
|
+
[client, locale, cartCookieAdapter, userAdapter, cart, withTrack]
|
|
881
872
|
);
|
|
882
873
|
return useSWRMutation__default.default("add-to-cart", addToCart, swrOptions);
|
|
883
874
|
}
|
|
@@ -958,8 +949,8 @@ function useUpdateCartAttributes(mutate, metafieldIdentifiers, options) {
|
|
|
958
949
|
);
|
|
959
950
|
return useSWRMutation__default.default("update-cart-attributes", updateAttributes, options);
|
|
960
951
|
}
|
|
961
|
-
function useBuyNow({ withTrack = true
|
|
962
|
-
const { client, locale, cartCookieAdapter, userAdapter } = useShopify();
|
|
952
|
+
function useBuyNow({ withTrack = true } = {}, swrOptions) {
|
|
953
|
+
const { client, config, locale, cartCookieAdapter, userAdapter } = useShopify();
|
|
963
954
|
const isLoggedIn = userAdapter?.isLoggedIn || false;
|
|
964
955
|
const buyNow = react.useCallback(
|
|
965
956
|
async (_key, { arg }) => {
|
|
@@ -977,9 +968,10 @@ function useBuyNow({ withTrack = true, brand } = {}, swrOptions) {
|
|
|
977
968
|
return;
|
|
978
969
|
}
|
|
979
970
|
const lines = lineItems.map((item) => ({
|
|
980
|
-
merchandiseId: item.variant?.id ||
|
|
971
|
+
merchandiseId: item.variant?.id || "",
|
|
981
972
|
quantity: item.quantity || 1,
|
|
982
|
-
attributes: item.attributes
|
|
973
|
+
attributes: item.attributes,
|
|
974
|
+
sellingPlanId: item.sellingPlanId
|
|
983
975
|
})).filter((item) => item.merchandiseId && item.quantity);
|
|
984
976
|
if (lines.length === 0) {
|
|
985
977
|
return;
|
|
@@ -996,27 +988,9 @@ function useBuyNow({ withTrack = true, brand } = {}, swrOptions) {
|
|
|
996
988
|
throw new Error("Failed to create cart for buy now");
|
|
997
989
|
}
|
|
998
990
|
if (withTrack && resultCart.lineItems) {
|
|
999
|
-
const trackingLineItems = resultCart.lineItems.map((line) => ({
|
|
1000
|
-
variant: {
|
|
1001
|
-
id: line.variantId,
|
|
1002
|
-
sku: line.variant.sku || "",
|
|
1003
|
-
title: line.variant.name,
|
|
1004
|
-
price: {
|
|
1005
|
-
amount: String(line.variant.price),
|
|
1006
|
-
currencyCode: resultCart.currency.code
|
|
1007
|
-
},
|
|
1008
|
-
product: line.product ? {
|
|
1009
|
-
title: line.product.title || line.name,
|
|
1010
|
-
productType: line.product.productType,
|
|
1011
|
-
vendor: line.product.vendor
|
|
1012
|
-
} : void 0
|
|
1013
|
-
},
|
|
1014
|
-
quantity: line.quantity
|
|
1015
|
-
}));
|
|
1016
991
|
trackBuyNowGA({
|
|
1017
|
-
lineItems
|
|
1018
|
-
gtmParams: { ...gtmParams, brand }
|
|
1019
|
-
brand
|
|
992
|
+
lineItems,
|
|
993
|
+
gtmParams: { ...gtmParams, brand: config.getBrand() }
|
|
1020
994
|
});
|
|
1021
995
|
if (fbqTrackConfig) {
|
|
1022
996
|
trackBuyNowFBQ({ trackConfig: fbqTrackConfig });
|
|
@@ -1033,7 +1007,7 @@ function useBuyNow({ withTrack = true, brand } = {}, swrOptions) {
|
|
|
1033
1007
|
}
|
|
1034
1008
|
return resultCart;
|
|
1035
1009
|
},
|
|
1036
|
-
[client, locale, isLoggedIn, cartCookieAdapter, withTrack
|
|
1010
|
+
[client, locale, isLoggedIn, cartCookieAdapter, withTrack]
|
|
1037
1011
|
);
|
|
1038
1012
|
return useSWRMutation__default.default("buy-now", buyNow, swrOptions);
|
|
1039
1013
|
}
|
|
@@ -2542,11 +2516,43 @@ function useAutoRemovePlusMemberInCart({
|
|
|
2542
2516
|
removeCartLines2
|
|
2543
2517
|
]);
|
|
2544
2518
|
}
|
|
2519
|
+
function useAddPlusMemberProductsToCart({
|
|
2520
|
+
cart,
|
|
2521
|
+
memberSetting,
|
|
2522
|
+
selectedPlusMemberMode,
|
|
2523
|
+
selectedPlusMemberProduct
|
|
2524
|
+
}) {
|
|
2525
|
+
const { hasMonthlyPlus, hasAnnualPlus } = useHasPlusMemberInCart({
|
|
2526
|
+
cart,
|
|
2527
|
+
memberSetting
|
|
2528
|
+
});
|
|
2529
|
+
const plusMemberProduct = react.useMemo(() => {
|
|
2530
|
+
if (selectedPlusMemberMode === "free" /* FREE */) {
|
|
2531
|
+
return void 0;
|
|
2532
|
+
}
|
|
2533
|
+
if (selectedPlusMemberMode === "monthly" /* MONTHLY */ && hasMonthlyPlus) {
|
|
2534
|
+
return void 0;
|
|
2535
|
+
}
|
|
2536
|
+
if (selectedPlusMemberMode === "annual" /* ANNUAL */ && hasAnnualPlus) {
|
|
2537
|
+
return void 0;
|
|
2538
|
+
}
|
|
2539
|
+
if (!selectedPlusMemberProduct) {
|
|
2540
|
+
return void 0;
|
|
2541
|
+
}
|
|
2542
|
+
return selectedPlusMemberProduct;
|
|
2543
|
+
}, [
|
|
2544
|
+
selectedPlusMemberMode,
|
|
2545
|
+
selectedPlusMemberProduct?.variant,
|
|
2546
|
+
selectedPlusMemberProduct?.product,
|
|
2547
|
+
hasMonthlyPlus,
|
|
2548
|
+
hasAnnualPlus
|
|
2549
|
+
]);
|
|
2550
|
+
return plusMemberProduct;
|
|
2551
|
+
}
|
|
2545
2552
|
var PlusMemberProvider = ({
|
|
2546
2553
|
variant,
|
|
2547
2554
|
product,
|
|
2548
|
-
|
|
2549
|
-
metafields,
|
|
2555
|
+
memberSetting,
|
|
2550
2556
|
initialSelectedPlusMemberMode = "free",
|
|
2551
2557
|
profile,
|
|
2552
2558
|
locale,
|
|
@@ -2566,14 +2572,14 @@ var PlusMemberProvider = ({
|
|
|
2566
2572
|
const [deleteMarginBottom, setDeleteMarginBottom] = react.useState(false);
|
|
2567
2573
|
const shippingMethodsContext = useShippingMethods({
|
|
2568
2574
|
variant,
|
|
2569
|
-
plusMemberMetafields:
|
|
2575
|
+
plusMemberMetafields: memberSetting,
|
|
2570
2576
|
selectedPlusMemberMode});
|
|
2571
2577
|
const plusMemberHandles = react.useMemo(() => {
|
|
2572
2578
|
return [
|
|
2573
|
-
|
|
2574
|
-
|
|
2579
|
+
memberSetting?.plus_monthly_product?.handle,
|
|
2580
|
+
memberSetting?.plus_annual_product?.handle
|
|
2575
2581
|
].filter(Boolean);
|
|
2576
|
-
}, [
|
|
2582
|
+
}, [memberSetting]);
|
|
2577
2583
|
const { data: plusMemberProducts = [] } = useProductsByHandles({
|
|
2578
2584
|
handles: plusMemberHandles
|
|
2579
2585
|
});
|
|
@@ -2581,25 +2587,24 @@ var PlusMemberProvider = ({
|
|
|
2581
2587
|
if (selectedPlusMemberMode === "free" /* FREE */) {
|
|
2582
2588
|
return null;
|
|
2583
2589
|
}
|
|
2584
|
-
const handle = selectedPlusMemberMode === "monthly" /* MONTHLY */ ?
|
|
2585
|
-
const sku = selectedPlusMemberMode === "monthly" /* MONTHLY */ ?
|
|
2590
|
+
const handle = selectedPlusMemberMode === "monthly" /* MONTHLY */ ? memberSetting?.plus_monthly_product?.handle : memberSetting?.plus_annual_product?.handle;
|
|
2591
|
+
const sku = selectedPlusMemberMode === "monthly" /* MONTHLY */ ? memberSetting?.plus_monthly_product?.sku : memberSetting?.plus_annual_product?.sku;
|
|
2586
2592
|
const product2 = plusMemberProducts?.find((p) => p.handle === handle);
|
|
2587
2593
|
const variant2 = product2?.variants?.find((v) => v.sku === sku);
|
|
2588
2594
|
return product2 && variant2 ? { product: product2, variant: variant2 } : null;
|
|
2589
|
-
}, [plusMemberProducts,
|
|
2595
|
+
}, [plusMemberProducts, memberSetting, selectedPlusMemberMode]);
|
|
2590
2596
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
2591
2597
|
PlusMemberContext.Provider,
|
|
2592
2598
|
{
|
|
2593
2599
|
value: {
|
|
2594
2600
|
variant,
|
|
2595
|
-
shopCommon,
|
|
2596
2601
|
zipCode,
|
|
2597
2602
|
setZipCode,
|
|
2598
2603
|
allowNextDayDelivery,
|
|
2599
2604
|
setAllowNextDayDelivery,
|
|
2600
2605
|
allowThirdDayDelivery,
|
|
2601
2606
|
setAllowThirdDayDelivery,
|
|
2602
|
-
plusMemberMetafields:
|
|
2607
|
+
plusMemberMetafields: memberSetting,
|
|
2603
2608
|
selectedPlusMemberMode,
|
|
2604
2609
|
setSelectedPlusMemberMode,
|
|
2605
2610
|
showAreaCheckModal,
|
|
@@ -2825,6 +2830,7 @@ exports.ShippingMethodMode = ShippingMethodMode;
|
|
|
2825
2830
|
exports.SpendMoneyType = SpendMoneyType;
|
|
2826
2831
|
exports.atobID = atobID;
|
|
2827
2832
|
exports.btoaID = btoaID;
|
|
2833
|
+
exports.checkAttributesUpdateNeeded = checkAttributesUpdateNeeded;
|
|
2828
2834
|
exports.clearGeoLocationCache = clearGeoLocationCache;
|
|
2829
2835
|
exports.currencyCodeMapping = currencyCodeMapping;
|
|
2830
2836
|
exports.defaultSWRMutationConfiguration = defaultSWRMutationConfiguration;
|
|
@@ -2835,10 +2841,10 @@ exports.getDiscountEnvAttributeValue = getDiscountEnvAttributeValue;
|
|
|
2835
2841
|
exports.getMatchedMainProductSubTotal = getMatchedMainProductSubTotal;
|
|
2836
2842
|
exports.getQuery = getQuery;
|
|
2837
2843
|
exports.getReferralAttributes = getReferralAttributes;
|
|
2838
|
-
exports.isAttributesEqual = isAttributesEqual;
|
|
2839
2844
|
exports.preCheck = preCheck;
|
|
2840
|
-
exports.
|
|
2845
|
+
exports.safeParse = safeParse;
|
|
2841
2846
|
exports.useAddCartLines = useAddCartLines;
|
|
2847
|
+
exports.useAddPlusMemberProductsToCart = useAddPlusMemberProductsToCart;
|
|
2842
2848
|
exports.useAddToCart = useAddToCart;
|
|
2843
2849
|
exports.useAllBlogs = useAllBlogs;
|
|
2844
2850
|
exports.useAllCollections = useAllCollections;
|