@anker-in/shopify-react 0.1.1-beta.1 → 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.
@@ -101,25 +101,25 @@ var getMatchedMainProductSubTotal = (cartData, variant_list, main_product) => {
101
101
  return acc + (main_product?.spend_money_type === 1 /* ORIGIN_PRICE */ ? Number(line.subtotalAmount) || 0 : Number(line.totalAmount) || 0);
102
102
  }, 0) || 0;
103
103
  };
104
- var getDiscountEnvAttributeValue = (attributes = []) => {
105
- const attr = attributes.find((attr2) => attr2.key === CUSTOMER_ATTRIBUTE_KEY);
106
- return safeParseJson(attr?.value ?? "") ?? {};
107
- };
108
- var isAttributesEqual = (attrs1 = [], attrs2 = []) => {
109
- if (attrs1.length !== attrs2.length) return false;
110
- const sorted1 = [...attrs1].sort((a, b) => a.key.localeCompare(b.key));
111
- const sorted2 = [...attrs2].sort((a, b) => a.key.localeCompare(b.key));
112
- return sorted1.every(
113
- (attr, i) => attr.key === sorted2[i]?.key && attr.value === sorted2[i]?.value
114
- );
115
- };
116
- var safeParseJson = (str) => {
104
+ var safeParse = (str) => {
117
105
  try {
118
106
  return JSON.parse(str);
119
107
  } catch (err) {
120
108
  return {};
121
109
  }
122
110
  };
111
+ var getDiscountEnvAttributeValue = (attributes = []) => {
112
+ const attr = attributes.find((attr2) => attr2.key === CUSTOMER_ATTRIBUTE_KEY);
113
+ return safeParse(attr?.value ?? "") ?? {};
114
+ };
115
+ var checkAttributesUpdateNeeded = (oldAttributes, newAttributes, customAttributesNeedRemove) => {
116
+ return oldAttributes.some((attr) => {
117
+ const newAttr = newAttributes.find((newAttr2) => newAttr2.key === attr.key);
118
+ return newAttr ? newAttr.value !== attr.value : true;
119
+ }) || newAttributes.some((attr) => !oldAttributes.some((oldAttr) => oldAttr.key === attr.key)) || customAttributesNeedRemove.some(
120
+ (removeAttr) => oldAttributes.some((oldAttr) => oldAttr.key === removeAttr.key)
121
+ );
122
+ };
123
123
  var containsAll = (source, requiredItems = []) => {
124
124
  if (!requiredItems?.length) return true;
125
125
  const sourceSet = new Set(source);
@@ -408,6 +408,14 @@ var useScriptAutoFreeGift = ({
408
408
  set_points_subscribe(!!isPointsSubscribe);
409
409
  }
410
410
  }, [locale]);
411
+ const isActivityAvailable = useMemo(() => {
412
+ if (!campaign) return false;
413
+ const query = getQuery();
414
+ const utmCampaign = Cookies5.get("utm_campaign") || query?.utm_campaign;
415
+ if (campaign.activityAvailableQuery && !utmCampaign?.includes(campaign.activityAvailableQuery))
416
+ return false;
417
+ return true;
418
+ }, [campaign]);
411
419
  const [upgrade_multiple, upgrade_value] = useMemo(() => {
412
420
  let upgrade_multiple2 = 1;
413
421
  let upgrade_value2 = 0;
@@ -424,8 +432,8 @@ var useScriptAutoFreeGift = ({
424
432
  return [upgrade_multiple2, upgrade_value2];
425
433
  }, [cart?.lineItems, points_subscribe]);
426
434
  const breakpoints = useMemo(() => {
427
- if (!campaign) return [];
428
- return (campaign.breakpoints || []).map((item) => ({
435
+ if (!isActivityAvailable) return [];
436
+ return (campaign?.breakpoints || []).map((item) => ({
429
437
  breakpoint: new Decimal2(item.breakpoint).minus(new Decimal2(upgrade_value)).dividedBy(new Decimal2(upgrade_multiple)).toFixed(2, Decimal2.ROUND_DOWN),
430
438
  giveawayProducts: item.giveawayProducts || []
431
439
  }));
@@ -449,25 +457,26 @@ var useScriptAutoFreeGift = ({
449
457
  return true;
450
458
  }, [giftHandles]);
451
459
  const involvedLines = useMemo(() => {
452
- if (!campaign) return [];
460
+ if (!isActivityAvailable) return [];
453
461
  return (cart?.lineItems || []).filter((line) => {
454
462
  const isNotGift = line?.totalAmount && Number(line.totalAmount) > 0 && line.customAttributes?.every(
455
463
  (item) => item.key !== _giveaway
456
464
  );
457
465
  const hasCampaignTag = line.product?.tags?.some(
458
- (tag) => campaign.includeTags?.includes(tag.trim()) && line.variant?.availableForSale
466
+ (tag) => campaign?.includeTags?.includes(tag.trim()) && line.variant?.availableForSale
459
467
  );
460
468
  return isNotGift && hasCampaignTag;
461
469
  });
462
- }, [cart?.lineItems, campaign, _giveaway]);
470
+ }, [cart?.lineItems, isActivityAvailable, _giveaway]);
463
471
  const involvedSubTotal = useMemo(() => {
464
- if (!campaign) return new Decimal2(0);
472
+ if (!isActivityAvailable) return new Decimal2(0);
465
473
  return involvedLines.reduce((prev, item) => {
466
- const amount = campaign.useTotalAmount ? item.totalAmount : item.subtotalAmount;
474
+ const amount = campaign?.useTotalAmount ? item.totalAmount : item.subtotalAmount;
467
475
  return new Decimal2(prev).plus(new Decimal2(amount || 0));
468
476
  }, new Decimal2(0));
469
- }, [involvedLines, campaign]);
477
+ }, [involvedLines, isActivityAvailable]);
470
478
  const [freeGiftLevel, nextFreeGiftLevel] = useMemo(() => {
479
+ if (!isActivityAvailable) return [null, null];
471
480
  const sortedLevels = [...breakpoints].sort(
472
481
  (a, b) => Number(b.breakpoint) - Number(a.breakpoint)
473
482
  );
@@ -621,8 +630,12 @@ var trackAddToCartGA = ({
621
630
  }
622
631
  const { variant } = lineItems[0];
623
632
  const currencyCode = variant.product?.price?.currencyCode;
624
- const price = variant.compareAtPrice?.amount ?? (variant.price?.amount || 0);
625
- const totalPrice = lineItems?.reduce((prev, { variant: variant2 }) => prev.plus(variant2?.finalPrice?.amount ?? price), new Decimal2(0)).toNumber();
633
+ const totalPrice = lineItems?.reduce(
634
+ (prev, { variant: variant2 }) => prev.plus(
635
+ variant2?.finalPrice?.amount ?? variant2?.compareAtPrice?.amount ?? variant2?.price?.amount ?? 0
636
+ ),
637
+ new Decimal2(0)
638
+ ).toNumber();
626
639
  gaTrack({
627
640
  event: "ga4Event",
628
641
  event_name: "add_to_cart",
@@ -637,7 +650,7 @@ var trackAddToCartGA = ({
637
650
  item_brand: gtmParams?.brand || "",
638
651
  item_category: variant2?.product?.productType || "",
639
652
  item_variant: variant2?.title || variant2?.title,
640
- price,
653
+ price: variant2?.compareAtPrice?.amount ?? variant2?.price?.amount,
641
654
  quantity: quantity || 1
642
655
  })),
643
656
  ...gtmParams?.ga4Params
@@ -653,8 +666,12 @@ var trackBuyNowGA = ({
653
666
  }
654
667
  const { variant } = lineItems[0];
655
668
  const currencyCode = variant.price?.currencyCode;
656
- const price = variant.compareAtPrice?.amount ?? (variant.price?.amount || 0);
657
- const totalPrice = lineItems?.reduce((prev, { variant: variant2 }) => prev.plus(variant2?.finalPrice?.amount ?? price), new Decimal2(0)).toNumber();
669
+ const totalPrice = lineItems?.reduce(
670
+ (prev, { variant: variant2 }) => prev.plus(
671
+ variant2?.finalPrice?.amount ?? variant2?.compareAtPrice?.amount ?? (variant2?.price?.amount || 0)
672
+ ),
673
+ new Decimal2(0)
674
+ ).toNumber();
658
675
  gaTrack({
659
676
  event: "ga4Event",
660
677
  event_name: "begin_checkout",
@@ -669,7 +686,7 @@ var trackBuyNowGA = ({
669
686
  item_brand: gtmParams?.brand || "",
670
687
  item_category: item.variant?.product?.productType || "",
671
688
  item_variant: item.variant?.title,
672
- price,
689
+ price: item.variant?.compareAtPrice?.amount ?? item.variant?.price?.amount,
673
690
  quantity: item.quantity || 1
674
691
  })),
675
692
  ...gtmParams?.ga4Params
@@ -2490,11 +2507,43 @@ function useAutoRemovePlusMemberInCart({
2490
2507
  removeCartLines2
2491
2508
  ]);
2492
2509
  }
2510
+ function useAddPlusMemberProductsToCart({
2511
+ cart,
2512
+ memberSetting,
2513
+ selectedPlusMemberMode,
2514
+ selectedPlusMemberProduct
2515
+ }) {
2516
+ const { hasMonthlyPlus, hasAnnualPlus } = useHasPlusMemberInCart({
2517
+ cart,
2518
+ memberSetting
2519
+ });
2520
+ const plusMemberProduct = useMemo(() => {
2521
+ if (selectedPlusMemberMode === "free" /* FREE */) {
2522
+ return void 0;
2523
+ }
2524
+ if (selectedPlusMemberMode === "monthly" /* MONTHLY */ && hasMonthlyPlus) {
2525
+ return void 0;
2526
+ }
2527
+ if (selectedPlusMemberMode === "annual" /* ANNUAL */ && hasAnnualPlus) {
2528
+ return void 0;
2529
+ }
2530
+ if (!selectedPlusMemberProduct) {
2531
+ return void 0;
2532
+ }
2533
+ return selectedPlusMemberProduct;
2534
+ }, [
2535
+ selectedPlusMemberMode,
2536
+ selectedPlusMemberProduct?.variant,
2537
+ selectedPlusMemberProduct?.product,
2538
+ hasMonthlyPlus,
2539
+ hasAnnualPlus
2540
+ ]);
2541
+ return plusMemberProduct;
2542
+ }
2493
2543
  var PlusMemberProvider = ({
2494
2544
  variant,
2495
2545
  product,
2496
- shopCommon,
2497
- metafields,
2546
+ memberSetting,
2498
2547
  initialSelectedPlusMemberMode = "free",
2499
2548
  profile,
2500
2549
  locale,
@@ -2514,14 +2563,14 @@ var PlusMemberProvider = ({
2514
2563
  const [deleteMarginBottom, setDeleteMarginBottom] = useState(false);
2515
2564
  const shippingMethodsContext = useShippingMethods({
2516
2565
  variant,
2517
- plusMemberMetafields: metafields,
2566
+ plusMemberMetafields: memberSetting,
2518
2567
  selectedPlusMemberMode});
2519
2568
  const plusMemberHandles = useMemo(() => {
2520
2569
  return [
2521
- metafields?.plus_monthly_product?.handle,
2522
- metafields?.plus_annual_product?.handle
2570
+ memberSetting?.plus_monthly_product?.handle,
2571
+ memberSetting?.plus_annual_product?.handle
2523
2572
  ].filter(Boolean);
2524
- }, [metafields]);
2573
+ }, [memberSetting]);
2525
2574
  const { data: plusMemberProducts = [] } = useProductsByHandles({
2526
2575
  handles: plusMemberHandles
2527
2576
  });
@@ -2529,25 +2578,24 @@ var PlusMemberProvider = ({
2529
2578
  if (selectedPlusMemberMode === "free" /* FREE */) {
2530
2579
  return null;
2531
2580
  }
2532
- const handle = selectedPlusMemberMode === "monthly" /* MONTHLY */ ? metafields?.plus_monthly_product?.handle : metafields?.plus_annual_product?.handle;
2533
- const sku = selectedPlusMemberMode === "monthly" /* MONTHLY */ ? metafields?.plus_monthly_product?.sku : metafields?.plus_annual_product?.sku;
2581
+ const handle = selectedPlusMemberMode === "monthly" /* MONTHLY */ ? memberSetting?.plus_monthly_product?.handle : memberSetting?.plus_annual_product?.handle;
2582
+ const sku = selectedPlusMemberMode === "monthly" /* MONTHLY */ ? memberSetting?.plus_monthly_product?.sku : memberSetting?.plus_annual_product?.sku;
2534
2583
  const product2 = plusMemberProducts?.find((p) => p.handle === handle);
2535
2584
  const variant2 = product2?.variants?.find((v) => v.sku === sku);
2536
2585
  return product2 && variant2 ? { product: product2, variant: variant2 } : null;
2537
- }, [plusMemberProducts, metafields, selectedPlusMemberMode]);
2586
+ }, [plusMemberProducts, memberSetting, selectedPlusMemberMode]);
2538
2587
  return /* @__PURE__ */ jsx(
2539
2588
  PlusMemberContext.Provider,
2540
2589
  {
2541
2590
  value: {
2542
2591
  variant,
2543
- shopCommon,
2544
2592
  zipCode,
2545
2593
  setZipCode,
2546
2594
  allowNextDayDelivery,
2547
2595
  setAllowNextDayDelivery,
2548
2596
  allowThirdDayDelivery,
2549
2597
  setAllowThirdDayDelivery,
2550
- plusMemberMetafields: metafields,
2598
+ plusMemberMetafields: memberSetting,
2551
2599
  selectedPlusMemberMode,
2552
2600
  setSelectedPlusMemberMode,
2553
2601
  showAreaCheckModal,
@@ -2753,6 +2801,6 @@ function clearGeoLocationCache(cacheKey = "geoLocation") {
2753
2801
  }
2754
2802
  }
2755
2803
 
2756
- export { BuyRuleType, CODE_AMOUNT_KEY, CUSTOMER_ATTRIBUTE_KEY, CUSTOMER_SCRIPT_GIFT_KEY, DeliveryPlusType, MAIN_PRODUCT_CODE, OrderBasePriceType, OrderDiscountType, PLUS_MEMBER_TYPE, PlusMemberContext, PlusMemberMode, PlusMemberProvider, PriceBasePriceType, PriceDiscountType, RuleType, SCRIPT_CODE_AMOUNT_KEY, ShippingMethodMode, SpendMoneyType, atobID, btoaID, clearGeoLocationCache, currencyCodeMapping, defaultSWRMutationConfiguration, formatFunctionAutoFreeGift, formatScriptAutoFreeGift, getCachedGeoLocation, getDiscountEnvAttributeValue, getMatchedMainProductSubTotal, getQuery, getReferralAttributes, isAttributesEqual, preCheck, safeParseJson, useAddCartLines, useAddToCart, useAllBlogs, useAllCollections, useAllProducts, useApplyCartCodes, useArticle, useArticles, useArticlesInBlog, useAutoRemovePlusMemberInCart, useBlog, useBuyNow, useCalcAutoFreeGift, useCalcOrderDiscount, useCartAttributes, useCartItemQuantityLimit, useCollection, useCollections, useCreateCart, useExposure, useGeoLocation, useHasPlusMemberInCart, useIntersection, usePlusAnnualProductVariant, usePlusMemberCheckoutCustomAttributes, usePlusMemberContext, usePlusMemberDeliveryCodes, usePlusMemberItemCustomAttributes, usePlusMonthlyProductVariant, usePrice, useProduct, useProductUrl, useProductsByHandles, useRemoveCartCodes, useRemoveCartLines, useReplaceCartPlusMember, useScriptAutoFreeGift, useSearch, useSelectedOptions, useShippingMethodAvailableCheck, useShippingMethods, useSite, useUpdateCartAttributes, useUpdateCartLines, useUpdateLineCodeAmountAttributes, useUpdateVariantQuery, useVariant, useVariantMedia };
2804
+ export { BuyRuleType, CODE_AMOUNT_KEY, CUSTOMER_ATTRIBUTE_KEY, CUSTOMER_SCRIPT_GIFT_KEY, DeliveryPlusType, MAIN_PRODUCT_CODE, OrderBasePriceType, OrderDiscountType, PLUS_MEMBER_TYPE, PlusMemberContext, PlusMemberMode, PlusMemberProvider, PriceBasePriceType, PriceDiscountType, RuleType, SCRIPT_CODE_AMOUNT_KEY, ShippingMethodMode, SpendMoneyType, atobID, btoaID, checkAttributesUpdateNeeded, clearGeoLocationCache, currencyCodeMapping, defaultSWRMutationConfiguration, formatFunctionAutoFreeGift, formatScriptAutoFreeGift, getCachedGeoLocation, getDiscountEnvAttributeValue, getMatchedMainProductSubTotal, getQuery, getReferralAttributes, preCheck, safeParse, useAddCartLines, useAddPlusMemberProductsToCart, useAddToCart, useAllBlogs, useAllCollections, useAllProducts, useApplyCartCodes, useArticle, useArticles, useArticlesInBlog, useAutoRemovePlusMemberInCart, useBlog, useBuyNow, useCalcAutoFreeGift, useCalcOrderDiscount, useCartAttributes, useCartItemQuantityLimit, useCollection, useCollections, useCreateCart, useExposure, useGeoLocation, useHasPlusMemberInCart, useIntersection, usePlusAnnualProductVariant, usePlusMemberCheckoutCustomAttributes, usePlusMemberContext, usePlusMemberDeliveryCodes, usePlusMemberItemCustomAttributes, usePlusMonthlyProductVariant, usePrice, useProduct, useProductUrl, useProductsByHandles, useRemoveCartCodes, useRemoveCartLines, useReplaceCartPlusMember, useScriptAutoFreeGift, useSearch, useSelectedOptions, useShippingMethodAvailableCheck, useShippingMethods, useSite, useUpdateCartAttributes, useUpdateCartLines, useUpdateLineCodeAmountAttributes, useUpdateVariantQuery, useVariant, useVariantMedia };
2757
2805
  //# sourceMappingURL=index.mjs.map
2758
2806
  //# sourceMappingURL=index.mjs.map